ZZZ Expert Sleepers CVM-8 Firmware v1.0 User Manual
- June 3, 2024
- ZZZ
Table of Contents
ZZZ Expert Sleepers CVM-8 Firmware v1.0
Introduction
Congratulations on your purchase of an Expert Sleepers CVM-8. Please read this user manual before operating your new module.
What is it?
The CVM-8 digitizes control voltages on its inputs and uses them to generate
MIDI or I2C messages, which can then be used to control other devices or
software. For example, you could control a parameter on a hardware or software
synth with a voltage (via a MIDI CC), or you could convert analogue CV/gate
into MIDI notes in order to play a synthesizer from a Eurorack sequencer. When
used over I2C it can also work in a more passive mode, where the I2C leader
queries the CVM-8 for its input voltages. The CVM-8 has two completely
independent sets of MIDI ports (a set being an input, an output, and a ‘thru’
connection), and one header for I2C connection. One of the MIDI outputs can
also optionally drive the Select Bus. Since the module has no user interface
of its own, it makes most sense to describe it in terms of the functionality
offered by the configuration tool, documented below. Please read on.
Installation
House the module in a Eurorack case of your choosing. The power connector is
Doepfer standard1. If using the power cable supplied with the module, the red
edge of the cable is closest to the bottom edge of the PCB, and carries -12V.
(“-12V” is marked on the PCB itself next to this end of the connector.) Be
sure to connect the other end of the power cable correctly, again so -12V
corresponds to the red stripe on the cable.
Power requirements
The CVM-8 draws up to 66mA on the +12V rail, and 25mA on the -12V rail.
It does not use the 5V rail.
Inputs
The CVM-8 has eight analogue inputs on 3.5mm TS jack sockets. The maximum
voltage range that can be handled is ±10.24V.
The jack sockets are illuminated, lighting red for positive voltage and blue
for negative voltage.
(Audio appears purple, since it is a rapid alternation of positive and
negative.)
LEDs
There are six LEDs on the CVM-8’s panel. Refer to the image below:
The three pairs refer to the three channels of communication – MIDI 1, MIDI 2, and I2C. For each pair the left LED indicates that the module is receiving, and the right LED that the module is transmitting.
Startup
When powered on, the module’s LED flash in patterns as follows.
Firstly, the bootloader flashes the LEDs in the sequence MIDI 1 RX, MIDI 1 TX,
MIDI 2 RX, MIDI 2 TX, I2C RX, I2C TX.
Then, the module’s firmware flashes the LEDs in the sequence MIDI 1 RX, MIDI 2
RX, I2C RX, I2C TX, MIDI 2 TX, MIDI 1 TX.
MIDI Connections
The CVM-8 has two independent MIDI ports, each consisting of the traditional
in, out, and thru. They are exposed on the header strip across the top of the
PCB marked X1.
Pin numbers refer to the 5-pin DIN socket as in the MIDI specification2.
All the necessary electronics are part of the module – all that is required to
use these as MIDI ports is the sockets, either 5-pin DIN or TRS 3.5mm jack.
Or, they can be connected directly to the MIDI headers on other Expert
Sleepers or compatible modules. In this case, remember to connect the inputs
to outputs and vice versa.
The header is a standard 0.1″ pitch header compatible with e.g. typical IDC
cable sockets, or DuPoint cables such as those supplied with the module.
The thru connections output a buffered version of the respective input,
without any intermediary microcontroller i.e. they do not add any latency.
I2C Connection
The CVM-8 supports an I2C3 connection, via the header on the PCB marked ‘X2’.
The GND, SCL & SDA lines are clearly marked on the PCB. Be sure to connect
these to the corresponding lines on the other I2C device(s) in use.
Make or remove I2C connections with the power off.
An I2C bus requires that somewhere on the bus are a pair of “pull up”
resistors. The CVM-8 provides these on a switch labelled ‘SW2’:
The pull up resistors are enabled if the switch is towards the “PULL-UP” text
(as shown in the photo above), and disabled in the other position.
Select Bus
The Select Bus is a means of inter-module communication currently supported by
a handful of modules from various manufacturers, including the Malekko
Varigate 8+4, Macro Machines Storage Strip5 and the Make Noise Tempi6 & René
27. Expert Sleepers modules which use the Select Bus include the disting mk4
and disting EX.
The CVM-8 can only transmit on the Select Bus; it cannot receive. (So it is a
leader only, in the parlance of some Select Bus devices.)
There is not an independent MIDI port to drive the Select Bus – it is driven
by the output of MIDI port 2. The Select Bus (if connected) and MIDI 2 will
always output the same messages.
To drive the Select Bus, the jumper (labelled ‘X5’ on the PCB) needs to be set
appropriately. The photo below shows the jumper in its factory fitted location
on the rightmost pair of pins, which disables the Select Bus. To enable the
Select Bus, move the jumper to the left pair of pins (below the words ‘SELECT
BUS’ on the PCB).
When changing the jumper position please do so with the module powered off.
DIP Switches
The module has a set of four switches on the PCB, marked ‘SW1’.
These are used to choose the configuration to load at power on. Please see the
section on saving and loading configurations, below.
If all four switches are set to the ‘on’ position, this forces the module to
start in bootloader mode
(see the section on firmware updates, below). Usually this is not required, as
the configuration tool can reboot the module into bootloader mode, but if the
module is not cooperating this provides a means of forcing the issue.
Configuration Tool
A GUI tool is provided to configure the CVM-8. Please find the version
appropriate to your firmware version on the firmware download page8.
A standalone version is provided for macOS and Windows, as well as a platform-
independent browser-based version. This last uses the Web MIDI API, which at
the time of writing will work only in browsers based on Google’s Chromium
(which includes Chrome).
All is well if the tool shows Web MIDI status: OK
If it shows Web MIDI status: No MIDI support in your browser then you need to
use a different browser.
In general, changes made in the tool are reflected immediately in the
hardware. However nothing is saved automatically – remember to save the
configuration to flash memory if you want to keep it.
Tool Setup
The tool needs a MIDI connection to the CVM-8. Either MIDI port 1 or 2 can be
used. You need to connect both a MIDI in and a MIDI out.
At the top of the tool are these controls:
-
Use the drop-down menus to select the MIDI ports on your computer that you’ve connected to the module.
-
To the right of the MIDI port menus are these buttons:
-
The ‘Request Firmware Version’ button sends and receives short SysEx messages to report the CVM-8’s firmware version.
-
‘Query DIP Switches’ asks the module to report the position of its DIP switches.
-
‘Resynchronise’ attempts to re-establish communication with the module and refresh the tool’s view of the module’s state. You might use this for example if the module has been turn off and back on. ‘Enter bootloader mode’ is used to update the firmware – see below. Below the buttons are three text boxes.
-
The left box is a log of messages reported by the tool. The centre box shows the last SysEx message sent by the tool. The right box shows the last SysEx message received by the tool, and in the case of the ‘Message’ SysEx message, the actual message as plain text.
Raw Inputs
Below the log messages is the raw inputs area.
Untick the check box if you don’t want this area visible.
Three values are shown for each input. The top row shows the raw ADC code
coming from the hardware. The centre row shows the input as a voltage. The
bottom row shows the processed ADC codes that are used to generate MIDI and
I2C messages, which have been stabilised to avoid excessive messages due to
noise. A green value shows that the module considers the value stable.
Statistics
Next to the raw inputs is the ‘stats’ section.
This displays the number of bytes received and transmitted on the two MIDI ports, and the number of bytes transmitted over I2C, in the last second. It also shows the total number of ADC conversions performed per second.
Graph View
The ‘Show graph’ checkbox enables a graph view of the module’s inputs.
Each input is shown in a different colour – red, green, blue, cyan, magenta, yellow, orange, and white for inputs 1 to 8 respectively.
Configuration Wizard
The ‘Configuration Wizard’ lets you quickly set up the entire module using
common configuration choices – for example, all inputs generating MIDI CCs, or
all inputs used as CV/gate pairs to generate MIDI notes.
It should be fairly self-explanatory once you understand the configuration
options below.
There is one ‘wizard’ per line. Choose your settings and click the ‘GO’
button.
Continuous Generators
Here is where you set up the generation of ‘continuous’ message streams, where
typically a new message is generated whenever the input voltage changes. Often
these will be MIDI CCs or I2C controllers, though other options are available.
There are sixteen generators available. In the default and wizard-generated
configurations the first eight generators are used, in one-to-one
correspondence with the eight inputs, but this relationship is not fixed. If
you wanted, you could generate 16 different CCs from one input.
Each row in the generator table is divided into four sections – input, MIDI,
I2C, and voltages.
The input section has one control, a drop-down menu to select the module input
that is used.
The MIDI section begins with ‘Enable 1’ and ‘Enable 2’, to enable the
generation of messages on MIDI ports 1 and 2 respectively. Next come menus for
the MIDI channel (1-16) and message. The message options are CC, Program
Change, Channel Pressure (aka aftertouch), Poly Pressure (aka polyphonic
aftertouch), and Pitch Bend. For CC and Poly Pressure messages, the CC menu
allows you to choose the CC number or note number for the messages. The ‘Min
CC’ and ‘Max CC’ menus allow you to set the minimum and maximum controller
values that will be sent, corresponding to the minimum and maximum voltages.
(These are not used for Pitch Bend messages, which always use the full pitch
bend range.)
The I2C section begins with ‘Enable’, to enable I2C messages from this input.
‘Address’ sets the I2C address of the follower device. ‘Controller’ sets the
controller number. ‘Min value’ and ‘Max value’ set the minimum and maximum
controller values that will be generated, corresponding to the minimum and
maximum voltages. The I2C messages sent use the ‘0x11’ format documented
below.
Lastly on each row are controls for the minimum and maximum voltages. Voltages
in this range generate the specified range of controller values.
Note Generators
In this section you can set up the generation of MIDI note on and off
messages, and their I2C equivalents. There are eight note generators that can
be configured in total.
On each row is a MIDI section, an I2C section, and a section of controls
common to both.
The MIDI section contains buttons to enable MIDI notes on the two MIDI ports,
and a menu to choose the MIDI channel to use.
The I2C section contains an enable button, and a field to enter the I2C
address of the follower device.
The common section begins with three menus with which to choose the module
inputs to use for pitch, gate, and velocity. Any of these can be ‘None’. If
the pitch input is ‘None’, the value from the ‘Fixed Pitch’ field is used as
the pitch. If the velocity input is ‘None’, the value from the ‘Fixed
Velocity’ field is used as the note on velocity. If the gate input is ‘None’,
no new notes will be generated (but a note off message will be generated if a
note on the message was previously sent).
The ‘0V Note’ menu lets you choose which MIDI note number corresponds to zero
Volts input. Notes either side of this follow the 1V/octave standard.
The ‘Gate Offset’ menu sets a small delay between the pitch and gate inputs.
Set this large enough to guarantee that the pitch CV has settled before a note
is triggered by the gate, so that the right note is chosen.9
The I2C messages use the 0x54/0x55/0x56 formats documented below.
Saving and loading configurations
Configurations can be saved to and loaded from flash memory. There are 32
configuration slots.
Under ‘Current Configuration’ is the name of the current configuration. You would typically change this to something descriptive before saving the configuration.
The ‘Saved Configurations’ area shows the 32 configuration slots in flash, and
the name of each configuration. Next to each is a ‘Load’ button to load that
configuration, and a ‘Save’ button to save the current configuration to that
slot.
The first 15 slots also show the DIP switch settings (see above) that would
cause this slot to be loaded at power on.
Settings
Unlike the configuration, which is volatile until saved, settings apply
globally and are saved immediately. There is currently just one setting, which
is the module’s I2C address when operating as a follower. The default value
for this is 50 (0x32).
Finally, at the very bottom of the configuration tool is the ‘Full Reset’ button. This resets the settings to defaults and erases all saved configurations. (Note – not “restores all factory configurations”.)
Factory loaded configurations
The first 15 configuration slots are filled at the factory, so these are
available by appropriate choice of DIP switches (see above) without accessing
the configuration tool at all.
All of these were created using the ‘Configuration Wizard’ (see above) and so
are easy to recreate if you erase or save over them.
| Name| Description| DIP
switch
---|---|---|---
1| 8 CCs +/-5V| Inputs 1-8 generate MIDI CCs 7-14 on channel 1, on both MIDI
ports, using a voltage range of -5V to +5V.| 0 0 0 0
2| 8 CCs 0-5V| As (1) but using 0V to +5V.| 1 0 0 0
3| 8 CCs +/-10V| As (1) but using -10V to +10V.| 0 1 0 0
4| 8 CCs 0-10V| As (1) but using 0V to +10V.| 1 1 0 0
5| MIDI notes| Four MIDI note generators, using MIDI channel 1, on both MIDI
ports. CV/gate inputs in pairs 1-2, 3-4 etc. Fixed velocity 127, 0V note 48,
gate offset 0.5ms.| 0 0 1 0
6| MIDI notes + vel| Three MIDI note generators, using MIDI channel 1, on both
MIDI ports. Two generators with velocity, using CV/gate/velocity inputs 1-2-3
and 4-5-6. One generator with fixed velocity 127 using CV/gate inputs 7-8. 0V
note 48, gate offset 0.5ms.| 1 0 1 0
7| MIDI fixed notes| Eight MIDI note generators, using MIDI channel 1, on both
MIDI ports. The eight generators use inputs 1 to 8, and generate notes 48-55
with a fixed velocity of 127. Gate offset 0.5ms.| 0 1 1 0
8| MIDI fixed notes + vel| Four MIDI note generators, using MIDI channel 1, on
both MIDI ports. Gate and velocity inputs in pairs 1-2, 3-4 etc. Fixed notes
48-51. Gate offset 0.5ms.| 1 1 1 0
9| 8 I2C +/-5V| Inputs 1-8 generate I2C controllers 0-7, address 49, value
range 0-16383, using a voltage range of -5V to +5V.| 0 0 0 1
10| 8 I2C 0-5V| As (9) but using 0V to +5V.| 1 0 0 1
11| 8 I2C +/-10V| As (9) but using -10V to +10V.| 0 1 0 1
12| 8 I2C 0-10V| As (9) but using 0V to +10V.| 1 1 0 1
13| I2C notes| Four I2C note generators, using address 49. CV/gate inputs in
pairs 1-2, 3-4 etc. Fixed velocity 127, 0V note 48, gate offset 0.5ms.| 0 0 1
1
14| I2C notes + vel| Three I2C note generators, using address 49. Two
generators with velocity, using CV/gate/velocity inputs 1-2-3 and 4-5-6. One
generator with fixed velocity 127 using CV/gate inputs 7-8. 0V note 48, gate
offset 0.5ms.| 1 0 1 1
15| No generators| Nothing was enabled at all.| 0 1 1 1
MIDI System Exclusive (SysEx)
The CVM-8 supports a variety of features via MIDI System Exclusive messages. Mostly these are intended for use by the config tool.
SysEx Header
All SysEx messages are prefixed with a manufacturer’s ID, which is a unique
series of hex bytes assigned by the MIDI Manufacturers Association.
-
The Expert Sleepers ID is 00H 21H 27H, so all SysEx messages relating to Expert Sleepers hardware will begin
F0 00 21 27 -
Messages for the CVM-8 follow this with 58H:
F0 00 21 27 58 -
and then with a byte to identify the specific type of message e.g.
F0 00 21 27 58 22 -
Many values are sent using a 3 byte format to represent a 16 bit quantity:
< top 2 bits> <middle 7 bits> <low 7 bits> -
Similarly a 5 byte format is used to represent a 32 bit quantity:
< top 4 bits> <next 7 bits> <next 7 bits> <next 7 bits> <low 7 bits>
Received SysEx messages
-
08H – Reboot
F0 00 21 27 58 08 F7
This causes the CVM-8 to reboot. Used by the configuration tool to enter bootloader mode. -
22H – Request version string
F0 00 21 27 58 22 F7
This causes the CVM-8 to respond with a SysEx message containing the module’s version string as text, using the ’32H – Message’ format, below. -
23H – Request raw inputs
F0 00 21 27 58 23 F7
This causes the CVM-8 to respond with a SysEx message containing its current ADC results (using message 33H, below). -
24H – Request configuration
F0 00 21 27 58 24 F7
This causes the CVM-8 to respond with a SysEx message containing its current configuration (using message 10H, below). -
25H – Request statistics
F0 00 21 27 58 25 F7
This causes the CVM-8 to respond with a SysEx message containing various operational statistics (using message 34H, below). -
26H – Request configuration names
F0 00 21 27 58 26 F7
This causes the CVM-8 to respond with a SysEx message containing the names of the stored configurations (using message 11H, below). -
27H – Request DIP switches
F0 00 21 27 58 27 F7
This causes the CVM-8 to respond with a message containing the current DIP switch positions (using message 32H, below). -
28H – Request settings
F0 00 21 27 58 28 F7
This causes the CVM-8 to respond with a SysEx message containing the current settings (using message 12H, below). -
30H – Update CC generator
F0 00 21 27 58 30F7
Used to update a single CC generator. -
31H – Update configuration name
F0 00 21 27 58 31F7
Used to set the current configuration name. -
32H – Update note generator
F0 00 21 27 58 32F7
Used to update a single note generator. -
33H – Update settings
F0 00 21 27 58 33F7
Used to set the CVM-8’s settings. -
34H – Reset
F0 00 21 27 58 34 F7
Resets the module’s settings to defaults and erases any saved configurations. -
40H – Reset configuration
F0 00 21 27 58 40 F7
Resets the current configuration to defaults. -
41H – Load configuration
F0 00 21 27 58 41F7
Loads the given configuration from flash. -
42H – Save configuration
F0 00 21 27 58 42F7
Saves the current configuration to the given slot in flash. Sent SysEx messages -
10H – Configuration dump
F0 00 21 27 58 10F7
Contains the CVM-8’s complete configuration. -
11H – Configuration names
F0 00 21 27 58 11<list of NULL terminated ASCII strings> F7
Contains the names of the CVM-8’s configurations stored in flash. -
12H – Settings
F0 00 21 27 58 12F7
Contains the CVM-8’s settings. -
32H – Message
F0 00 21 27 58 32F7
This message is used to transmit any human-readable string. -
33H – Raw inputs
F0 00 21 27 58 33 <3 byte raw value 1> <3 byte raw value 2> … <3 byte raw value 8> <3 byte cleaned value 1> <3 byte cleaned value 2> … <3 byte cleaned value 8> F7
This message is transmitted in response to ’32H – Request raw inputs’. -
34H – Statistics
F0 00 21 27 58 34 <5 byte raw conversion count> <3 byte received bytes on MIDI 1> <3 byte transmitted bytes on MIDI 1> <3 byte received bytes on MIDI 2> <3 byte transmitted bytes on MIDI 2> <3 byte transmitted bytes on I2C> F7
This message is transmitted in response to ’25H – Request statistics’.
I2C Messages
-
Sent I2C messages
Note that all of these are compatible with the disting EX. -
set i2c controller X to value Y
0x11 -
set voice pitch for note id
0x54 -
note on for specified note id
0x55 -
note off for specified note id
0x56
Received I2C messages
-
get raw ADC code (16 bit)
0x00 returns 2 bytes -
get input voltage (16384 <-> 10V)
0x01 returns 2 bytes -
send message on MIDI port 1
0x4F -
send message on MIDI port 2
0x50
Firmware Updates
The CVM-8’s firmware can be updated over MIDI using the configuration tool. The process is as follows:
-
Download and unzip the firmware from the website10. You should end up with a file named similarly to “cvm-8_1.0.hex”, but with a different version number.
-
Connect the CVM-8 to a computer running the configuration tool as described above. MIDI port 1 or 2 can be used.
-
Click the ‘Enter bootloader mode’ button.
-
The module will reboot, and the config tool will switch into a bootloader view.
-
While in bootloader mode, the module’s I2C RX/TX LEDs (the bottom two) will flash alternately about once a second.
-
Use the ‘Choose file’ button to browse for the firmware file downloaded previously.
-
Click the ‘Install Firmware’ button.
-
Wait for the progress bar to reach the end.
-
Check the final message in the log window. It should be “Bootloader reports completion”.
-
Power cycle the module (turn it off and on).
-
Reload the config tool or click ‘Resynchronise’.
-
Check the firmware version is as expected by clicking ‘Request Firmware Version’.
Where to get help
Email, forum, and social media links can be found at the bottom of every page
on our website11.
References
- Make Noise Co. | René
- Make Noise Co. | TEMPI
- I²C - Wikipedia
- I²C - Wikipedia
- Expert Sleepers CVM-8 - User Manual & Firmware Updates
- Malekko Heavy Industry Corporation | VARIGATE 8+
- Expert Sleepers
- Expert Sleepers
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>