@node "Midi" NEW MIDI FEATURES MIDI controllers Setting a MIDI controller to a different value in OctaMED V6 involved a less than ideal process. Using a combination of player command types 05 and 00, you could set any MIDI controller you choose. Command 05's level is the controller number, command 00's the controller value. So if OctaMED came across this in a song: --- 00509 --- 00004 then OctaMED would set MIDI controller number 9 to 4. The obvious disadvantage with this is that it takes two lines: one to provide the controller number, another to provide the value. The 05 and 00 player command types can still be used, but this window cuts the setting of MIDI controllers down to one line. You define command types 31 - 3F to set your chosen MIDI controller numbers to the value given by the command level you use in the song. For example, you can define player command type 35 to set MIDI controller number 12. Then, if you use command 3506 in your song, OctaMED sets MIDI controller number 12 to 6. So, only one player command is needed to set MIDI controllers, instead of two. MIDI controller definitions are saved and loaded with songs. The MIDI Controllers window Define your MIDI controller player command set by selecting Controller Commands from the MIDI menu. This opens the MIDI Controllers window. Starting at the top of the window, the slider selects a player command type. Choose one of types 31 to 3F. The xx in the value refers to the variable player command level, which is the value to which the controller should be changed. Clear Current clears the selected player command type's setting; its controller type is set to Standard [MSB], its number to 0. Clear All does this to all player command types. The other gadgets show the selected command type's setting: its controller type and number. The controller type can be Standard, RPN or NRPN, together with [MSB] or [LSB]. Although controller numbers can be as high as 16383, Standard controllers only reach 127. Controller types Standard sets a "standard" MIDI controller, which uses the Control Change MIDI message to change its value. Some standard controllers can be changed using existing player commands; for example, command 17 sets the volume controller (number 7). Some other controllers available are foot controller (number 4) and balance (number 8). You will find a list of standard controllers in any good book on MIDI. RPN sets a Registered Parameter Number controller, which uses RPN MIDI messages. These can be thought of as extensions to standard controllers, as the Control Change message only supports 128 controllers. Each extended controller is defined in the MIDI standard; an example is pitch bend sensitivity (number 0). NRPN sets a Non-Registered Parameter Number controller. These are similar to RPN controllers, except that the controllers are not defined in the MIDI standard. Instead, individual makers of MIDI equipment are free to define their own "custom" controllers. So each MIDI device has a different set of NRPN controllers. Please refer to your device's manual for further details. When using your MIDI controller player command type in your song, you set the player command level to the required new controller value. Depending on the controller, this value can be 7-bit (anything from 0 to 127), or 14-bit (0 to 16383). For controllers taking 7-bit values, the controller type should be [MSB]. For those taking 14-bit values, you may need to define two separate command types: one [MSB], one [LSB]. [LSB] stands for Least Significant Byte. It is not necessary to use a controller's LSB value, but it enables you to "finetune" the MSB value (Most Significant Byte). For example, the pitch bend sensitivity RPN controller can be set in halfsteps using MSB, or 1/128th halfsteps using a combination of LSB and MSB. If you need to use a controller's LSB value, firstly define two separate command types. Their controller numbers should be the same, their controller types also identical except for the difference in LSB and MSB. Then, enter the two player commands at the appropriate point in your song; the LSB must come before the MSB. For example, to set up and change the pitch bend sensitivity controller: 1) Select command 31 (for example). Set its controller type to RPN [MSB], its controller number to 0. 2) Select command 32 (for example). Set its controller type to RPN [LSB], its controller number to 0. 3) To change the controller to value 900 (for example), firstly divide 900 by 128; the answer is 7 remainder 4. 4) The quotient is the MSB value, the remainder the LSB value. LSB must be sent first, so enter player command 3204 into the song. Immediately afterwards, enter player command 3107. This value 900 can be thought of as 7 "normal" steps plus 4 "finetuned" steps. In this particular example, 4 finetuned steps is unlikely to make a great deal of difference, so it would be less hassle just to define the [MSB] controller and use only command 3107. MIDI Slave Mode Introduction Using the MIDI menu's Slave Mode Active item, you can turn your Amiga into a MIDI device! Why on earth would you want to do that? Well, if you're lucky enough to own two Amigas, you can use the sound channels of both Amigas together, to play a total of 8 samples at once rather than the usual 4. You do this by using one Amiga to control the other, as if it were a MIDI keyboard. Another use for the feature is to completely ignore OctaMED's sequencing capabilities, and to use your Amiga as simply another MIDI device in your collection. The Amiga could be controlled by a dedicated MIDI sequencer, perhaps even on a different make of computer. The idea is: The Amiga receives information that a note of a given pitch is to be played on a given MIDI channel. It then tries to match that information with an instrument in memory. If a matching instrument is found, that instrument is played at the given pitch. Two settings are matched: The MIDICh slider. The instrument that is played has a MIDICh setting equivalent to the MIDI channel information received. For example, if the note is to be played on channel 4, the played instrument has MIDICh set to 4. The pitch. Optionally, an instrument can have a Default Pitch set. If so, that instrument has a range of 3 octaves, its lowest note being the Default Pitch. So the pitch received falls within the pitch range of the played instrument. One slight drawback is that each instrument can only be played using one particular sound channel. That sound channel is received as the MIDI preset number. It may be difficult to understand at first, so here's how to set up each of the two examples of the feature's usage: joining two Amigas together, and using the Amiga as an additional MIDI device. Joining two Amigas together This works best in 4-channel mode, for highest quality. You compose your song using one of the Amigas (call it the "master"), and use the other Amiga (the "slave") only as a note player. The blocks in your song should be 8 tracks wide: Use tracks 0 - 3 for instruments played by the master Amiga, and tracks 4 - 7 for those played by the slave Amiga. Here's how you set it all up: 1) Attach a MIDI interface to each of the two Amigas. Connect MIDI OUT on the master Amiga to MIDI IN on the slave Amiga. 2) Load OctaMED into both Amigas. Select MIDI Active from the MIDI menu on the master Amiga. Select MIDI Active, Input Active and Slave Mode Active (all in the MIDI menu) on the slave Amiga. Make sure both Amigas are in 4-channel mode. 3) Now to set up the instruments. Go to each Amiga in turn, and load the instruments you want to be played on that Amiga. So if you want a particular couple of instruments to be played on the master Amiga, load them into the master Amiga. Instruments to be played on the slave Amiga should be loaded into the slave Amiga. The same instrument can't "share" computers; you must assign each instrument to either the master or the slave Amiga. 4) On the slave Amiga, give each loaded instrument a MIDI channel number. In other words, set each instrument's MIDICh slider to an appropriate value. As far as possible, try to give each instrument a different channel number. There are 16 different MIDI channels, so if the slave Amiga has no more than 16 instruments loaded, there shouldn't be any MIDI channel clashes. If clashes are unavoidable - in other words, there are more than 16 instruments - you must set a default pitch for every instrument which shares a MIDI channel number. Such instruments have a 3-octave pitch range; the Default Pitch is the instrument's lowest note. For example, suppose that instruments 08 and 0J share MIDI channel 5. When the slave Amiga receives a MIDI message that a note should be played on MIDI channel 5, the slave Amiga wouldn't know which instrument to play. Should it be 08 or 0J? It's decided by the pitch of the note. Perhaps instrument 08 has a 3-octave range starting at C-6, and 0J a range starting at C-1. Then if note D-7 were received on MIDI channel 5, OctaMED would play instrument 08 at pitch D-7, because D-7 is within 08's range (but not 0J's, whose range stops at B-3, 3 octaves above C-1). If the ranges overlap so that a received note could be played on one or more instruments, it's played on the first instrument encountered; that is, the one with the lowest instrument number. 5) On the master Amiga, you actually need two categories of instrument: those to be played on the master Amiga (which you've loaded), and MIDI instruments that correspond to each instrument you've loaded into the slave Amiga. Now, let's say you've loaded a sample named "Fantasia" into the slave Amiga, and given it MIDI channel 6. On the master Amiga, a) Select any empty instrument slot b) Open Instrument Properties (Instr menu) c) Change the instrument Name to "Fantasia [slave]" (for example) d) Slide the MIDICh slider to 6 (the same channel number as Fantasia) e) You must also tell OctaMED which sound channel on the slave Amiga that Fantasia should be played through, using the Preset slider. So if Fantasia is to be played through channel 2, slide Preset to 2. Because there are 4 sound channels, each played using one of tracks 0 - 3, you can slide Preset to 0, 1, 2 or 3. Be careful when deciding which instrument should be played through which channel. If you've loaded up to 4 instruments into the slave Amiga, you just need to assign a different sound channel to each instrument. If you have more than 4 instruments, though, you should take care that no two instruments are set to play through the same channel at the same time, because this is impossible! This depends on your song. Remember that in 4-channel mode, sound channels correspond to tracks. For example, notes played on track 1 are always played through sound channel 1. f) Close Instrument Properties Now when you want to play, say, note G-2 using the Fantasia instrument, you should enter a G-2 using the Fantasia [slave] instrument on the master Amiga. Repeat steps a to f for each instrument you've loaded into the slave Amiga. 6) Now compose your song! Use 8-track blocks. For instruments played through the master Amiga, use tracks 0 - 3 as usual. For those played through the slave Amiga, use tracks 4 - 7 and the MIDI instruments you've set up to correspond with the slave Amiga's instruments. Then just play the song: it should be quite an amazing effect! Using your Amiga as a MIDI device Again, this works best in 4-channel mode, for highest quality. The procedure is much the same as for joining two Amigas together. 1) Connect MIDI OUT (or MIDI THRU) on the external sequencer to MIDI IN on the Amiga. 2) Load required instruments into the Amiga. 3) Set up the instruments as in step 3 of part 13.2.2. 4) On your external sequencer, play a particular Amiga sample by playing a note through the MIDI channel corresponding to the sample's MIDICh value, at a pitch within the sample's range (if a range is set). If you're unsure of how MIDI pitches correspond to OctaMED pitches, switch Input Active and Edit mode on and try entering a note, noting its pitch. Other notes a) Slave mode only responds to MIDI Note On messages. So any effects received, including player commands, will be ignored. b) You can, however, use player command 0C (set volume) with notes played by the slave Amiga. The instrument's default volume (in Instrument Properties) changes to the appropriate level when a 0C is received. The Instrument Properties slider isn't updated, though, for efficiency reasons. c) To reduce the amount of MIDI data sent, you should really switch on Suppress NoteOff on all of the MIDI instruments defined on the master Amiga. Thanks to Joe Pierlejewski for suggesting improvements to this feature. Other new features and player commands An Immediate Preset Change item has been added to the MIDI menu. When a particular instrument's Preset value is changed in Instrument Properties, usually a preset change message is sent the next time a note is played with that instrument. With this item on, a preset change message is sent straight away. So as you move the Preset slider, OctaMED is busy sending a preset change message for every value that the slider takes. Player command 0FF7 suspends play until all MIDI messages have been sent. This is mainly for use at the very start of songs, if you have long initialization messages that you need to send to your device before playing starts. You can now use both digits of the command level with command type 08 (set Hold value). So much longer holds can be created. "Raw" MIDI messages - that is, messages that haven't been saved using OctaMED's MIDI Message Editor - are now loaded correctly. Also, after a message has been sent using Send Msg, a confirmation message is now shown. SMF Load Options has moved to the bottom of the MIDI menu. @{" Contents " link "Main" 0} @endnode