Sam MIDI Sequencer
Sam MIDI Sequencer package.
MIDI sequencer software to use the SAMs MIDI / Network port.
Sam Sequencer Version II
Welcome to the world of MIDI sequencing on your SAM Coupé.
SAM Sequencer has been enhanced to offer greater functionality and greater ease of use, enabling music to be developed quicker and more easily. And there are facilities that add real sophistication, enabling greater control during playback and recording.
Such is the flexibility of MIDI that it is just not practical to attempt to include every feature that may be of use. There is also a price to pay in terms of development timescales and memory usage. However, Version II offers a way of extending its functionality through the use of utility programs. Additional utilities to enable standard MIDI format files to be imported and exported are already under development and details of internal data storage formats are provided to enable you to develop your own procedures to manipulate MIDI data.
SAM Sequencer II is a complex product with a powerful and flexible user interface. Although considerable effort has gone into ensuring that operation is problem free it is recognised that some faults may still slip through the net. If you do experience any problems please write to the address stated below giving full details of your problem. Faults can not be rectified without this contact.
Although SAM Sequencer is essentially a utility program it should provide many hours of entertainment and satisfaction. Hopefully you will get as much pleasure from using the software as you will from the music you create with it.
14, Swinscoe Way
2. Getting Started
2.1. Setting up
Before you start to use version II do please take the time to read through the manual, even if you are familiar with version I. There are changes to the way in which the sequencer is used as well as changes to the facilities offered.
To use the sequencer you require the following:
- a SAM Coupé with 256K RAM minimum
- an internal disk drive
- ROM Version 2.1 or higher
- a MIDI keyboard or other MIDI device
- 2 MIDI cables (5 pin DIN, straight through, male-to-male)
Additionally, the SAMco mouse is highly recommended. The sequencer does not use the 1Mb add-on memory module, but does allow access of a second internal disk drive.
To connect your equipment up to use the sequencer first connect the MIDI 'out' port of the Coupé to the MIDI 'in' port on your keyboard using a MIDI cable. Similarly connect the MIDI 'in' port of the Coupé to the MIDI 'out' port on your keyboard.
The MIDI 'out' port of the Coupé is situated toward the side of the case, next to the Break button. The MIDI 'in' port on the Coupé is situated between the MIDI out port and the joystick socket.
WARNING : Some keyboards can be damaged if the MIDI cables are not properly attached. Consult your keyboard manual and SAM Coupé manual if in any doubt.
2.2. Loading the Sequencer
Switch on or reset your Coupé. Insert the sequencer disk and press F9 to boot the system. After a few seconds you will see a loading screen stating the serial number of your copy of the sequencer.
After a few seconds pause you will see the opening screen (see fig. 1 below). If you do not, remove the disk, press the red reset button at the back of the Coupé and try again.
It is import to reset the machine before attempting to load the sequencer - it will not load otherwise. If you do not reset the machine you will receive a message instructing you to do so.
2.3. The User Interface
This section provides an overview of the layout of the main screen and how the user interface works.
The screen is split into 3 main sections. The upper section of the screen consists of the control buttons, song position and tempo setting areas. These are used to select commands, such as copying data between tracks of loading data from disk etc.
The middle section contains a display of track details. The sequencer supports 32 tracks, although only 8 are visible on screen at any time. The scroll bar and up and down arrows at the extreme right of the screen are used to provide access to the other tracks.
The bottom of the screen is an information area and consists of an indicator of the amount of free space remaining, a message panel and a copyright notice.
2.3.1. Selecting functions
The sequencer uses a graphical user interface (or GUI) to access al functions. The mouse, joystick or cursor keys are used to move a pointer around the screen. To select a function or change a data value move the pointer over the button or data area. When the pointer changes into a pointing hand and is positioned over the function you require, click the left button on the mouse or press fire on the joystick. If you are using the cursor keys on the keyboard, press the CNTRL key, which acts like the fire button on the joystick. The selected function will then be activated. If the pointer is an arrow, clicking has no effect.
It may help to think of the screen as a control panel on say a vending machine. To select your choice you simply press the appropriate button. The GUI operates in just the same way, simply point and click.
In addition to moving the pointer to select the required function, it is often possible to use a 'hot-key' from the keyboard. All functions which have a letter highlighted on white paper can be selected by simply pressing the appropriate letter on the keyboard It does not matter where the pointer is on the screen.
When using the joystick or keyboard, note that diagonal movement is possible by pressing both right and down, for example, or by pointing the joystick in the required direction. Moving diagonally is often quicker than moving orthogonally.
Control buttons displayed on the screen can be either on or off. Buttons are off if they are raised, as in fugure 2,and on if depressed, as in figure 3. Areas which hold data values that may be altered are displayed in an indented area, with the exception of the events free indicator, which cannot be altered directly.
When certain operations are in process, such as selecting a track to copy, many of the buttons on the screen are deactivated. When the pointer is moved over deactivated buttons or data areas, it does not change into a pointing hand and clicking on the area will have no effect. The associated hot-keys are also de-activated.
2.3.2. Entering numbers
Numbers can be entered using the pointing device or he keyboard. To select a value which you wish to change, move the pointer to the area in which the value is displayed so that the pointing hand appears and click on it. If a hand does not appear then the value cannot be changed at that time. Some data areas are preceded by a descriptive prompt which may have a hot-key assigned to them.
Once selected, the value will be highlighted on a white background.
If you are using a joystick or keyboard they will then operate as follows :
- Up increases the value either rapidly or by a large interval.
- Right increases the value either slowly or by a small interval.
- Down decreases the value either rapidly or by a large interval.
- Left decreases the value either slowly or by a small interval.
If you are using the mouse, simply move the mouse up or down to change the value. Use large movements for large changes and small movements for small changes.
Using the pointing device is fine when entering values within a small range - such as the MIDI channel number, but can be tedious if entering a large number such as the number of times a track is to repeat. In these cases it is easier to enter the value using the keyboard. To select keyboard entry simply press the return key after the value has been selected (i.e. when the value is highlighted). A small window stating the valid range is then displayed and a cursor (a vertical line) appears at the end of the input field. The value is then entered in similar fashion to string entry described below.
2.3.3. Entering strings
Strings are entered using the keyboard. The field being entered is highlighted on a white (as opposed to light grey) background and a cursor (a vertical line) is displayed representing the current position within the field.
The following keys are used during entry :
- Cursor left and right are used to move through the string currently entered. The cursor moves to indicate the current position.
- The delete key deletes the character to the right of the cursor, unless the cursor is at the end of the field, when the last character is deleted.
- The enter key completes the data entry.
Note: the '*' and '?' symbols cannot be entered into field names. This is to avoid any problems caused by file names that contain these characters.
2.4. Tutorial - Example Recording Session
The best way to become familiar with the interface is to use it. Let's start with a recording session.
Firstly a track must be selected to hold the data to be record. Move the pointer over the select button for track 1. This is located on the left side of the main screen (under the 'Sel' heading) and has the track number printed on it. When the pointer changes to a hand, click on the button which then depresses. As the track is empty it defaults to record mode and MIDI data played on the keyboard will be stored in the track when recording starts. Several tracks can be selected for recording to, before initiating the record function - they will be used one after another as different sequences are built up.
Now position the pointer over the metronome button (shown in figure 3) on the right hand side of the screen and click on it. The button depresses. The metronome is now on and will be displayed during record and playback. If you wish, turn the audible metronome (the loud speaker icon) on in the same way.
You're now ready to start recording on your keyboard. Click on the 'GO' button (or press 'G') - this initiates all recording and playback. During record or playback, the pointer is disabled and the pointing hand will not be displayed. Instead a window is displayed showing the run time menu. This enables various changes to be made during playback. See figure 5.
The metronome(s) start and the current song position also starts to increment in sixteenths of a beat and in whole beats. Now play something on the keyboard - it doesn't matter what you play, or how quickly.
The indicator of the number of events free (at the bottom left of the screen) will decrease as you play - press and hold down a key on the keyboard and the count decreases by one (a note on event will have been sent), release the key and the counter decreases again (a note off event has been sent). The count may decrease while the key is pressed if you have a keyboard that implements after-touch. If the counter does not decrease as you play ensure that the keyboard is correctly connected and that is set to 'MIDI mode' if necessary for your keyboard. If problems persist, consult the Trouble Shooting Guide in Appendix B.
When you've finished recording, use the left or right cursor keys to move the '>' and '<' markers to highlight 'Restart'. Then press the enter key. The window closes and another window opens asking if you wish to keep or reject the data recorded. Click on 'Keep' (or press 'k'). The run time menu will then be redisplayed, the time counter reset and the music you recorded will be replayed.
Note : when you start playback you may not hear anything straight away - the sequencer stores the lead-in time before you start playing. This is displayed under the 'Wait' heading in the track data section. When the number of beats of lead-in have elapsed you will hear the data you've recorded.
If you selected more than one track for recording to you can play a second line over the one just recorded. This will be recorded to the next track selected.
When you've done all the recording you want to, use the cursor keys to highlight 'Stop' and press enter.The run time menu window closes, the 'GO' button pop-ups and the hand reappears. All tracks recorded to will have changed to playback mode automatically.
If you have no tracks selected to record to the sequencer will stop automatically when all selected tracks have been played. The run time menu window will close and the main screen is redisplayed.
If nothing seems to have happened then consult the Trouble Shooting Guide in Appendix B.
Well that's it - recording and playing back using your MIDI keyboard. Of course we've only scratched the surface of what the sequencer can do. Detail of the other functions is covered in the remaining sections of this manual.
2.5. Demo tracks
The system disk contains a few simple demonstration songs that you can load and play. See the section on loading songs for details for more details on how to do this.
2.5.1. The Entertainer
This song is held as 'Entertai' on disk and consists of two tracks. The event editor was used to enter all the notes within this piece.
'Enterlh' is the left hand only, which you could play back through a different MIDI channel using a different MIDI voice setting - try a honky-tonk piano.
2.5.2. Frere Jacques
A very simply track used to demonstrate both quantisation and playing in rounds.
Load the song titled 'Frere Ja'. To play the piece in rounds, copy the track 3 times, so that you have 4 identical tracks. Set the lead-in time for the three copies to '8', '16' and '24' beats respectively. Select each track for playback, and select 'GO'.
The timing may sound a bit ragged. To correct this select the 'Q' button for each track and turn the quantisation value for noe on commands to '2' - i.e. quantise to half a beat.
Playing the tracks now gives crisp synchronisation between all tracks.
If you want to repeat the tune, set the repeat length to 32 beats, the number of repeats as required and turn the repeat function on for each track.
2.5.3. Mozart Clarinet Quintet
Not the whole work! - only the opening 80 bars. This may make Mozart fans wince, but does demonstrate playing many parts simultaneously.
This piece is held as 'Clarinet'. The song comprises five tracks, all prefixed with 'K581', which hold the parts for clarinet, violins 1 & 2, viola and cello.
Assign an appropriate voice to each part and direct them to separate channels if possible.
These parts were also entered using the event editor. Default velocity control commands have been embedded within the track data to enable variation in volume during playback on velocity sensitive keyboards.
2.5.4 System Exclusive Controls Demo
The song 'ISECDemo' holds a familiar tune which utilises Internal System Exclusive Controls to demonstrate the use of embedded loop points, tempo variation and velocity control. Velocity changes will have no effect on keyboards that do not implement this feature.
After playing the song, examine the tracks in the event and graphical editors to see the positioning and value of the system exclusive controls.
3. Sequencer elements
This section provides an overview of MIDI and how data is stored and processed by the sequencer.
More detailed information on internal data storage is provided in Appendix A.
This is a very brief overview of the MIDI interface and data formats. If you are familiar with MIDI and MIDI sequencers, the information stated here will probably be familiar to you.
MIDI stands for Musical Instrument Digital Interface, and is essentially a set of standards covering an electrical connection between two devices and the format of the data that can be exchanged between them.
The electrical connection is in the form of a one-directional 5mA current loop, hence two leads are necessary to support both record and playback between the sequencer and a keyboard.
Data is transferred at 32,500 bits per second, which, as each byte is transmitted as a 'start bit', 8 data bits and a 'stop bit', equates to a theoretical maximum of 3,250 bytes a second. The 'start' and 'stop' bits are required to synchronise the signal and are automatically added and removed by the MIDI interface firmware - we need only be concerned with the 8 data bits that make up each byte.
Music is transferred as commands such as 'note on' (turn a note on) and 'note off' (turn it off again). When a key is pressed on the keyboard a note on command (or 'event') is transmitted. When the key is released a note off event is transmitted. The time between the two events determines the length of the note. When a number of notes are played at the same time a whole series of MIDI events are transmitted, one after another. The MIDI interface is fast enough to handle over 500 notes being turned on and off every second. The time difference between the first and last notes played within a chord will be too small to be detectable.
MIDI events consist of a command byte and up to 2 additional data bytes. The command byte always has bit 7 set, giving all command bytes a value of 128 or greater, and the lower 4 bits define the MIDI channel, in the range 0-15 (i.e. channels 1 to 16).
A channel is analogous to a data stream on the Coupé - just as the Coupé uses one stream to send data to the screen and another for the printer, MIDI uses different channels to separate commands to control different voices on a keyboard, or even to send data to different keyboards.
Bits 6, 5 and 4 in the command byte indicate the command, in the range 0 to 7. A summary of the MIDI commands and their parameters is given in the table below.
|No.||Value||Description||1st Parameter Byte||2nd Parameter Byte|
|0||8n||Note off||Note no. 0-127||Velocity 0-127|
|1||9n||Note on||Note no. 0-127||Velocity 0-127|
|2||An||Polykey pressure||Note no. 0-127||Pressure value|
|3||Bn||Control change||Control number||Control value|
|4||Cn||Program change||Program no. 0-127||None|
|5||Dn||Overall pressure||Pressure value 0-127||None|
|6||En||Pitch wheel||lo-byte of pitch change||hi-byte of pitch change|
|7||Fn||System messages||Various. See below||Various|
All data bytes have bit 7 set to 0 and can therefore hold values between 0 and 127.
System messages apply to all channels and do not therefore hold a channel number in the command byte. Bits 0-4 are used to define the type of system message. A summary is given in table 3.
|No.||Value||Description||1st Byte||2nd Byte||Notes|
|0||F0||System Exclusive||Manufacturer code||Various||Used to enable access to extensions to MIDI and manufacturer specific facilities|
|1||F1||MTC Quarter Frame||Various||Used in synchronisation of devices|
|2||F2||Song Position||Lo-byte||Hi-byte||Specifies position to move to within song|
|3||F3||Song select||Song id||Selects a specific song in memory|
|6||F6||Tune request||None||Instructs device to re-tune|
|7||F7||End sys. ex.||None||Marks end of system exclusive command|
|8||F8||MIDI clock signal||None||Used to synchronise MIDI devices|
|10||FA||Start||None||Instructs a device to start playing|
|11||FB||Continue||None||Instructs device to continue from position reached following a stop|
|12||FC||Stop||None||Instructs device to stop playing|
|14||FE||Active sensing||Used to test communications to devices|
|15||FF||System reset||Resets all internal values in device|
The only system messages recorded by the sequencer are system exclusive messages, but any defined message (with the exception of system reset and MTC Quarter frame) can be sent. You should not send any of the undefined messages, as some of these are used internally by the sequencer.
Few instruments respond to all MIDI commands, most will respond to a subset such as : note on, note off, program change, pitch wheel and system messages such as MIDI clock and system exclusive. Your keyboard manual will give details of all the MIDI commands which are recognised and transmitted by it.
It is not the purpose of this section to give a detail explanation of each MIDI event type, if you require more information there is an ever-increasing number of publications covering MIDI. A brief description of the more commonly used event types follows.
Turns a note on, with a specific velocity (equivalent to how hard a key was pressed). A note event with a velocity of 0 is interpreted by MIDI systems as a not off command. The sequencer automatically converts any such events it receives into note off events with a velocity of 64.
Turns a note off. If a 'note on' event is transmitted without a matching 'note off' then the note will be left droning. The time that elapses between a 'note on' and 'note off' event determines the length of the note. The velocity associated with a note off event is not often handled by keyboards.
This command instructs the keyboard to change the current program, or voice, for the specified channel. The program numbers range from 0 to 127, but are often referred to on keyboards as numbers 1-128. The sequencer also uses numbering from 1-128.
Keyboards that implement more than 128 voices tend to switch in 'banks' of, say, 100 voices at a time. This is achieved through system exclusive events specific to the keyboard type. The keyboard manual should specify the commands required to switch to a particular bank. These can be entered into the sequencer using the event editor and then transmitted to the keyboard.
Many keyboards have a pitch wheel or pitch bend facility, although the resolution varies between keyboards. The pitch wheel command enables a 14 bit value to be used, although it is common for only 8 or 9 bits to be used by a keyboard. The amount by which the pitch on the keyboard actually changes is often configuraable on the keyboard.
System exclusive messages are used for many functionas and have a special format. The first event holds the system exclusive command code (F0 hex), followed by the manufacturer's code. The format of the remaining data is determined by the manufacturer, and consists of a series of bytes, of any length, terminated by an 'End System Exclusive' event, which is a single byte, F7 hex.
There are several system exclusive commands that are so widely used that a standard format has been defined for them. These functions cover sample dumps and data communications handshaking and are not described in detail here.
The MIDI clock command is used to signify the passage of 1/24 of a beat and is used to enable different devices to be synchronised. For example, it is possible to use the sequencer to control a drum machine and to ensure that the drum machine maintains the correct tempo even when this is altered within the sequencer. To do this the sequencer can play a track containing 24 MIDI clock events evenly distributed across a single beat. These can be embedded within a loop. As each MIDI clock event is transmitted the drum machine effectively advances its own internal pointer within the rhythm being played.
3.3. Storing MIDI data
The sequencer stores MIDI events as fixed length 5 byte blocks. The first two bytes define the time (in beats and 256ths of a beat) since the last event occurred, byte 3 holds the MIDI command and bytes 4 and 5 hold the parameter bytes for the command. Any unneeded bytes are set to zero or 255.
System exclusive commands are stored in a similar fashion. Bytes that follow the command are also stored in 5 byte blocks, 2 bytes of timing information and 3 bytes of data. If the system exclusive data does not exactly fill a 3 byte data block, remaining bytes are set to FF hex and are ignored by the sequencer during playback.
The data held by the sequencer is held within 'tracks'.A track is simply a way of identifying a block of data which is to be controlled independently. A track may be named, saved, loaded, repeated, copied etc. as a unit. The sequencer supports 32 tracks. Individual events within a track can only be altered directly within the event editor.
Songs are simply a collection of tracks. You define which tracks are to be part of the song and the tempo of the song. The sequencer can then save, load and play the song, turning the appropriate tracks on and off and setting the tempo automatically.
More details are given in Appendix A.
4. Sequencer Functions
This section provides details of each function available from the main screen, with the exception of the event and graphical editors and the configuration utility which have separate sections.
It is assumed that you are familiar with the method of selecting functions by 'pointing and clicking' with whichever pointing device you are using - mouse, joystick or the cursor keys.
Before each function is discussed in detail, the way in which various information is entered to the sequencer is covered.
4.1.1. Selecting a track
Several functions operate on a track as a whole, such as delete and copy. These functions all use a consistent method of selecting a track.
When a function requires a track (or tracks) to operate on, a window appears at the top of the screen with a message such as 'Select track to delete'. The track is selected by moving the pointer over either the track select button, or the track name area. All other track functions are disabled except the track scroll buttons at the extreme right hand side of the screen.
Click on the track you require and the track name is highlighted. To confirm your choice of track click on the 'OK' button. Alternatively, to cancel the entire operation, click on 'Cancel' (or press the right hand mouse button). You can change your choice of track by clicking again on the selected track (this will de-select it) and then clicking on a different track. It is possible in many cases to 'double click' on the track you require, instead of having to click on 'OK' to confirm your selection. Double clicking simply means quickly clicking twice on the same area. The double click speed can be defined within the configuration utility.
Certain commands enable many tracks to be selected at once. These include save and delete operations. When selecting a number of tracks it is not possible to double click on the last track required - you must use the OK button (or press 'o').
To access tracks 9 to 32 you can either click on the down arrow button, which scrolls through the tracks one by one, or use the scroll bar. Note that the up and down arrows use the '+' and '-' keys as hot keys, even though these are not displayed on the control buttons. This applies to all up and down arrow buttons used in the sequencer.
The raised scroll bar button represents the 8 tracks currently displayed and can be moved within an area representing all 32 tracks. To select tracks 25 to 32, first click on the scroll bar and keep the fire or mouse button pressed. Drag the scroll bar button down to the bottom of the area by moving the pointing device down, or using the cursor down key and release the button. The screen is then re- drawn displaying details of tracks 25 to 32. Any of the tracks displayed can now be selected. All scroll bars used in the sequencer operate in a similar fashion. Remember to keep the button depressed while moving the scroll bar button, otherwise it will not move and the current screen will simply be re-displayed. The scroll button can be moved to any position within the indented area and released, enabling any 8 consecutive tracks to be displayed.
4.1.2. Confirmation questions
There are a number of occasions when the sequencer requests that you choose one of two options. A small window is displayed, with the choices shown on control buttons. The pointer is re-positioned within the window just above the button to the left. To select this option move the pointer down a little and click when the pointing hand appears. To select the alternative option (which is often to cancel the operation) you can press the right hand mouse button or you can use the hot-key assigned to each option.
4.2. Track Data
Each track has many parameters associated with it - in addition to the MIDI data itself. These enable you to manipulate and control the way in which the data is played back. Each function is described in turn.
4.2.1. Select Button
This button is used to turn a track on or off. When the button is depressed the track is on and is either recorded to or played back when 'Go' is selected.
Double clicking on the select button will select the track and turn all other tracks off, effectively selecting the track as a solo. This will work whether the track is on or off when the select button is clicked on. This feature is particularly useful after playing a song, when many tracks may be on, and you are starting a new recording session.
Any tracks which are 'off' are ignored when running the playback / record function.
4.2.2. Track name
Click on the track name area and you are prompted to enter the name you wish to use to refer to the track data. The track name can be up to 16 characters in length. See the section above on entering strings.
A track name is required if you wish to store the track to disk. Only the first eight characters are used as the file name - the other eight are used for your own reference only. The sequencer prevents the entry of the '*' and '?' characters to avoid problems when saving files.
4.2.3. MIDI channel
The MIDI channel setting determines which channel the data is transmitted to. A value between 1 and 16 overrides any channel number stored as part of the data within the MIDI events themselves. A value of zero is displayed as two hyphens and indicates that no channel is assigned. In this case the sequencer uses the channel assignments associated with each MIDI event during playback. This enables data for many channels to be stored in a single track.
The MIDI channel assignment is ignored during recording.
4.2.4. Record switch
The record switch is used to discard any MIDI data associated with a track and prepare it for recording.
Initially a track is set to record mode and the record button is depressed (on). Clicking on the button in this state has no effect. If the track has data recorded to it, a message appears in a window requesting confirmation for deletion of the data.
Note that deleting data in this was is different from the track delete function. Clicking on the record button simply discards the MIDI data associated with the track. The track settings - MIDI channel, voice, transpose etc. remain unchanged. Delete clears all track settings as well as deleting MIDI data.
4.2.5. Track Velocity
Velocity is a term used to describe how quickly a key has been struck and it therefore usually equates to how loudly the note has been played. The velocity setting will only have any effect on keyboards that 'velocity sensitive'. Consult the MIDI implementation chart for your keyboard to determine if it will have any effect.
The track velocity is used to force all 'note on' events to a fixed velocity enabling different tracks to be played at different volumes - like a simple mixing desk function. If you do not want all data to be played at the same volume, and wish to use the velocity values associated with the recorded events, set this value to 0. The velocity will be displayed as '--', indicating that the value is not assigned.
See also the section on System Exclusive Control events, which enable the default velocity to be set to different values at any position within a track.
4.2.6. Repeat track
Three data areas are used to control how a track is to be repeated.
The first button is used simply to turn the repetition of the track on or off. The repeat length specifies the number of beats after which the track should be repeated. The valid range is 0 to 9999 beats. When set to 8, for example, the track repeats starting on 8, 16, 24 beats etc.
The repeat count specifies how many times the track should be repeated after it has been played once. When set to 3 the track is played a total of 4 times before it stops (i.e. the track is played once and repeated 3 more times).
Repeat is very useful for rhythm tracks that require repetition throughout all or part of a song. The sequence may be repeated as many times as necessary without the need to hold the data many times.
The section on System Exclusive Control events describes the use of embedded loop points, which enable sections of a track to be repeated.
The 'wait' or lead-in value specifies the number of beats the sequencer waits before starting to play the track. It has no effect during recording. A value for the lead-in is provided following recording as the delay before the first MIDI data is received.
A track can be conveniently time-shifted by altering the wait value - see the usage of the demo track Frere Jacques.
4.2.8. Program (voice) name
This specifies the initial program or voice name associated with a track.
If a description of the voice number has been defined (see the section on configuration files) then the description, which may be 'Piano', 'Flute' etc. is displayed in this area. If no description can be found a number in the range 1-128 is displayed. Note that true MIDI voice numbers range from 0 to 127, so check whether your keyboard manual is using true voice numbers or 'logical' voice numbers (i.e. 1-128) when selecting a voice. The sequencer uses the number range 1-128.
The initial program number is only sent at the beginning of the track (i.e. when the song position counter is set to zero). If the program has been changed from the main screen during the track it is not reset unless you play from the beginning. If the value is changed from the run time menu during playback then the value will be updated there and then.
It is possible to disable this function by setting the voice number to 0. The voice is then displayed as 'None' and no program change message will be transmitted when the track is played. This is the default setting for tracks. Also bear in mind that if you have several tracks playing through the same MIDI channel only one voice can be operational at any one time, unless you have a specific type of multi-timbral keyboard that allows this.
The transpose function is used to enable you to alter the pitch of a track during playback by +/- 99 semitones.
The sequencer ensures that the valid note range of 0 to 127 is not exceeded, irrespective of what note values results from the transpose operation.
Transpose can be used to harmonise a track. Copy the track to another (see the section on copying) and transpose the copy up by 3 semitones. Both tracks can now be played back together, or merged into one track.
Quantisation is used to adjust the time at which events are played back in order to correct for slightly inaccurate recording.
Unlike the other track data functions, the quantise button results in another window being displayed. This window contains control buttons for each main class of MIDI events, which can each be quantised at a different level.
Events can be left unquantised, or quantised at 1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2 and whole beats. Normally only note on and note off event types are quantised.
If you quantise a track 'heavily' (i.e. to half or whole beats) you may find that certain notes do not seem to be played back at all. This is because both the note on and note off events for a note may be played at the same time.
Quantisation is non-destructive - that is to say is does not change the MIDI data stored in the sequencer. Instead the sequencer changes the timing information dynamically as it is played. If you wish to permanently change the timing within a track you do so by Merging the track into itself. (See Merge)
The time at which notes are played back can also be modified using the Event Editor or Graphical Editor.
4.3. Invoking Record and Playback
This is done simply by clcking on 'GO'.
The run time menu will then be displayed and any tracks set to play will start to play from the current value of the song position pointer. If the song position pointer is high, or a lot of MIDI data is being processed, a number of seconds may elapse while the sequencer determines the correct position within each track from which to start. The sequencer processes approximately 1000 event a second whilst searching for the playback start position.
The run time menu is referred to briefly in the recording session tutorials. The functions available from the run time menu are : change tempo, stop, restart playback / recording, change displayed track and change track program assignment, MIDI channel, default velocity and transpose values. It is also possible to 'Mute' a track that is playing which temporarily turns it off.
Functions are selected by using the right and left cursor keys on the Coupé's keyboard (or the joystick) to move the '>' and '<' symbols to highlight the desired function. If the function is an action, such as 'Stop' or 'Restart', then the enter key, joystick 'fire' button or CNTRL key will select the action.
If a value is highlighted with the '>' and '<' then the up and down cursor keys (or corresponding joystick movements) will increase or decrease the value.
Each of the functions is now discussed in turn.
4.3.1. Change tempo
The 'Tempo' function is highlighted by default when record/playback is initiated. The up / down cursor keys increase or decrease the tempo in 0.5 bpm steps. Note that there is no checking on the tempo range. It is possible to increase the tempo beyond 600 beats per minute and below 4. Results are unpredictable if the tempo is increased beyond 999 bpm or below zero. You are strongly advised not to exceed the 4-600 bpm range.
As the tempo is altered, the display of the current tempo value changes.
Stops all recording and playback. The sequencer turns all notes off, preventing any notes from being left 'droning' - this takes a couple of seconds.
Any data recorded will be kept, the run time menu will close and the main sequencer screen will be re-displayed.
There may have been changes made to many tracks using the run time menu during the record/playback session. In order to refresh the track details displayed on the screen simply click once on the scroll bar button.
This enables playback or recording to re-commence from the start position selected when the record/playback function was initiated.
If no tracks are being recorded to, the sequencer stops playing and then re-starts automatically from the start position.
If recording is in progress then this facility provides the opportunity to throw away the recording just made and start again or to keep the recording and build up another sequence. The prompt 'Keep or Reject recording?' is displayed if re-start is selected and any recording has taken place. Rejecting the data does just that - the recording is discarded. The sequencer re-starts playback and gives another opportunity to record that sequence.
If the recording is kept then another track is selected for recording (if available) and this provides an opportunity to listen to the data recorded before recording additional parts. If, when the recording is played back you decide you don't wish to keep it after all, simply select 'Restart' again and 'Reject' it. Note that if you do any additional recording while listening to the one just made it will not be possible to reject the earlier recording using restart. Only the most recent recording may be deleted - any earlier recording will be kept automatically.
If you inadvertently Keep a sequence you do not want by recording another sequence while listening to the earlier recording, simply Mute the track you don't want and re-start (see below for details on Mute). The unwanted recording will not be deleted by the sequencer and the track used by the recording will still be occupied, but it will enable recording to continue without the need to exit Record /Playback and delete the recording manually.
4.3.4. Track select
Any of the 32 tracks can be displayed by changing this value. The track name is displayed alongside the track number and the current track status is displayed in the bottom left of the run time window. The track status has the following values and meanings :
- OFF - track is not selected, or is selected for recording but not currently in use
- PLAY - Play back is in progress
- END - Play back has completed
- MUTE - Play back has been turned off
- REC - Track is being recorded to
The program (voice) assignment, MIDI channel, default velocity and transpose values for the selected track are also displayed.
Pressing the enter or CNTRL key while the track number is highlighted mutes the track - MUTE is displayed in the track status area. No further events will be transmitted although the track position will be maintained by the sequencer. Pressing the enter or CNTRL key again will turn the track back on again.
4.3.5. Voice Assignment
The voice or program assigned to a track can be changed at any time. The appropriate MIDI data is transmitted as changes are made. This can be useful during playback to listen to different instruments without leaving record / playback and can also be useful when recording. Try altering the value while tapping a note on the keyboard in record mode - all the voices on the keyboard can be stepped through rapidly until the appropriate voice is found.
The program change command is transmitted to the channel assigned to the track. If no channel is assigned then channel 1 is used.
4.3.6. MIDI Channel, Velocity and Transpose values
Enables the current values for the track to be changed while the track is playing. The changes you make may not have an immediate effect for two reasons :
- MIDI output is buffered in advance to maximise throughput. The existing buffer contents must clear before any changes made will take effect. How long this takes depends on the number of 'beats worth' of data that has been buffered.
- With the exception of velocity changes, the sequencer delays making the change until there are no notes playing for the track. If it did not do this it would be possible for a note on event to be sent to one MIDI channel, for example, and the note off event to be sent to a different channel. This would result in the note being left droning. In most cases waiting for all notes to clear does not cause any problems, but if you have a track in which note on and note off events overlap in such a way that tehre is always at least one note playing then the changes made to track values will not track effect until 'restart' is selected.
The MIDI output buffer size can be reduced in the MIDI setup screen which will make the run time menu more responsive to changes (as the amount of data that can be buffered will be reduced), but this can cause problems if a lot of data is being played rapidly. If playback seems to lag a little, or suffers from occasional hesitations, the buffer size is probably too small - but check that the keyboard is not being overloaded (i.e. too many notes being played at the same time) as this can cause similar problems. See the section on MIDI setup.
Changes can be made to these values if a track is OFF or has ENDed. The new values will be used when the track is next played, or following a 'restart'.
4.4. On-screen Metronome
The metronome provides a visual indication of each beat as it passes. When the arm of the metronome reaches the extremes of its oscillation, the next beat is reached. When the metronome arm is vertical, it is on a half beat. The speed of the metronome is dependent on the current tempo setting (see below).
If the tempo is very high the movement of the metronome arm is not very smooth. This is because the metronome is moving more rapidly than TV screens are being displayed. In addition the screen is updated only when higher priority tasks, such as sending or receiving MIDI data are not in progress.
4.5. Audible Metronome
The speaker symbol provides an audible metronome through the internal sound chip on each beat, which can be heard through the TV speaker.
4.6. Changing the Tempo
The tempo can be set to any value of beats per minute between 4 and 600 in tenths of a beat per minute.
If you find a piece too difficult to play at full speed, you can set the tempo to a lower value and record it more slowly. The tempo can then be increased during playback.
The tempo can also be set during playback, using the internal system exclusive commands and the run time menu described earlier. See the section on Internal System Exclusive Controls for more details.
4.7. Song Positioning
Changing the current song position enables you to start playing a track (or tracks) back at a specified position, rather than having to play through all tracks from the beginning.
The song position can be altered by using the fast forward and rewind buttons, which alter the song position by 16 beats and 16ths of a beat respectively, or by clicking on the song position value itself and altering it as for any other value. In addition '<' and '>' (on the 'Q' and 'W' keys) are set up as hot keys for the fast rewind and fast forward keys.
If a lot of data has to be processed before the appropriate position is found it can take a few seconds before playback starts. See the section on invoking the sequencer.
4.8. MIDI Set-up Parameters
This section coverts MIDI mode settings, switching 'MIDI thru' on or off and defining the MIDI out buffer size.
4.8.1. MIDI Thru
If MIDI thru is turned on, any MIDI data received by the Coupé is automatically transmitted through the MIDI out port. MIDI thru is controlled by hardware and is not sensitive to other data that may be sent out through the MIDI port by the sequencer. This can lead to output data being corrupted if MIDI thru is on and the sequencer is playing. In figure 6, MIDI Thru has been turned on.
4.8.2. MIDI buffer size
In order to maximise data throughput, the sequencer processes MIDI data in advance and places it in a buffer. The buffer is emptied as the correct times for the notes to be played elapse. The sequenecer fills the buffer back up as it empties. A large buffer size of 200 bytes, which is the maximum (and default) value maximises data throughput, but can make the run-time system less sensitive to real time changes to MIDI channel, transpose values etc. Specifying a smaller buffer size reduces the amount of data that can be processed in advance and performance if a lot of MIDI data has to be sent in a short period of time. This is entirely dependant on the piece being played. If the timing of music being played back seems to become ragged then it is possible that the MIDI buffer has been made too small.
4.8.3. MIDI Mode commands
MIDI modes can be sent to any of the 16 MIDI channels by selecting the required channels (normally all 16 are selected) and clicking on the MIDI mode you wish to send. This can be used to turn off droning notes and to set the characteristics of your keyboard.
Check the MIDI implementation of your keyboard to see if it responds to these messages and how it interprets them.
4.9. Storing Tracks on Disk
Individual tracks can be stored to either disk drive, re-loaded or erased from a disk. Although completed songs are best stored as song files, as these are quicker to load and use fewer directory entries, storing individual tracks will usually be necessary while a song is being developed, or to exchange frequently used sequences between songs. A good example of the later may be a short track that holds system exclusive commands to switch tone banks.
Both disk drives can be used. The current disk drive is indicated by the buttons labels 'D1:' and 'D2:'. To change the drive, simply click on whichever button is not depressed.
4.9.1. Saving tracks
In order to save a track, it must first have been given a name. To enter the track name simply click on the track name area. Only the first 8 characters of the track name are used for the file name.
You must ensure that the first 8 characters of each track to be saved are unique. The sequencer will check whether a track of the same name already exists on the disk at the start of the save operation, but does not check after each individual track is saved. If two tracks have the same initial 8 characters then the first track will be over-written when the second is saved.
To save a track (or several tracks), click on 'Save'. The sequencer then reads the directory for the current drive and then requests you to select the list of tracks to be saved. Select a track by clicking on the track name (which is then highlighted). When you have completed your selection, click on OK. Each of the tracks is then saved to disk together with any other details you have specified (such as transpose and quantise settings etc.).
If the track already exists on the disk, the message '(track name) already exists. Overwrite ?' Click on Yes to replace the current file and No (or right hand mouse button) to abandon the save. Note that the 'Y' and 'N' are highlighted, so you can type the letter if you prefer.
A track is automatically verified once it has been saved.
4.9.2. Loading track data
When you select the load function, the sequencer searches the disk for all existing track data. During this time a window is displayed tieh the message 'Fetching directory'. A window is displayed showing up to 28 tracks at a time. Select the tracks you wish to load by clicking on the track name, using the up and down buttons to scroll through the list if there are more than 28 tracks on the disk. The up and down buttons use '-' and '+' as hot keys, although these are not highlighted on the buttons themselves.
When a files has been selected it is highlighted with the window. When you are satisfied with your selection click on the OK button (or double click on the track) - if you wish to cancel the load, click on the cancel button or click the right hand mouse button. To change your selection, simply click on the track name again and it will be de-selected. Any number of tracks can be loaded in one operation, limited by the number of free tracks available in the sequencer and the number of events free.
When the track(s) to be loaded have been selected, the sequencer loads each in turn to the first available empty track. A message is displayed stating which track the file is being loaded to.
4.9.3. Erasing tracks (Wipe)
Erasing data from disk works in similar fashion to loading. Firstly a list of all tracks on the current disk is displayed. Pick the track(s) to erase from disk, click on OK and the data is erased from disk.
You are requested to confirm the erasure of each track in turn.
4.10. Deleting Track Data
The delete function clears data held in the sequencer's memory, rather than from disk. Selection of the track(s) to delete is done in the standard way. When deleted, the memory occupied by the tracks is free to be used again.
Delete differs from simply switching a track to record mode (which also deletes the MIDI data associated with a track) as it also clears any control information displayed on screen, such as the track name, MIDI channel assignment etc.
4.11. Copying Track Data
The copy function enables the MIDI data within a track to be copied to another track. Any data currently associated with the track is deleted if a copy is executed. If you select to append the data the copied data is added to the end of the track.
You are first requested to specify the track to be copied to, followed by the source track.
If the target track is not empty you are given the option of either copying the data (which results in existing data being deleted) or appending the source track to the end of the target. If you append track data, it effectively becomes glued together into one track.
4.12. Merging Tracks
The merge function is very powerful and enables one or more tracks to be merged into a single track. This is very useful for freeing up other tracks, if the number of free tracks becomes low.
First select the track to hold the merged data, followed by the list of tracks to be merged. Selected tracks are highlighted by printing the track name on white paper (see the section on selecting tracks). Note that it is possible to Merge a track onto itself.
When you are happy with your selection, click on OK. The data from the selected tracks is merged together into the target track. Functions such as wait, transpose etc. are acted on during the merge process, which may take a while depending on the amount of data to be processed. The merge function processes approximately 1000 events each second. Note that track repeats (and embedded loops) are also acted on, which may result in a track (or a section of a track) being duplicated many times. If the sequencer runs out of memory while trying to merge tracks the message 'Merge overflow' is displayed.
If the tracks that have been merged contain data for different channels, set the MIDI channel for the track to zero before playing the merged track back. See the section on MIDI channel assignments.
Merging tracks with quantisation active can lead to timing information becoming inaccurate. Quantisation of note on events can sometimes cause a note on event time to be later than a note off time, implying a change in order of events. Merge does not try to resolve these problems and will simply set the time difference for the following event to zero.
Internal system exclusive control events are also processed, so that changes to the default velocity will effect note on events in the merged track and embedded loops will be expanded. Note that tempo control events are simply copied to the appropriate place within the merged track.
4.13. Input / Output Filters
The sequencer can use filters to selectively ignore certain event types, either when playing or recording.
A filter exists for each event type. Figure 9 shows the Polykey pressure (or after-touch) input filter and the control change and pitch wheel output filters turned on.
The screen displays the status of all filters. Simply click on the appropriate button to turn the filter on or off. When the button is depressed the filter is on and the data will be ignored.
Note that the filters effect all tracks and output filters are also acted upon when merging tracks. If you have a track that contains pitch wheel data, for example, and you have copied the track to have two different instruments playing the same music but only require the pitch wheel data on one track, do the following :
- Turn the pitch wheel output filter on
- Merge the original track into the (empty) target track - this will effectively copy the data and exclude pitch wheel events
- Turn the pitch wheel output filter off
- Play both tracks back together - one will have the pitch wheel data, the other will not
The system exclusive filter does not affect internal system exclusive commands - these will be actioned even if the system exclusive output filter is on.
5. Song functions
As well as saving data as individual tracks, it is possible to group tracks together as a song, define a tempo for the song and save them all in a single operation.
This not only saves time in loading songs, but reduces the number of files required on disk to hold the data.
Songs can be loaded, saved and erased as for individual tracks. A song can be defined to consist of any selection of tracks currently loaded in the sequencer. In addition a tempo can be assigned to the song and brief notes associated with the song.
5.1. Song definition
Selecting 'Define' from the song processing menu results in the screen shown in figure 11 (over leaf) being displayed. This screen displays the names of all tracks currently loaded in the sequencer, with those tracks that form part of the current song highlighted on a white background.
The sequencer can store 8 song definitions at any one time - use Next / Previous to move through the list of songs.
To select a track to be included in the song, simply click on the track name area in the song definition screen. The track name is then displayed on a white background. To remove a track from a song click on it again and it will be displayed on a light grey background. 'Clear' resets all track assignments for the current song.
A song has a starting tempo associated with it. To set the tempo, click on the tempo area (or press 'T') and enter the tempo in beats and tenths of a beat per minute. The tempo can be altered as the song plays using the embedded tempo control commands (see the section on Internal System Exclusive Commands).
Brief notes can be assigned to the song, by clicking on 'Notes'. A window is then displayed showing 5 lines of 16 characters, which may be used to hold a copyright notice, or long description of the song etc.
5.2. Song Control
Song control deals with the playing of songs that have been defined. A list of songs is displayed - select the songs to be played by clicking on the song name so that it is highlighted.
The sequencer plays each song selected one after another, turning tracks on or off as appropriate, setting the tempo for the song and resetting the song position counter. The run-time control panel is displayed as usual during playback, enabling changes to be made if required. Songs may also be restarted from within the run-time control panel.
When all songs have finished playing the main song processing menu is re-displayed, unless 'Cycle' is selected in which case the sequencer will start playing the first selected song gain when the last one has finished. To stop the sequencer playing when cycle is selected you must select 'Stop' within the run time control panel.
5.3. Song File functions
All functions are similar in operation to those for tracks.
5.3.1. Loading songs
Once a song is selected, it is loaded into empty tracks within the sequencer. This may mean that the tracks that make up a song become jumbled up with other tracks already in use. This does not affect operation - the sequencer can still identify which tracks form part of the song even if they do not occupy a contiguous series of tracks.
If you wish all song tracks to be kept together, simply copy existing tracks so that they occupy, for example, the first few tracks and delete any unwanted tracks before loading the required song.
When a song is loaded the tempo and notes associated with the song will also be loaded.
5.3.2. Saving a song
A window, similar to the song control window, is displayed listing all songs defined in the sequencer. To save a song (or songs) select those required by clicking on the song name and then on Done.
In order to save a song the sequencer needs to arrange all the relevant track data into a single contiguous block. This can involve moving a lot of MIDI data around in memory. Typically a song will take 40 seconds to be prepared in this way, although this will vary depending on the number of tracks and the number of events used by the song.
Note that when a song has been saved and verified, it is possible to erase all the individual track files from disk (from the track file operations menu) as they are no longer needed. If an individual track is required at a later data, simply load the song and save the track required.
5.3.3. Erasing a song (Wipe)
This operates in just the same way as track file deletion. A directory of songs is presented - simply highlight those to be deleted and click on OK. You will be asked to confirm the deletion of each song in turn.
6. Event Editor
The event editor enables you to view and change the MIDI data you have collected from the keyboard. In addition, MIDI events can be entered directly, blocks of data printed and special controls such as accelerando, loop points and default velocity values can be entered.
The editor enables changes to be made to the data without affecting the original track. If you make a mistake and want to ignore the changes and abandon the edit you can 'Quit' the edit. The track will be unaffected. The exception to this is when the sequencer is short of memory and cannot hold a copy of the track to be edited. In this situation you will be asked if you want to perform an 'in situ' edit - i.e. to edit the track as it is. There will be no opportunity to abandon the changes if such an edit is conducted and so you are strongly advised to save the track to disk before starting an in situ edit.
Preparation of a track prior to an in situ edit can take some time as data is copied. A message stating the amount of data being moved is displayed at the bottom of the screen.
6.2. The Display
The display consists of 4 main areas (figure 13). MIDI data for the track being edited is displayed in 3 columns, under which the time (in beats and 256ths of a beat), the MIDI data itself and a textual description of the data is displayed. The fourth area contains the control buttons that enable various functions to be accomplished.
6.3. Moving Through the Data
The up and down buttons enable the MIDI data to be scrolled up or down by one event at a time. The scroll bar enables more rapid movement to any place within the track data. To use the scroll bar click on the button and keep the button pressed. Move the pointing device up or down to the required area within the track and release the button. The current page is displayed.
You can also move directly to a specific beat value by clicking on the value under 'Goto :'. Enter the number of the beat and fraction of a beat you wish to re-position at, and the sequencer searches through the data and redisplays from that point.
If you get a blank screen at this point, you have gone past the end of the track. To get to the last event in the track, click on the up arrow button (or press '-').
Note that the time associated with the events does not include the lead-in time for the track. On entry the track data is displayed from the current song position pointer. This is adjusted to account for the track lead-in time, but cannot cater for track repeat or embedded loop points, so the screen will not always show the data which is just about to be played.
6.4. Time Shifting an Event
To change the time at which an event occurs, simply click on the time value for the event you want to change. The whole best value is highlighted on a white background. Use the pointing device to either increase of decrease the time value, in analogous fashion to entering numeric data on the main sequencer screen. Pressing enter enables the value to be keyed in.
When the whole beat value has been altered, the highlight moves to the fractional part of the time. Change this in the same way. Timing information is held in 256ths of a beat, so a value of 128 is equivalent to a quaver or half beat.
Time data is stored as a relative displacement from the previous event. It is therefore not possible to decrease the time that an event occurs at to before a subsequent event. This would imply a change in the order in which the vents should be played. If you wish to do this you can use the cut and paste options. Alternatively the graphical editor can accomplish this for note data.
Another implication of the use of a relative time displacement is that increasing the time value for one event also affects all subsequent events. You may need to alter the time for the event immediately following the event you have changed in order to retain the correct timing for the rest of the track. Before you change the time for an event, make a mental note of the time for the subsequent event. Reset this value after making the change if necessary.
6.5. Changing the Data
To change the MIDI data itself, simply click on the hex print out of the event you wish to change.
The first byte of the event, (the command), is highlighted. Use the pointer to change the value to that which you require. The new description of the event is displayed, and the number of subsequent bytes that form the event may alter.
Each successive byte of the command (if any) is highlighted in turn to enable it to be changed. The description of the event is re-printed as each value is entered.
To change the velocity of a note on command, for example, click on the event to be changed. The note on command is highlighted and '9n', where n is the MIDI channel number, is displayed. This byte need not be changed, so simply click on it. The highlight moves to the next byte, which is the note number. This could be changed if you wish, to put in the right note where you played the wrong one. If we're only interested in the velocity, simply click on the value again. The highlight then moves to the velocity value. Alter this as you required, using the joystick, mouse or keyboard as described above. The event is re-displayed for the last time, with the new velocity value, and the pointing hand re-appears.
If the event is a SAM System Exclusive command the change is handled differently. A window appears detailing the type of control event and offers the choice of changing or deleting the command.
If you request to delete the command a number of events will be delete : the System Exclusive event, the events that comprise the command and the terminating End System Exclusive event.
If you change the control command you are taken into the same window that is used to enter the commands. See the section on System Exclusive Control commands.
6.6. Cutting and Pasting
Cutting and pasting can be very useful for removing extraneous notes and for copying or moving sequences within the track to somewhere else.
In order to cut some data, the area to be cut must first be marked as a block. This is done by clicking on the description of the first event you wish to be included within the block. Reply to the question 'Start or end of block ?' by clicking on the Start button, or keying 'S'. The current event will be highlighted indicating that it forms part of the current block.
Then click on the last event you require within the block and specify that this is the end of the block. Each event within the block defined will have the command description highlighted.
As you move through the data, any area of the marked block that appears on the screen is highlighted.
To cut the marked block, simply click on 'Cut'. The data marked is deleted and copied to a buffer and the screen is redisplayed with the data removed. The event immediately following the end of the deleted block will be highlighted.
To copy the block, simply click on the Paste button and the block is re-inserted from where it was deleted - the data is effectively unchanged. Now move to the position at which you want the data to be copied to and mark a block position by selecting the start of a block. Now click on Paste again and the data is copied into the track data above the start of the marked block. Copying from the cut and paste buffer in this way can be continued until the sequencer runs out of memory. When this happens a message 'No room to insert' is displayed.
If memory is low, it may not be possible to cut to the buffer. No paste option will then be available.
To move data, rather than copying it, follow the same procedure to cut a block but do not re-insert the data from where it was deleted. Instead move the block pointer to a new position and click on the event description and mark the start of a block. Then Paste the block to the new position.
The paste buffer is not deleted when you finish editing a track. This enables data to be copied between tracks. For example, cut a block in one track, complete the edit (using Quit or Done), edit a second track, mark a block start position and select paste.
There is no limit as the the size of the block you cut, other than the amount of free memory within the Coupé. As the cut and paste buffer is not deleted following an edit, it effectively reduces the amount of memory available for general use. If you need to free the memory used by the buffer, enter the event editor and click on cut immediately. A window appears with the message 'No block marked - clear buffer?'. Click on 'yes' to clear the buffer and then exit the event editor. The Events Free indicator will be re-printed to show the total memory now available.
6.7. Printing a block
Any block of data that been marked can be output to an attached printer through an appropriate interface. The printout shows the track name and lists the MIDI data in a similar format to that shown on screen.
6.8. Playing a block
A marked block may be played from within the event editor. The run time control panel is displayed as normal although the beat counter and tempo (if altered during playback) are displayed in the central panel at the base of the screen. The panel is cleared following playback.
This can be useful for listening to small sequences in the track and for checking the function of system exclusive commands for the attached keyboard.
6.9. Inserting Events
The 'insert' button inserts a single event at the current block start marker. Mark a block start position as described for the cut and paste functions and click on 'Insert'.
If there is no room to insert the event a message is displayed, otherwise the event is inserted and the data then be changed as required.
6.10. System Exclusive Control Commands
A number of special system exclusive commands have been implemented to enabled increased control during playback. These cover two areas : tempo controls (which affect all active tracks) and track specific commands.
The controls are stored as system exclusive commands, with a manufacturer's code specific to the sequencer's operation. The code used must be chosen so as not to conflict with the value used by the keyboard. This is covered in more detail in the Configuration file specification section. Following the System Exclusive command there will be one or more events of data which hold the tempo setting etc. specified. An End System Exclusive event completes the control command.
Examples of the use of these commands are given in the demonstration track, 'ISECDemo'.
The controls are inserted by clicking on the 'Control' button (or pressing 'o') within the event editor. A window appears listing the types of control. To insert the event, simply click on the type you require. Another window then appears requesting information relevant to the particular control.
Each control will now be dealt with individually.
6.10.1. Set Tempo
This enables the tempo to be set to any value between 4 and 600 beats per minute, in 0.1 beat divisions. It is equivalent to altering the tempo value on the main sequencer screen.
However the control is acted on by the sequencer during playback, enabling the tempo to be altered without any interaction.
To set the tempo to a specific value enter the value required and click on OK. The event will be inserted and the MIDI data re-displayed.
This enable the tempo to be gradually increased during playback. The on-screen display of the tempo value will change as the accelerando command is acted upon. The amount by which you want the tempo to increase is entered, together with the time period, in beats, over which you want the change to become effective.
This enables the tempo to be gradually decreased during playback. The on-screen display of the tempo value will change as the ritard command is acted upon. The amount by which you want the tempo to decrease is entered, together with the time period, in beats, over which you want the change to become effective.
6.10.4. Loop start and Loop end
Marks the start and end point of an embedded loop within the track. Each loop start should have a corresponding loop end, but loops may be nested, i.e. you can have loops within loops, up to a depth of 5 in addition to the track loop.
Embedded loops differ to track loops in that there is no explicitly defined length for the loop. A track loop will wait until the repeat length has expired before repeating the track - when a loop end is reached the track will continue immediately from the previous loop start. If you want a loop of a specific length you can change the time associated with the loop end command in the event editor. The length of the loop will be determined by the time of the Loop End command minus the time for the Loop Start command.
The graphical editor provides the easiest method of entering loop points accurately.
Note : Always change the time for the system exclusive command event - never alter the time of the data events or 'end system exclusive' event that forms part of a control command.
6.10.5. Default velocity
This enables the velocity to be fixed to a particular value anywhere within the track. This is very useful if a sequence has been recorded with uneven volume but does need to vary at stages throughout the whole track. Setting the track default velocity would not be suitable in this case as it would affect the whole sequence. The system control command overwrites the overall track velocity and therefore can be used to play one section quietly and another loudly.
Setting the default velocity to zero causes the sequencer to take the velocity associated with each note on event.
6.11. Completing the edit
When you have finished editing, keeping the changes you have made is easy - simply click on 'Done'. You are requested to confirm that you wish to exit the event editor before the main sequencer screen is redisplayed.
Abandoning the edit is equally easy - simply click on 'Quit'. Again you are asked to confirm that you wish ignore any changes you have made before returning you to the main screen.
If the sequencer is short of memory and an 'in situ' edit is being performed, it is not possible to abandon changes to the track. Both Done and Quit have the same effect in this case and exit immediately to the main sequencer screen.
7. Graphical Editor
The graphical editor provides a powerful interface enabling notes and system exclusive control events to be inserted simply by 'pointing-and-clicking'.
Entering notes using the graphical editor is very flexible. Many notes my start / end at the same time, enabling easy entry of chords etc. In addition note start and end time can overlap if required. However, the graphical editor does not enable other MIDI event types, such as program change, pitch wheel etc. to be inserted. If you need to do this then use the event editor.
To use the graphical editor, click on 'Edit', select the track you wish to edit and then click on 'Graph'. The opening screen of the editor is then displayed.
7.1. The display
The display is shown in figure 15 and consists of 3 main areas.
Firstly there is the notes display area. This shows notes as a line with the start and end of the note (i.e. the note on and note off events) as a vertical bar. If a note does not fit on the screen, because either the start or end events (or both) are outside of the time range displayed then one or possibly both of the vertical bars will be absent.
The notes are can be scrolled using the scroll bar on the right of the screen in order to display any grouping of 13 semitones. The description of the note values on the left of the screen is redisplayed accordingly. If the track being edited is a percussion track, as defined in the configuration file then percussion note assignments will be displayed in place of normal note descriptions.
The top of the screen contains control areas that enable the length of note to be entered to be changed, together with the number of beats on screen. Immediately under top row of buttons are controls that enable the track to be scrolled through, the screen displayed to be played and the tempo to be changed.
The final edit area is the control events display / entry area which is to the right of the 'Control Events' prompt. Figure 15 shows default velocity change (V), Accelerando (A) and loop start command (>).
Beat numbers are shown together with tick marks above the control events line. The ticks will display varying degrees of a beat depending on the number of beats displayed on the screen.
All functions available within the graphical editor will be described in detail.
7.2. Entering notes
Notes are entered simply by moving the pointer to the correct position within the notes area and 'clicking'. The horizontal position of the pointer determines the time for the start of the note and the vertical position determines the pitch of the note.
The start time for the note is rounded as appropriate for the length of the note. For example, a crotchet will always start on a whole beat, a quaver on a whole or half beat and a minim on an odd beat number. Once a note has been entered, the horizontal position of the pointer is advanced automatically so that only the pitch need be altered when entering a series of notes of the same length.
The length of the note being entered can be changed in two ways. Firstly the overall length of the note can be altered by clicking on the 'Length' area (or pressing 'L', which will preserve the horizontal position of the pointer). The length of the note may be set to virtually any value, in 256ths of a beat. A number of values, such as 256, match standard note lengths. The description of the note length will be displayed if this is the case, otherwise 'Custom' is shown. This enables non-standard note lengths to be used if desired. As with all numeric values, pressing the enter key while changing the value will enable it to be keyed in. Dotted note lengths (e.g. 384 is a dotted crotchet) are shown as the note length within two dots.
The second way of changing the note length is to alter the 'Style' value. This affects the proportion of the overall note length for which the note will actually be on. For example, a series of crotchets in a score would normally be played with a short gap in between each note - the notes would be on for about 7/8 or 88% (a style value of 0.88) of the time. If the passage was played as staccato then the note length would be much shorter - 50% (or 0.5) the duration of a quaver - although crotchets would still be being played. In a similar fashion a smooth legato passage would have the notes on for the full duration of the note length.
The difference between the two methods is essentially that the note Length determines by how much the pointer position advances after each note is entered. Changing the style does not alter this. In addition the note length determines the valid start times for a note. As described earlier, the crotchet will always start on the beginning of a beat, even if the horizontal position of the pointer equates to a half beat, for example.
7.3. Modifying / deleting notes
To modify or delete a note simply identify the note within the screen display and click anywhere on the horizontal line for the note. A window is displayed showing the note velocity, start and end time and the note length.
To delete the note press the Del key or press the Right button on the mouse. Another window is displayed requesting that you confirm whether to delete the note or not. If you do delete the note the windows will close and the screen is re-displayed with the note deleted.
To change the velocity of the note select it and then move the pointing device vertically up or down, or used the cursor keys.
To change the length of the note move the pointing device left or right or use the right and left cursor keys. The note length will be changed and re-displayed in the window. The note will be re-displayed after each change.
A note can be moved by pressing the spacebar while modifying a note. The message 'Move mode : ON' will be displayed at the bottom of the window. The velocity can be changed and the note deleted as normal. Pressing the spacebar again will turn move mode off again.
Moving the pointing device left or right will now alter both the start and end time by the same amount. This has the effect of moving the entire note which can be very useful when editing a recording with ragged timing.
Changes to note length and position are done in units equal to the number of beats on the screen. That is if 8 beats are displayed each movement will be of 8 256ths of a beat, if only two beats are shown on screen then movements will be of 2 256ths of a beat. If a note is to be moved by a large amount it may be quicker to increase the number of notes on screen, make then changes and then decrease the width values again.
7.4. Moving through the track
Different portions of the track can be selected by using the fast forward / rewind buttons. The "<<" and ">>" controls move the display by the width of the screen forward or backwards. The "<" and ">" move the display by a single beat.
The Width control enables the number of beats displayed on screen to be modified from 2 to 16 beats (the default). The width must be an even number of beats (odd values will be converted to even ones). After altering the width the screen is redisplayed with the note lengths re-scaled.
Displaying a small number of beats can overcome difficulties when handling very short notes (semiquavers and shorter) which can be awkward to position on accurately when displayed as very small graphics when 16 beats are shown on screen for example.
7.5. Playing the data
Clicking on 'Play' plays the portion of the track being viewed on screen. The time period is restricted to the screen displayed but all notes, including those above and below the range displayed on screen, are played.
The standard run time menu is displayed during playback, allowing the same changes to be made as during the normal playback procedure.
7.6. Entering Control events
Control events are entered in a similar to the entry of notes - by clicking on the control events line at the appropriate position.
The control events line displays a letter or symbol to indicate the position of existing events, as follows :
- T - Set tempo
- A - Accelerando
- R - Ritard
- V - Set default velocity
- > - Loop start
- < - Loop end
If more than one control event occurs within the time period spanned by a single character position on screen, then an asterisk is displayed instead.
To insert an event click on the events line. A window is displayed and you are requested to enter the time for the event. This is necessary as, unlike notes, there is no way of appropriately adjusting the time value determined by the pointer position. As control events can not be moved after they have been entered, the time must be specified correctly prior to entry. If you wish to enter a control event at the same time as an existing event you must click somewhere on the control events line where there is no control displayed and alter the default time to the desired value.
Once the time has been entered, specification of the type of control and the parameter values is done exactly as in the event editor.
To change or delete a control event, click on the letter code displayed on the control events line. If an asterisk is displayed at that point, or more than one control event exists within a small time period either side of the pointer position, then all control events within this time period can be changed, one after another. If you do not wish to change or delete a particular command, select 'Change' and 'Quit'.
You may find that displaying fewer beats can resolve control events which are close together in time and displayed as an asterisk into separate letters.
Modifying and deleting control events is the same as in the event editor - simply click on the letter of the event you wish to change in order to select it.
7.7. Hints and tips
Specifying loop start / end points
Sometimes notes that appear to be positioned within a block may not be played, likewise others just past the end of a block may be played when they should not be. This can happen even if the start time for the notes and loop commands appear to be correct. The reason for this is that although the graphical editor ensures that the time associated with events is correct, it does not alter the order of the commands entered.
To overcome this for a note at the same time as a loop start command, do the following :
- click on the note not being played at the start of the loop point
- Select 'move mode'
- Move the note 'right' (press cursor right once)
- Move the note 'left' so that the start time is correct again (press cursor left once)
This will have the effect of altering the sequence of the events so that the loop start occurs before the note on event. The same technique can be used to move notes at the same position as a loop end back into the main loop.
If the problem persists then use the event editor to move determine exactly which events are out of sequence and move them into the correct position using the cut and paste options.
Note too small to select
Reduce the width value so that fewer beats are displayed on screen. This makes each note longer. It should be possible to select a note as short as 8 256ths of a beat when only 2 beats are displayed. If the note is still too small then it must be processed within the event editor.
Note displayed as a continuous line
The graphical editor expects each note to be started with a note on event and terminated with a note off event. If a note on event with a velocity of zero is used to terminate the note, or no note off event exists at all, the end of the note will not be found.
Use the vent editor to change the note on event into a note off event or insert a note off event for the note.
8. Configuration Files
The configuration file holds information relating to the keyboard you use, together with parameters used for the user interface.
As only one configuration file can be loaded at any time, the voice descriptions may not always be accurate if more than one keyboard is in use at the same time.
Functions available from the main configuration file menu screen are described below.
8.1. Configuration file name
This name is used as the file name for the current configuration.
In order for the sequencer to automatically load the configuration do the following:
- Save the configuration file as normal, using a descriptive name, e.g. 'CT-470', 'PSS-38' etc
- Change the configuration file name to 'Default'
- Click the write protect tab on your sequencer system disk to 'write'
- Save the configuration file, overwriting the existing default file.
- Remove the system disk and remember to set the disk to READ ONLY.
Note: This is the only occasion you should ever write to the system disk.
8.2. SAM System Exclusive
This defines the value that is used by the Sequencer to identify which system exclusive codes should be interpreted as internal control codes.
It is important that this value does not conflict with the value used by the keyboard(s) you will be accessing using the sequencer, as you may wish to send system exclusive commands to the keyboard, to select additional sounds etc.
The system exclusive code used by your keyboard (if any) will be documented in your manual. Pick any other value between 1 and 127. A value of 1 should normally be OK as this is assigned to 'Sequential'
If you change the keyboard you are using and find that the SAM sys. ec. code you are using conflicts with the new keyboard, you must change this value. It will then be necessary to use the event editor to alter any tracks that have control commands which use the old value.
8.3. Mouse support
Click on the mouse on/off button to enable / disable mouse support. If no mouse is present a message is displayed and mouse support will not be turned on.
8.4. Double click speed
Click on one of the buttons in the bank of eight to select the double click speed you prefer. This can be tested by double clicking on the area marked 'Test'. The text will invert only if a double click was identified.
8.5. Percussion mode
Ignore these controls if your keyboard has no percussion mode.
If it does, it may use a specific MIDI channel, or a specific voice to access percussion sounds. Select the mode by clicking on either 'Voice' or 'Channel' and set the value to the right of these to the appropriate value - 1 to 16 for MIDI channel, 1 - 128 for voice.
The event editor uses these values to determine whether a track being edited is a percussion track or not.
8.6. Voice Descriptions
Voice descriptions are displayed a page at a time, each page consisting of 32 voices. Use 'Next Page' and 'Previous Page' to move through all descriptions.
To change a voice simply click on the description you wish to change. If your keyboard does not use all voices, simply leave them blank.
8.7. Percussion Voices
This enables percussion voice descriptions to be defined. If you keyboard does not have a percussion mode ignore this section.
It is assumed that the percussion mode operates by assigning a different percussion sound to each note value. These note descriptions are used in the event editor and graphical editor.
8.8. File Operations
You can load, save or erase configuration files from drives 1 or 2. These operate in similar fashion to track and song file operations.
A. Appendix A - Internal Data Formats
This section describes the way in which MIDI data is held internally. The structure of track header and data files is described, followed by song file and configuration file structure.
A.1. Track Header Files
These are 64 bytes in length, and are stored on disk as an 8 character name followed by a '.H' extension.
|Field No.||Offset||Length (bytes)||Description|
|1||0||1||Flags, see note 1 for details|
|2||1||1||Current memory page (used during playback)|
|3||2||2||Current offset within page (used during playback)|
|4||4||1||Start page of track in memory|
|5||5||2||Starting offset of track in memory (32768-49151)|
|6||7||2||Length of repeat loop in beats|
|7||9||1||MIDI channel no. 0-15, 16 = no channel assigned|
|8||10||3||Reserved - used during playback|
|10||29||1||Reserved - used during playback|
|11||30||1||Reserved - used during playback|
|12||31||1||End page of track in memory|
|13||32||2||End offset within page|
|14||34||2||Reserved - used during playback|
|15||36||2||Lead-in (wait) period in beats|
|16||38||1||Initial MIDI program number (0-127). 128 = none|
|17||39||1||Transpose value 29-227. 128 = 0, 29=-99,227=99|
|18||40||2||Number of times track should repeat|
|19||42||2||Note off quantisation values|
|20||44||2||Note on quantisation values|
|21||46||2||Polykey pressure quantisation values|
|22||48||2||Control change quantisation values|
|23||50||2||Program change quantisation values|
|24||52||2||Overall pressure quantisation values|
|25||54||2||Pitch wheel quantisation values|
|26||56||2||System messages quantisation values|
|27||58||3||Reserved - used during playback|
|28||61||1||Default velocity for track. 0 = none assigned|
|29||62||1||Reserved - used during playback|
|30||63||1||Reserved - used during playback|
Track flags :
|5||Record to track|
|6||On/off flag - used internally|
|7||Track is selected|
A.2. Track Data Files
These are held as variable length files. The file name is the same as the corresponding header file, but with a '.D' extension. The file holds events in the same format as used internally.
Each event is held as a 2 byte delta-time, followed by up to 3 bytes of data. The delta time expresses the number of 256ths of a beat between two events. If an event does not use all three data bytes (e.g. program changes need only 2 bytes), the unused byes can be any value. The only exception to this is for system exclusive events which require unused bytes to be set to hex FF.
The last event in any track data file, (or internally stored track) has a delta time of zero and a command byte value of hex FF, used to indicate the end of the track. This is the 'System Reset' command byte and therefore this command cannot be transmitted by the sequencer.
A.2.1. Internal system exclusive events
Internal system exclusive events are held as a number of events in a special format. The first event is :
|Delta time||2 bytes - any value|
|'System Exclusive'||1 byte, Hex F0|
|Manufacturer code||1 byte, 'System exclusive SAM' - as defined in Configuration utility|
|Command type||1 byte, 1-6|
Data events are specific to each command type, but all have delta time values of 0. In all cases the data value stored in each byte must not exceed 127. Many data values must therefore be re-formatted to a series of 7 bit values.
Command type 1: Set Tempo
The tempo value is held in two events, as the tempo value in tenths of a beat per minutes * 71583. The format is designed to be easy for the sequenecer to use during run-time.
First event holds tempo value MOD 65536 in the following format :
|1||(T1 MOD 256) DIV 2|
|2||(T1 DIV 512)|
|3||(T1 BAND 1) + (T1 BAND 256) DIV 128|
Where T1 = (tempo (in tenths of a beat per minute)*71583) MOD 65536
Second event holds tempo value DIV 65536, in similar format to above :
|1||(T2 MOD 256) DIV 2|
|2||(T2 DIV 512)|
|3||(T2 BAND 1) + (T2 BAND 256) DIV 128|
Where T2 = (tempo (in tenths of a beat per minute)*71583) DIV 65536
This format enables tempos from 0.1 to nearly 6000 beats per minute to be defined.
Command type 2: Accelerando, and 3: Ritard
Two events are used to store the variation in tempo and the number of beats over which the change is to occur.
First event holds tempo variation value MOD 65536 in the following format :
|1||(V MOD 256) DIV 2|
|2||(V DIV 512)|
|3||(V BAND 1) + (V BAND 256) DIV 128|
The second event holds the tempo variation DIV 65536, and the number of times the tempo variation must be added to the master tempo value within the sequencer in order to affect the overall change.
|1||(V DIV 65536)|
|2||(N DIV 128)|
|3||(N MOD 128)|
- V = (tempo variation (in tenths of a beat per minute)*71586)/number of increments
- N = Number of increments necessary
The tempo variation is added to the master tempo value every 1/16 of a beat during playback. A tempo variation of 10 bpm over 4 beats is equivalent to 10/16 = 0.625 of a beat every 1/16 of a beat, with 4*16 = 64 increments.
The maximum number of increments possible is 16383 (or a duration of 1023 beats) and the maximum tempo variation is 117 beats per increment, or 1875 beats per beat (more than enough for any change).
Note that Ritard is held in exactly the same format as for accelerando, except that the tempo variation value is held in two's complement form as (8388608-tempo variation).
Command type 4 : Start Loop
One event is used to store a 14 bit value allowing a maximum of 1023 loops:
|1||(N MOD 128)|
|2||(N DIV 128)|
Command type 5 : End Loop
This command has no data events and is simply followed by the terminating End System Exclusive event.
Command type 6 : Set Default Velocity
One event is used to store the new 7 bit default velocity value.
|1||Velocity value (0-127)|
As for the track default velocity, a value of 0 results in the velocity value associated with the note on events being used, rather than the default velocity value.
Last event :
|Delta time||2 bytes - always 0|
|'End system exclusive'||1 byte, Hex F7|
|Unused||2 bytes, set to FF|
A.3. Song file format
Song data files are simple in structure - they consist of the track data for each track that forms part of the song held as a single file block, with a '.B' extension.
Song header files are 2176 bytes long and consist of a 128 byte area that defines the song, followed by the track header information for all 32 tracks within the sequencer.
The first 128 bytes are as follows :
|Field No.||Offset||Length (bytes)||Description|
|2||8||2||Song tempo, in tenths of a beat per minute, in low-high format.|
Binary 1 = track forms part of song.
|4||42||80||Notes, held as five 16 character fields|
|6||126||2||Length of song in events (i.e. sum of track lengths for all tracks in song)|
A.4. Configuration file format
A configuration file holds descriptions of keyboard voice and percussion notes with various additional values used to control the user interface. The file has a fixed length of 4100 bytes.
|Field No.||Offset||Length (bytes)||Description|
|1||0||2048||Voice descriptions. Held as a contiguous block of 128 16 character fields|
|2||2048||2048||Percussion note descriptions. Held as a contiguous block of 128 16 character fields|
|3||4096||1||Binary 1 = use mouse
Binary 0 = do not use mouse
|4||4097||1||Double click length in 50ths of a second. Must be one of 4, 8, 12, 16, 20, 24, 28, 32, 36|
|5||4098||1||Binary 1 = Keyboard uses a channel for percussion
Binary 0 = Keyboard uses a voice for percussion
|6||4099||1||Channel or voice number used for percussion|
|7||4100||1||SAM System Exclusive code|
B. Appendix B - Troubleshooting Guide
|Problem||Description / Resolution|
|Cannot record||Identified by 'events free' counter not decreasing during record mode|
If recording still does not work, there may be a hardware fault. First try switching the Coupé off and trying the other MIDI cable. If this does not work, do the following:
If the events free counter still does not decrease, it is likely that there is a fault with the MIDI in port on the Coupé. If it does either the keyboard is not correctly setup to transmit MIDI data, or the MIDI out port on the keyboard is faulty.
|Cannot playback||Identified by no notes being played on the attached keyboard.|
Check that :
|Notes||are displayed in the event / graphical editor when editing a percussion track|
First check the definition of a percussion track in the configuration utility. Ensure that the method of access to percussion notes is properly assigned to either 'channel' or 'voice' and that the value is correct.
Check that the percussion note descriptions have been correctly entered.
Finally check that the track being edited has the correct channel and voice assignments to enable the sequencer to identify the track as a percussion track. Note that an assignment of 'None' for either voice or channel will prevent a track being identified as a percussion track.
|Song play incorrect||wrong tracks play back or tracks missing|
Check that the song is defined to include the correct tracks.
Remember that the sequencer does not adjust the song definition if a track is copied to a new track number and the old track deleted. If you make such a change, the song definition must also be changed.
|System commands||(set tempo, embedded loops etc.) not actioned|
Edit the track using the event editor. The system control events should be displayed with the description 'Sys. Ex. SAM'. If they are not then the 'System Exclusive SAM' code in the configuration file does not match that in the control command.
Check the configuration file - if the value defined there is correct the control events in the track must be edited in the event editor as follows :
|Not enough memory for edits but events free is not low|
|This can occur if the cut/paste buffer contains a substantial amount of information. Try clearing the buffer by editing a very small or empty track in the event editor and immediately selecting 'Cut'. The message 'No block marked - clear buffer ?' is displayed. Answer 'Yes' to this question, exit the event editor and try again.|
|Mouse||is not working|
The most likely reason for this is that the configuration file specifies that mouse operation is turned off. Use the configuration utility to turn the mouse one - if it is working operation should commence immediately.
If this does not fix the problem, save the configuration file (with mouse turned on), switch the computer off and check that the mouse is correctly connected and try again. If this fails to work then the mouse may be faulty. Check with another application that uses the mouse.
|Playback||is uneven / stutters|
If playback is uneven, with short interruptions, or even becomes corrupted, the sequencer is failing to keep pace with the music being played back.
This can be for two reasons :
C. Appendix C - Hints and Tips
Removing unwanted MIDI data
If you have a track which contains MIDI data of a particular type (e.g. pitch wheel or after touch data) which is not required, you can use Merge in conjunction with the Output filters to selectively remove the data as follows :
- Turn the appropriate Output filter 'ON' (so that the button depresses)
- Merge the original track into another track
- Turn the output filter 'OFF' again
- Check that the data in the new track is as required
- Delete the original track
Removing unwanted note information
The easiest way to remove a spurious note from an otherwise acceptable recording is by using the graphical editor as follows :
- Select the track to be edited and use the graphical editor
- Use the forward and fast forward buttons to locate the position within the track that the error occurs
- Use 'Play' within the graphical editor to check the correct portion of the piece has been found - if necessary reduce the number of beats displayed on screen by changing the 'Width' setting to make this easier
- Using the scroll bar and 'up' and 'down' buttons on the right hand side of the screen locate the note to be removed.
- Click on the note and press the delete key (or right hand mouse button)
- Confirm the deletion of the note and it will be removed without altering any other data
Copying selected chuncks of a track
The event editor can be used to copy a sequence from one track to another using the 'Cut and Paste' option as follows :
- Edit the track containing the sequence to be copied
- Mark the block by clicking on the event descriptions. (See the section on marking blocks within the Event Editor chapter if this is not clear).
- Cut the block to the Cut / Paste buffer
- Quit the edit - the track will be left unchanged (Note : if an 'in situ' edito is being performed because memory is low, Paste the data back in following the Cut before leaving the Event editor).
- Edit the track to contain the copy of the sequence
- Mark the start position of the block by clicking on the event description
- Click on 'Paste' and the data will be copied into the second track.
Synchronising with other MIDI devices
It is sometimes necessary to synchronise output from the Sequencer with another device - perhaps you have a drum machine or a keyboard with a Song Play function which you wish to use to play additional MIDI information to that transmitted by the Sequencer. MIDI uses 'Clock' signals to synchronise devices, together with 'Start', 'Stop' and 'Continue' messages. If the device you wish to control responds to these messages a track provided on the system disk can be used to achieve this, as follows :
- Load the track 'MIDIsync' from the system disk.
- Set the lead-in on the track to the beat number when the attached device is to start playing
- Edit the track using the event editor
- Click on the 'Sys Ex SAM : Start loop' description and elect to change the command.
- Set the repeat count to the duration of the piece in beats, less one, as the repeated block will be played once before repeating.
- Exit the editor using Done
- If appropriate include the track as part of the song being played by the sequencer.
- Ensure that the devices being controlled have their clock set to 'External' (if possible). This ensure that the device will not send it's own MIDI clock data and will respond to the clock signals sent by the sequencer.
If you more than one song in memory being controlled in this way you must have multiple copies of the track.
Using heavy quantisation
If a track is quantised heavily then timing can be uneven, with note lengths being distorted. To avoid this quantise the track gradually, merging it into itself at each stage. Start with 1/32 quantisation (or even lower), merge the track into itself and then progress upwards to 1/16, 1/8 etc. as far as is necessary.
The rounding of event times is less likely to become distorted in this way.
In order to be able to identify tracks for different songs easily, prefix each track name with two letters and an underscore. (The screen shots in this manual show examples). This makes tracks easier to identify in directory listings and also reduces the possibility of inadvertently overwriting a track for one song with a track for another of the same instrument.
D. Appendix D - Developing Utility Programs
This section is intended to give a brief overview of how the functionality of the sequencer can effectively be enhanced through the development of additional programs. These may either be standalone, i.e. entirely separate programs, or modules designed to be called from the sequencer's utilities menu with the same user interface as the main program.
Development of standalone programs is straightforward. They act simply on MIDI data held in tracks or song files produced in the main sequencer program, or maybe enable the creation of new files. The structure of track and song files is given in appendix A. Any files produced by a utility program should match the format specified. The sequencer need not be loaded to use standalone programs.
There is an enormous range of programs that could be developed - from fancy editing procedures, with search / replace features for example, to full-blown score editors and print programs.
A utility program that can be loaded from the 'Utils' function within the main sequencer is termed 'integrated' as there would be no need to exit the sequencer in order to access the program.
Utilities that are to be used in this way should obey the following rules :
- make no use of the system heap
- open no additional screens
- load program 'main' on exit
- do not alter the clear address of the number of pages of memory allocated to BASIC
- do not change the screen mode from MODE 3
- do not alter any vectors in the system variables area
Utilities can be further enhanced by making use of the same user interface as used in the main program. This will enable utilities to look and feel like part of the main program, in the same way that the configuration utility does.
If you wish to develop utilities to use the user interface routines you will need to obtain an additional manual from the author, together with software to assist in development. Prices for these items have not yet been finalised.