Fourays v4 firmware. Running something older? These are the current docs. Other versions: v3 v2 v1. Check the version on your Fourays at startup, or in the system settings.

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:

ChipControl
channel
Envelope
period CC
Noise
mode
Noise
period CC
11315CC16
21415CC16
31515CC16
41615CC16

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 NoteFunction
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 / A12131474
1 / B13131474
1 / C14131474
2 / A15131474
2 / B16131474
2 / C17131474
3 / A18131474
3 / B19131474
3 / C110131474
4 / A111131474
4 / B112131474
4 / C113131474

* 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 numberCC valueFunction
70-127channel volume
1200all sound off (this channel only)
1210reset 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 modeWhat opens the gateSettings it uses
VoiceAn AY voice playing a noteAY Voice
ClockThe MIDI clock, dividedClock Div.
NoteOne MIDI note on one channelNote 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:

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 nameValueFull name
Noise modeCCContinuous controller
Noise modeNtNote
Noise modeVlVelocity
Gate modeVcAY Voice
Gate modeClClock
Gate modeNtNote

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.

CommandEffect
Request dumpFourays replies with its current configuration, exactly as the "Dump SysEx" action does
IdentifyFourays 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 slotLoads the given slot, as a program change would
Save slotStores 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:

ByteMeaning
0Start marker, 0x90 plus the configuration version, so 0x94 for version 4
1Major index - which chip, gate or slot, counting from 0. 0xFE (-2) where there isn't one
2Minor index - which voice or gate within the chip, counting from 0. 0xFE where there isn't one
3Device: 1 chip, 2 voice, 3 noise, 4 envelope, 5 gate, 6 MIDI channel, 7 storage, 8 system, 9 command
4Setting: 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
5The value
6End 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:

CommandBytes
Request dumpF0 0E 64 6C 64 14 7E 7E 09 10 12 00 10 F7
IdentifyF0 0E 64 6C 64 14 7E 7E 09 10 13 00 10 F7
Load slot 1F0 0A 64 6C 64 14 00 7E 09 10 0B 00 10 F7
Save slot 1F0 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.

Firmware updates

See this page.