sketch showing assignment between keys and functions

The accord-commands

The accord-commands are accords or single keys played on the MIDI-instrument which are used to trigger commands like 'record' or 'play'. This feature has particularly been designed for visually impaired people but it may also be of interest for unhindered musicians because it allows to use the sequencer without taking the hands of the keyboard.

The accord-commands are predefined and will now be described. Though CuSE also allows to redefine all of them to meet each user's individual taste, we suggest to use the factory settings in the beginning. When making individual definitions, some side effects have to be considered which will be described further down below.

In general, CuSE interprets all played keys as music. But for the accord-commands the keys have to be assigned functions at the same time. This means, that the keyboard has to be operated in two different modes, a music-mode and a command-mode. The application does not require any special features from the keyboard. Some of them have a number of buttons and sliders which can even signal their state via so-called 'system-exclusive events' of the MIDI-specification.

These keys could be used to switch between music- and command-mode. Some master-keyboards and digital pianos don't have these additional features. So CuSE aims at providing access to all functions only by means of the instrument's claviature.

In order to assign functions to keys there must be a transition between music- and command-mode. As factory preset which switches the sequencer into command-mode, the following dissonance has been chosen:

C#2 D#2 C#3 D#3

In other words, the user has to press the two separately grouped black keys above the middle C, namely C#, D# and the same again one octave higher at the same time. Which key is considered the middle C depends on your keyboard and has to be found out by trail and error.

So try out in advance where the dissonance is located on your keyboard. Therefore, play a previously recorded song. The song should stop if you have pressed the right combination of keys.

Later, you will learn how to change this so-called ESC-sequence which switches the sequencer to command mode. However, when choosing another one, be aware that a coincidently played ESC-sequence will cause confusion, particularly if the musician is not immediately aware of this circumstance.

Another alternative for the ESC-accord (referred to as ESC only from now on) would e.g., be to play the highest and lowest key at the same time. However, this is not suitable as a factory-preset as no assumption can be made about the number of keys of the attached keyboard. Some USB-connected keyboards have a few as two octaves. It also turned out to be useful to choose ESC in the middle of the keyboard near the other keys with assigned commands in order to keep distances short. But most important of all, the sequence should not occur by chance in the kind of music typically played. Musicians in favor of expressionistic music may want to choose C-major as ESC-sequence.

As soon as CuSE has recognized ESC, the sequencer is in command mode. It returns back to music-mode automatically after a command-assigned key has been hit (see topmost graphics for the assignment).

The three most important command-assigned keys are the middle C (denoted with C2 from now on) for 'Stop/Rewind', G2 for 'play' and A#2 for 'record'.

So starting to record is e.g., done by pressing A#2 right after the ESC-sequence. Stopping the recording is also done by invoking ESC. After that, the sequencer is in regular music mode again (no more waiting for commands).

Playing back the song is done by ESC and G2. As is true for recording as well, the played back song can be interrupted at any time by ESC.

Keep in mind that commands invoked via the PC-keyboard can be mixed with commands invoked on the claviature of the instrument.

The keys F#2 and G#2 are used to move the active track up and down. After a couple of iterations, the user may not be aware of the track number anymore so it has to be signaled somehow. We will now explain some basics on how CuSE signals numbers to the user.

CuSE signals numbers acoustically

The basic idea is to signal numbers by repeatedly playing a note, just as is done by some church clocks. In the context of the sequencer, numbers up to 16 are often used for coding MIDI-channels and 16 tracks is also a sufficient amount of tracks in many instances. However, even counting a note twelve times in a row can be annoying. Therefore, CuSE makes use of two notes for a faster coding scheme.

At first, the number of occurrences of the higher tone is used to code the number. So when e.g., changing to track 2, it will be played twice or three times for track 3. However then, the coding is continued with the lower note which stands for a multiple of 4. As a consequence, two deep notes code an eight and the number of higher notes (which never exceed 3) are simply added.


5 is coded as 4+1, so the lower and the higher notes are played once. 6 is coded as 4+2 and 14 is decomposed into 12+2 resp. 3x4 + 2. In order to code 15, we need a maximum of six notes, namely three low and three high notes. On average however, 3 notes are sufficient to code a number < 16.

The chosen coding scheme may be slightly more complicated than a mere repetition of notes. However, the input- and output metaphors of CuSE are optimized for maximum efficiency in case of extensive usage which is also true for the accord-commands. The chosen coding scheme is about the factor of three shorter than the trivial one of the church clock and much easier to count.

The flatter learning curve pays pack in so far as the long-term usage of CuSE will be more convenient.

Entering numbers via the claviature

In command-mode, pressing D3 allows to set the MIDI-play channel on which all events will be played back, no matter on which channel they have been recorded.

In this case, after played ESC and D3, the actual number of the MIDI-channel has to be set. This is done in a similar way as numbers were played back. The channel number has to be decomposed into a multiple of 4 and the rest. For example, channel 9 has to be decomposed into 2x4+1. Number 0-3 are assign as follows:

0: G3
1: A3
2: B3
3: C4

The multiples of 4 are assigned to

0x4: C3
1x4: D3
2x4: E3
3x4: F3

As a consequence, the above mentioned 9 is coded as 2x4=E3 and 1=A3. So E3 and A3 have to be played together to enter a value of 9. Whenever a number was defined on the claviature, CuSE will play it back for control purpose.

Here comes a complete list of accord-commands defined so far:

C2: stop/rewind
C#2 D#2 C#3 D#3: ESC/pause
F#2: move one track down
G2: play
G#2: move one track up
A#2: record
D3: set midi play channel (followed by number)
E3: set midi rec channel (followed by number)
G3: quantizer
F#3: set punch in
G#3: set punch out
A#3: toggle rec mode
A3: toggle record beep
H3: toggle play beep

Complete list of numbers:

0: C3 G3
1: C3 A3
2: C3 H3
3: C3 C4
4; D3 G3
5: D3 A3
6: D3 H3
7: D3 C4
8: E3 G3
9: E3 A3
10: E3 H3
11: E3 C4
12: F3 G3
13: F3 A3
14: F3 H3
15: F3 C4

Defining custom accord commands

The menu "Accord-CMD" contains all the above mentioned accord-commands. After choosing one particular entry, the sequencer waits for a note or an accord to be played by the user. The note or combination hereof will be fixed by the time all keys have been released. From now on, the particular combination will trigger the chosen command. It is stored after quitting the application automatically and restored after its start.

So in principle, the definition of custom-made accord-commands is straight forward. However, care has to be taken when choosing them. In particular, no accord must consist of a subset of notes defining another command. If this occurred, the smaller subset would always trigger its command first, thus masking the larger subset.

Numbers are an exception to this rule. One or more notes could define a number and a command at the same time as numbers are asked for by the sequencer only in well-defined cases. Then, they will not be confused with commands.