How to use your Fourays
Fourays is a standards compliant USB MIDI device. Just plug in to your DAW and start sending notes as you would any other hardware synthesizer.
Everything on this page is what Fourays does on the wire: the channels, the CC numbers, the key switches and the SysEx. You do not have to learn any of it. The Fourays plugin puts all of it on a panel with knobs and switches, and that is the easier way to drive the instrument.
This page is the reference underneath. Read it if you want to sequence the key switches yourself, drive Fourays from something that is not a DAW, or write your own editor.
Default configuration
Each chip has 3 voices, one envelope generator and one noise generator. Each chip has three audio outputs and three gate outputs. The wiring of voices to outputs is fixed and cannot be changed, but you can change the envelope controlling each voice and the noise mix to each output.
Controls
The envelope and noise generators are controlled using MIDI note key switches and CC messages. These settings control how the envelope generator affects each voice, the character of the noise generator and which outputs it is connected to. The defaults are:
| Chip | Control channel | Envelope period CC | Noise mode | Noise period CC |
|---|---|---|---|---|
| 1 | 13 | 15 | CC | 16 |
| 2 | 14 | 15 | CC | 16 |
| 3 | 15 | 15 | CC | 16 |
| 4 | 16 | 15 | CC | 16 |
The chip control channels are 13 to 16 so they sit clear of the twelve note channels. Earlier firmware defaulted them to 2 to 5, which is in the middle of the note range.
The noise generator periods can also be controlled using note value or by note velocity.
You can only assign CC numbers 12 to 119 to these functions.
Key switches
The key switches operate by playing a note with velocity > 63 to turn a function on, and with velocity <= 63 to turn a function off. The notes should be played on the chip's control channel. The functions are:
| MIDI Note | Function |
|---|---|
| 1 (C#-1) | Envelope for voice A |
| 2 (D-1) | Envelope for voice B |
| 3 (D#-1) | Envelope for voice C |
| 4 (E-1) | Envelope HOLD mode |
| 5 (F-1) | Envelope ALTERNATE mode |
| 6 (F#-1) | Envelope ATTACK mode |
| 7 (G-1) | Envelope CONTINUE mode |
| 8 (G#-1) | Noise mix with voice A |
| 9 (A-1) | Noise mix with voice B |
| 10 (A#-1) | Noise mix with voice C |
The key switch note assignments cannot be changed.
The envelope modes are:
Voices
By default all 12 voices are assigned to channel 1, and Fourays performs in polyphonic mode. Each voice can be independently transposed and detuned using CC messages on channels 2 through 13 by default.
| Chip/ Voice | Note channel | Control channel | Transpose CC | Detune CC | Filter CC* |
|---|---|---|---|---|---|
| 1 / A | 1 | 2 | 13 | 14 | 74 |
| 1 / B | 1 | 3 | 13 | 14 | 74 |
| 1 / C | 1 | 4 | 13 | 14 | 74 |
| 2 / A | 1 | 5 | 13 | 14 | 74 |
| 2 / B | 1 | 6 | 13 | 14 | 74 |
| 2 / C | 1 | 7 | 13 | 14 | 74 |
| 3 / A | 1 | 8 | 13 | 14 | 74 |
| 3 / B | 1 | 9 | 13 | 14 | 74 |
| 3 / C | 1 | 10 | 13 | 14 | 74 |
| 4 / A | 1 | 11 | 13 | 14 | 74 |
| 4 / B | 1 | 12 | 13 | 14 | 74 |
| 4 / C | 1 | 13 | 13 | 14 | 74 |
* Filter CC applies only if your Fourays has the VCA/VCF/CV analogue extension board.
You can only assign CC numbers 12 to 119 to these functions.
Fourays understands the following standard MIDI messages on the AY control channels:
| CC number | CC value | Function |
|---|---|---|
| 7 | 0-127 | channel volume |
| 120 | 0 | all sound off (this channel only) |
| 121 | 0 | reset all other controllers |
Gate outputs
There are twelve gate outputs, three per chip, labelled the same way as the voices: 1A to 4C. They come off the chips' I/O ports, not the audio, so a gate is not tied to the voice it is named after.
| Gate mode | What opens the gate | Settings it uses |
|---|---|---|
| Voice | An AY voice playing a note | AY Voice |
| Clock | The MIDI clock, divided | Clock Div. |
| Note | One MIDI note on one channel | Note Channel, Trigger Note, Gate Len. ms, Min. Velocity |
By default gates 1A to 3B follow the AY voice of the same number, and 3C to 4C divide the MIDI clock.
Note mode is for driving other equipment. Gate Len. is in milliseconds, and 0 means the gate stays open for as long as the note is held; anything else is a fixed pulse, which is what most trigger inputs want.
Min. Velocity is how you get an accent output. Point two gates at the same note, leave the first at 1 so it fires on everything, and set the second to something high so it only fires on the hits you play hard. The first goes to your drum module's gate input, the second to its accent input.
Fourays understands the following standard global MIDI messages:
- MIDI RTC Clock Start, Stop, Continue, Song Position : for Gate outputs in clock mode
- System Reset : silences all outputs
- Channel pitchbend : defaults to approximately +/- 2 semitones
- SysEx: for dumping and loading configuration
Setting your configuration
Use the left (<-) and right (->) push buttons on your Fourays to navigate through the configuration pages. Select a page with the centre (*) button, then use left and right again to navigate to a configuration value. Select again with * and left and right to change the value. Press * to exit edit mode, move back to the page title and * again to deselect a page.
The control channels are shown in grey and cannot be changed. The four chips listen on channels 13 to 16 and every voice listens on 13, which is where the plugin sends and where the demo songs address them. A device moved off those channels answers nothing the plugin sends, and it does so silently, so from v4 the setting is on the screen to read and not to edit. It is still stored and still travels in a configuration dump, so an older dump loads without complaint.
Some configuration values are abbreviated:
| Config name | Value | Full name |
|---|---|---|
| Noise mode | CC | Continuous controller |
| Noise mode | Nt | Note |
| Noise mode | Vl | Velocity |
| Gate mode | Vc | AY Voice |
| Gate mode | Cl | Clock |
| Gate mode | Nt | Note |
You can store configuration presets and recall these either using the push buttons or via MIDI program change messages.
MIDI program change selects a slot. Upon receiving a program change message, the configuration is immediately loaded. Most DAWs display program numbers from 1, so program 1 loads the first slot, matching the "Program 1" label on the screen.
There are 8 slots. The screen currently shows the first 7; the eighth is reachable by MIDI program change and by SysEx, but not from the push buttons.
You can dump your current configuration via MIDI SysEx message using the "Dump SysEx" action. Fourays will also respond to being sent the same MIDI SysEx data back and will immediately use that configuration.
SysEx commands
As well as accepting configuration data, Fourays responds to a small set of commands sent as SysEx. These let an editor read the current configuration rather than only overwrite it.
| Command | Effect |
|---|---|
| Request dump | Fourays replies with its current configuration, exactly as the "Dump SysEx" action does |
| Identify | Fourays replies with its manufacturer tag, configuration version and firmware version, so an editor can confirm what it is talking to and refuse a configuration version it does not understand |
| Load slot | Loads the given slot, as a program change would |
| Save slot | Stores the current configuration to the given slot |
A single message may carry configuration values followed by a command. The values are applied first, so "here is a configuration, now store it to slot 3" works as one message.
Commands are deliberately limited to the four above. Firmware update and restore-to-defaults are available only from the push buttons, so that nothing on the MIDI bus can trigger them.
The bytes
Everything Fourays sends and receives is built from 7-byte records, and a message is one or more records behind a three byte header. A record is:
| Byte | Meaning |
|---|---|
| 0 | Start marker, 0x90 plus the configuration version, so 0x94 for version 4 |
| 1 | Major index - which chip, gate or slot, counting from 0. 0xFE (-2) where there isn't one |
| 2 | Minor index - which voice or gate within the chip, counting from 0. 0xFE where there isn't one |
| 3 | Device: 1 chip, 2 voice, 3 noise, 4 envelope, 5 gate, 6 MIDI channel, 7 storage, 8 system, 9 command |
| 4 | Setting: 1 note channel, 2 control channel, 3 filter CC, 4 transpose CC, 5 detune CC, 6 period CC, 7 mode, 8 voice, 9 clock divider, 10 poly mode, 11 load slot, 12 save slot, 18 request dump, 19 identify, 20 gate note, 21 gate length, 22 minimum velocity |
| 5 | The value |
| 6 | End marker, 0x90 |
The header is 'd' 'l' 'd' - 64 6C 64. Fourays scans for the start marker and reads from there, so a message carrying a version it does not recognise is discarded rather than half applied, and a message that arrives in pieces still works.
The whole thing is then packed into 7-bit bytes the way SysEx requires, which is why the bytes below do not look like the record above: every eighth byte carries the high bits of the seven that follow it.
These are the four commands, ready to send:
| Command | Bytes |
|---|---|
| Request dump | F0 0E 64 6C 64 14 7E 7E 09 10 12 00 10 F7 |
| Identify | F0 0E 64 6C 64 14 7E 7E 09 10 13 00 10 F7 |
| Load slot 1 | F0 0A 64 6C 64 14 00 7E 09 10 0B 00 10 F7 |
| Save slot 1 | F0 0A 64 6C 64 14 00 7E 09 10 0C 00 10 F7 |
For a different slot, change the seventh byte: 00 is slot 1 and 07 is slot 8. So load slot 8 is F0 0A 64 6C 64 14 07 7E 09 10 0B 00 10 F7.
Identify replies with 'd' 'l' 'd', the configuration version, and the firmware version as text - so 64 6C 64 04 34 2E 30 30 30 is a device running 4.000 and speaking configuration version 4.
There are also some basic system settings; screen offset to account for differences in screen models and facilities for firmware update and restoring to the default configuration.
The activity screen
While MIDI is arriving, the screen shows what Fourays is receiving and what it is doing with it.
It is the quickest way to tell a routing problem from a mapping problem from a silent chip.
- MIDI IN - sixteen blocks, one per channel. Green when a note arrives, cyan when a control does. If a channel never lights up, nothing is arriving on it.
- AY VOICES - twelve blocks, coloured per chip, lit while that voice has a level. Channels lighting up here with the voices staying dark means the notes are arriving but no voice is assigned to that channel.
- GATES OUT - twelve blocks, the same colours and the same 1A-4C naming as the voices and the jacks, lit while that gate output is high. Fourays cannot hear its own gate outputs, so this row is the only way to check them from the device. If a block lights up and the module does nothing, check the cable and the module's trigger level. If it stays dark while a channel flashes above it, the notes are arriving but no gate is set to answer them.
- config - how many bytes arrived, and how many configuration records were applied.
IGNORED 0means the configuration arrived and Fourays did not understand it, which usually means the sender is using a different configuration version. Configuration reaches Fourays either as SysEx or as control changes; this line reports whichever arrived.
Firmware updates
See this page.