Io Manual

Io User Manual
1. Introduction
Io is a MIDI retrofit system for the Roland Jupiter 4 synthesizer. It consists of two boards that can be used either parallel or individually.
One of the boards is the Keyboard Assigner Extension and it enables MIDI control over pitch note, pitch bend, cutoff frequency, volume and portamento. It also synchronizes the arpeggio to MIDI clock and has two powerful LFOs on pitch bend and cutoff frequency. LFO settings are storable and recallable.
The other board is a complete replacement of the Jupiter's original patch programmer microprocessor with full MIDI specification and lots of functional enhancements.

2. Operation of the Patch Programmer
All the original functions of the Jupiter 4 programming are kept. The following functions are added:
- Stored patches can be edited.
- All programmable sliders and switches send and receive MIDI control change messages.
- Patch memory is expanded 8 times the original to 64 patches.
- MIDI Program Change messages are sent and received.
- MIDI channel can be changed by using combination of memory buttons.
- Patches can be copied from one memory place to an other.
- A so-called Second Page that enables control of the added LFOs and setting of velocity control.
- Firmware is upgradable thru MIDI.
- Noise level can be controlled as a new patch parameter
- Memory dump for importing and exporting patches
- Switchable MIDI Thru

2.1 Editing stored patches
The active patch can be edited by moving sliders or changing position of the switches. Patch edit by using MIDI control change messages sent from an external device is also possible.
Changes are temporary until the user stores patch using WRITE and PROTECT.

2.2 Accessing parameters using MIDI messages
All the 16 programmable sliders and 9 programmable switches send and recieve MIDI control change messages on the active MIDI channel.
List of MIDI messages are detailed in the MIDI implementation chart.

2.3 Accessing patch memory
The original patch programmer let the user store 8 patches. The Io has expanded memory space and lets the user store 64 patches.
These 64 patches are organized into 8 banks. The PRESET buttons combined with the COMPU-MEMORY switches select actual bank.
PRESET BASS selects first bank, PRESET STRING the second bank, PRESET FUNKY the third bank, PRESET PIANO the fourth bank and so on...
Once a bank is selected using the PRESET + COMPU-MEMORY switches, the active bank is memorized and pushing a COMPU-MEMORY switch accesses patch in the active bank.
Every time a patch is changed the MIDI message "Program Change" is sent.

2.4 Changing the MIDI channel
The Io sends and receives MIDI messages on the active channel. The active channel can be changed using MANUAL and PRESET buttons.
MIDI channels greater than ten can be selected by pushing MANUAL + PRESET BASS + the buttons from PRESET STRING to PRESET SAX.

2.5 Copying patches
When MANUAL switch is pushed together with a COMPU-MEMORY switch then the active patch is "frozen".
Still pushing MANUAL then changing to another patch - even in another bank - copies this frozen patch to the new patch place.
Then this temporary copy can be edited or stored using WRITE + PROTECT.

