Saving a loop: The user creates a loop using the program, and then selects 'save as' from the file menu. The user is then allowed to type any valid filename, and clicks 'ok'. The file is then saved in the specified location.
Loading a Loop: The user loads a previously created loop into the program by selecting 'open' from the file menu. Then the user is allowed to browse through the directories on the the host computer. The user may type the filename or select it by clicking on the file. Only RandyLoops files are allowed to be opened by the program. Once the file is selected the user sees the loop displayed in RandyLoops.
Configure Midi Options: The user should be able to set-up the Midi play back from the edit menu, 'midi options'. The user should be able to select the Midi Out port or the sound card out. By default the sound card should be selected. However if a midi device is connected to the computer the user should be able to select 'Midi OUT' port as the output.
Using Style Selection: The user is able to select a pre-programmed style from a drop down menu in the GUI. This pre-programmed style is in effect a beat preset, which will load a basic loop, which the user can then modify. No randomness will be injected into this preset loop. By default when a style is loaded the randomness scrollbar will be slided to zero to reflect that there is no randomness in the loop.
Starting a Loop: The user has created some sort of loop using the GUI interface. The user then clicks on the 'play' button in the playback portion of the GUI. Provided that the speakers and sound cards are configured properly the user will be able to hear the output sounds.
Stopping a Loop: The user has created some sort of loop using the GUI interface. This loop has started playback. The user is able to stop the loop at anytime by selecting 'pause' from the playback section of the GUI.
Alter Attributes: The user is able to alter the fundamental properties of the loop in real time. These are availiable as slide bars in the main GUI window. If the loop is currently being played, the program will recalculate the MIDI data on the fly and be able to hear the corresponding output.
Edit Midi Data: The upper portion of the GUI will represent the Midi data in visual form. The user will be able to select individual midi events and click on them and choose either to delete them or alter the property of the event directly. Note that this is different from altering the slide bars as the slide bars contain general information which effects the whole loop, including all the events contained within the loop. Thus is the user injects a level of randomness and doesnt like the result they could select the randomnly generated events one by one and delete them as they wish.
Edit 'undo' feature: The user should be able to undo their last change to the loop. This will be done by selecting 'Undo' from the edit file menu. The program will need to keep track of all the slide bar values and all the midi event data before the user's last action, so that the loop can be returned to its previous state. We will not support multiple undo requests.