2.6 Accessing additional controllable parameters
When Patch Programmer Extension is used together with Keyboard Assigner Extension as a full kit it is meaningful to access the extra parameters with the Jupiter's own sliders and switches. This is achived by activating a so-called Second Page by pushing MANUAL and a COMPU-MEMORY switch together.
When Second Page is selected the following sliders and switches act different and send MIDI messages to control additional parameters on the Keyboard Assigner Extension.
LFO Rate - Speed of Pitch Bend LFO
VCO Mod - Depth of Pitch Bend LFO
LFO Waveform - Waveform of Pitch Bend LFO
Sub Osc - MIDI Sync of Pitch Bend LFO
PW Man - Trigger mode of Pitch Bend LFO
HPF - Speed of Filter LFO
VCF Mod - Depth of Filter LFO
VCF Env - Noise Level
Key Fol - Waveform of Filter LFO
Noise - MIDI Sync of Filter LFO
VCF Polarity - Trigger mode of Filter LFO
Level - Arpeggio Clock Rate
VCO Waveform - Velocity assigned to (OFF: none, Saw: volume, Square: filter, Pulse: pitch)
VCO Range - When velocity assigned to filter (4': filter, 8': filter LFO speed, 16': filter LFO depth)
- When velocity assigned to pitch (4: portamento, 8': pitch LFO speed, 16': pitch LFO depth)

The LFO settings are stored and recalled for the first 32 patches.

2.7 Firmware upgrade
Additional functions, bugfixes or customs preset sounds can be downloadable via MIDI SysEx file.
Load the custom .syx file to your favourite SysEx manager program (for example c6 from Elektron) and start sending it to Jupiter.
Within a few seconds firmware is upgraded.

2.8 Noise level adjustment
Noise Level can be adjusted as an additional patch parameter. The slider control is on the Second Page VCF Env. This parameter is stored and restored with the patch.

2.9 Memory dump
Pressing the rightmost three patch buttons (TRUMPET, SYNTH, THE FORCE) together invokes a memory export in a SysEx stream form. This stream can be stored with a SysEx libarian program and can be sent back to the JP4.

2.10. Switchable MIDI Thru
As default after power on, the MIDI Out also serve as MIDI Thru. This soft Thru can be switched off with controller message CC 127 and switched back with CC 126.
When recording slider moves in multiple takes into a sequencer it is recommended to switch off MIDI Thru to prevent rerecording of previously recorded sequences.

3. Operation of the Keyboard Assigner Extension
This board responses to MIDI messages on the active MIDI channel and acts as following.
The Note On messages that are in the range of 36-91 simulates a key on while Note Off messages release key.
The velocity information can be freely assigned to one of seven controllable parameters.
Pitch Bend messages are transformed to control voltages and simulates pitch bend on the Jupiter's bender stick.
The Aftertouch messages are transformed to control voltages and simulates tweak on Portamento knob.
The Modulation and Breath control change messages drive the Low Pass Filter Cutoff Frequency.
The Volume control change messages set overall volume of the Jupiter.
Furthermore there are two Low Frequency Oscillator for modulation of pitch bend and cutoff frequency.
LFO settings are stored in nonvolatile memory.

3.1 Setting of active MIDI channel and velocity assign
The following System Exclusive message sets up active MIDI channel and velocity assign.
x: MIDI channel-1 in hexadecimal form
y: velocity assigned to
0 - none
1 - volume
2 - filter cutoff
3 - filter LFO speed
4 - filter LFO depth
5 - pitch bend LFO speed
6 - pitch bend LFO depth
7 - portamento

The setting is stored in nonvolatile memory and restored at every power-on.
When used in parallel with Io Patch Programmer this SysEx is sent every time user change MIDI channel.

3.2 Controlling filter cutoff
Shaping the sound by controlling the cutoff of the low pass filter is an exciting feature. The resolution of the control signal is 10 bit or 1024 steps on Io.
As MIDI control change messages are 7 bit resolution it needs two type of messages to address the full scale.
The Modulation messages address the upper 7 bit while Breath messages address the lower 7 bit.
This means that rough movement can be achived by sending a Modulation message while the smooth action is taken by Breath message.

3.3 Using Low Frequency Oscillators
Two Low Frequency Oscillators are available as modulation sources: one for pitch bend and one for low pass filter cutoff frequency.
Both LFOs have parameters controllable via MIDI Control Change messages.
There are four basic waveforms for an LFO: triangle, square, saw, reverse saw.
Two additional parameters determine the behaviour of the LFO.
The Sync flag indicates that the LFO is synced to MIDI Clock which means the speed of the LFO is a proportion of the Tempo.
The Trigger flag indicates that the LFO is one-shot like an envelope.
LFO Speed and LFO Depth parameters have value between 0-127.
Speed of LFO goes up to few hundred Hertz which is useful for making FM like droning sounds.
Sixteen LFO settings can be stored in memory and recallable by sending MIDI Program Change messages as below:
Program Change 0-15: recalls LFO setting.
Program Change 64-79: stores LFO setting.

3.4 Symchronizing Arpeggio to MDI Clock
When there are no MIDI Clock messages received the Arpeggio Rate is under manual control.
When the clock signal is present the Arpeggio Rate is determined as a proportion of the tempo.
The proportion can be set by a Control Change (CC 15) message with the following parameters:
1 - Half note
2 - Fourth note
3 - Triplet
4 - 8th note
5 - 8th Triplet note
6 - 16th note
7 - 32nd note

4. MIDI Implementation
------------------------------------------------ Key Assigner Extension
x: Active MIDI channel
Note On: 9x nn vv | nn (note number) = 36-91, vv (velocity) = 0: off, 1-127: as velocity assigned
Note Off: 8x nn vv | nn (note number) = 36-91
Program Change: Cx pp | pp (patch) = 0-15 (recall), 64-79 (store)
Conrol Change: Bx cc vv | cc (control number), vv (value)
CC 01 - Filter MSB
CC 02 - Filter LSB
CC 07 - Volume
CC 09 - Pitch LFO Speed
CC 10 - Pitch LFO Depth
CC 11 - Pitch LFO Waveform
CC 12 - Filter LFO Speed
CC 13 - Filter LFO Depth
CC 14 - Filter LFO Waveform
CC 15 - Arpeggio Sync
value 1: Half note
2: Fourth note
3: Triplet
4: 8th note
5: 8th Triplet note
6: 16th note
7: 32nd note

System Exclusive message:
x: velocity assigned to
0 - none
1 - volume
2 - filter cutoff
3 - filter LFO speed
4 - filter LFO depth
5 - pitch bend LFO speed
6 - pitch bend LFO depth
7 - portamento

------------------------------------------------ Patch Programmer
x: Active MIDI channel
Program Change: Cx pp | pp (patch) = 0-63 COMPU-MEMORY, 88-103: PRESET, 127: MANUAL
Control Change: Bx cc vv | cc (control number), vv (value)
CC 16 - Resonance
CC 17 - Cuf Off Frequency
CC 18 - VCA Sustain
CC 19 - VCF Sustain
CC 20 - High Pass Frequency
CC 21 - LFO Rate
CC 22 - Level
CC 23 - VCF Envelope Amount
CC 24 - VCA Release
CC 25 - VCA Decay
CC 26 - VCA Attack
CC 27 - VCF Release
CC 28 - VCF Decay
CC 29 - VCF Attack
CC 30 - VCF Modulation Amount
CC 31 - VCO Modulation Amount
CC 32 - PW Mod (0: Mod, 1: Manual)
CC 33 - Keyboard (0: 3, 1: 2, 2: 1, 3: 0)
CC 34 - Sub Osc (0: On, 1: Off)
CC 35 - LFO Waveform (0: Sine, 1: Square, 2: Saw, 3: Reverse Saw)
CC 36 - Noise (0: On, 1: Off)
CC 37 - PW (0: 4, 1: 3, 2: 2, 3: 1)
CC 38 - Osc Waveform (0: Saw, 1: Square, 2: PW, 3: Off)
CC 39 - Osc Range (0: 4', 1: 8', 2: 16')
CC 40 - Polarity (0: Inv, 1: Norm)
CC 41 - Noise level

Control change messages are both sent and received.
There is an intelligent MIDI merge function implemented to combine incoming MIDI messages and the generated CC messages.

System Exclusive messages:
F0,7D,4C,4B,02,0A,pp,F7 - Patch dump request
pp: patch number (0-63)
On response the parameters are sent as MIDI CC messages (CC16-CC41) as seen above.