Stuck with a SynthEdit project?

Category: MIDI

MIDI FAQs problems and “bugs”

Triggering a note from a button not a keyboard.

I want to trigger a note from a button on my Synthesizers control panel, but I can’t get it to work, why?
Connecting a button directly to your synthesizers ADSR module won’t work quite as you might expect.
The reason is SynthEdit’s sleep mode. When a MIDI to CV module finishes playing a note, it powers-off any downstream modules as this saves CPU. However this also prevents the ADSR module from responding to the button.
All is not lost though, simply connect a Button to a Trigger to MIDI module.
Connect the Trigger to MIDI modules MIDI out to the MIDI to CV modules MIDI in. Now when you push the button, a MIDI command is sent to the MIDI to CV, just like any other note-on. The MIDI to CV then wakes up all the modules and starts the note.

Using a button to trigger an ADSR.

Weird voltages from the Velocity Plug

I Connected the Velocity out from the MIDI to CV module to a volt meter and got weird values. The voltage seems to go higher and higher instead of going low when you lift the key. Is this a bug?
No, there is no bug.
The MIDI to CV is polyphonic, although there’s only one on-screen, imagine there are 6 of them, all connected to your voltmeter.
When you first push Play, all 6 modules output zero (Voltmeter reads “0.00”). You then play a note, and the voltmeter, reads “1.0” (for example), You play a 2nd note, the voltmeter reads “2.0”, you play a 3rd note, the voltmeter read “3.0”, etc., etc.
In a polyphonic synthesiser, these voltages add up, higher and higher, until you reach the maximum polyphony.
There is no bug, except perhaps that the Voltmeter is not Polyphonic, so instead of showing you 6 readings (for 6 voices), it adds them all together, which can be confusing.
Note: For Debugging- go to Mono Mode.
If you need to take voltage readings to debug your synth, the easiest solution is to set your project to Mono mode. Voltage readings will make much more sense. (you can set your project back to Polyphonic once you’re done).

I released a note and the voltage didn’t return to 0.

Why doesn’t the voltage return to zero when you release the note?
Because each note takes time to fade out, the MIDI to CV module continues to output the same voltages as when you first hit the note. Imagine if the pitch went to zero the instant you released a note, instead of fading gracefully to silence, notes would thump into a low frequency buzz.
Imagine if the Velocity output went zero on note-off, if you were using it to control the note loudness, the note would click instantly to silence, like an organ sound. So, when you release your finger from a key, the MIDI CV continues to output the same pitch and velocity.

Note: The “Gate” voltage does drop to zero instantly in all scenarios.

How to stop notes “Sticking”

How do I stop notes from “sticking” in my SynthEdit synth?
There are several reasons why notes could be sticking, usually due to construction errors. If you are getting stuck notes, check for the following:
1) Ensure that your Envelope module’s Gate inputs are connected to a proper Gate signal. e.g. From the Gate output of a MIDI to CV Module.
2) Make sure that the Envelope module’s Gate inputs are not being controlled by a slider, or fixed value module.
3) Check your VCA module’s Volume input to make sure that it is not being directly controlled by a Slider, or Fixed Value module.

“Poly to Mono” module

This module converts a polyphonic signal to monophonic by splitting off only the most recent note played. The output will be similar to a monophonic instrument. This is useful when trying to modulate a monophonic object (e.g. an LFO) from a polyphonic signal (e.g. note-pitch), which is usually not possible in a meaningful way.

“Voice Combiner” module

This module mixes-down a polyphonic signal into a monophonic signal that includes all voices that are playing.

Converting MIDI 1 to MIDI 2

SynthEdit also provides a MIDI converter module that can convert MIDI 1 to MIDI 2 and vice versa.
This is useful for maintaining compatibility with MIDI 1 only modules.
MIDI 2.0 is now the default MIDI standard, because MIDI 1, MIDI MPE, and Steinberg Note-Expression can all be converted losslessly to MIDI 2. However it’s not always possible to convert MIDI 2 to MIDI 1.
The SynthEdit SDK now provides helper classes that will convert MIDI for you.
This allows you to write your MIDI code without having to handle all the different types of MIDI.
Note: It’s recommend that you write your modules to use MIDI 2.
The SDK contains the ‘MIDI to Gate’ module that shows how to write a MIDI 2 module that also accepts MIDI 1 transparently.

You can intercept the MIDI signals anytime before it reaches the Patch Automator.
Note: The MIDI-CV secretly sends it’s MIDI to the Patch Automator.
By default the MIDI in SE 1.5 is Version 2.0. The MIDI-In module converts everything to MIDI V 2.0. You can send version 1.0 also, but SE’s own MIDI modules will tend to covert it back into Version 2.0 if they get a chance .



Trigger to MIDI and MIDI Monitor

Sends a MIDI note-on message, and appropriate MIDI values whenever the gate input goes over 0 Volts. The voltage at the pitch input determines the MIDI note number, and the voltage on the Velocity plug sets the MIDI velocity number.

Trigger to MIDI

Plugs and properties:
Left Hand Side:
->Gate:- (Voltage) Triggers the Note on message
->Pitch:- (Voltage) Sets the note pitch. For details see signal level conversions.
->Velocity:- (Voltage) Sets the note velocity. 0 – 10V maps to MIDI Velocity from 0 to 1. he default level is 0.5
->Channel:- (List) MIDI Channel number (or “All”) to output on
Outputs:
<-MIDI Out:- (MIDI) Standard MIDI 2 Output
Properties:
**Freq Scale:- Select from: 1V/Octave or 1V/kHz.
**Channel:- Select the MIDI channel number or “All”
Note: If you connect a MIDI-CV2 module to this module it will still produce the usual Trigger pulse as the Gate button is pressed.

MIDI Monitor.

Displays the MIDI status and MIDI values being received.

The display format.
Sound ON = Sound engine is running.
2C1 shows that you are using MIDI Channel 1 as the output channel.
Note on shows that the module has received a gate signal. Turning the gate off will result in a Note off output.

2C16 Note On (111, 0. 84):
Channel 16: Gate is on, 111 is the MIDI note value, 0.84 is the velocity.

2C16 Note off (111, 0.5)
Channel 16: Gate is off, 111 is still the MIDI note value, and the velocity has returned to it’s default of 0.5

2C16 Note On (116, 0.84)
Channel 16: Gate is on, the MIDI note is now 116, and the velocity is still 0.84.

MIDI Note to voltage conversion.

Note: By this table middle C (60) is C3, not C4 as per ISO system standardized by Acoustical Society of America
This conversion table doesn’t apply to MIDI note lists of the sort contained in the ‘MIDI Filter’ module. For those a simple ’10/127 x note number’ formula works.

MIDI | VOLTS
000 = -0.75
001 = -0.667
002 = -0.583
003 = -0.5
004 = -0.417
005 = -0.333
006 = -0.25
007 = -0.167
008 = -0.083
009 = 0
010 = 0.083
011 = 0.167
012 = 0.25
013 = 0.333
014 = 0.417
015 = 0.5
016 = 0.583
017 = 0.667
018 = 0.75
019 = 0.833
020 = 0.917
021 = 1
022 = 1.08
023 = 1.17
024 = 1.25
025 = 1.33
026 = 1.42
027 = 1.5
028 = 1.58
029 = 1.67
030 = 1.75
031 = 1.83
032 = 1.92
033 = 2
034 = 2.08
035 = 2.17
036 = 2.25
037 = 2.33
038 = 2.42
039 = 2.5
040 = 2.58
041 = 2.67
042 = 2.75
043 = 2.83
044 = 2.92
045 = 3
046 = 3.08
047 = 3.17
048 = 3.25
049 = 3.33
050 = 3.42
051 = 3.5
052 = 3.58
053 = 3.67
054 = 3.75
055 = 3.83
056 = 3.92
057 = 4
058 = 4.08
059 = 4.17
060 = 4.25
061 = 4.33
062 = 4.42
063 = 4.5
064 = 4.58
065 = 4.67
066 = 4.75
067 = 4.83
068 = 4.92
069 = 5
070 = 5.08
071 = 5.17
072 = 5.25
073 = 5.33
074 = 5.42
075 = 5.5
076 = 5.58
077 = 5.67
078 = 5.75
079 = 5.83
080 = 5.92
081 = 6
082 = 6.08
083 = 6.17
084 = 6.25
085 = 6.33
086 = 6.42
087 = 6.5
088 = 6.58
089 = 6.67
090 = 6.75
091 = 6.83
092 = 6.92
093 = 7
094 = 7.08
095 = 7.17
096 = 7.25
097 = 7.33
098 = 7.42
099 = 7.5
100 = 7.58
101 = 7.67
102 = 7.75
103 = 7.83
104 = 7.92
105 = 8
106 = 8.08
107 = 8.17
108 = 8.25
109 = 8.33
110 = 8.42
111 = 8.5
112 = 8.58
113 = 8.67
114 = 8.75
115 = 8.83
116 = 8.92
117 = 9
118 = 9.08
119 = 9.17
120 = 9.25
121 = 9.33
122 = 9.42
123 = 9.5
124 = 9.58
125 = 9.67
126 = 9.75
127 = 9.83

The volts values can be fed to ‘Trigger To MIDI’ and ‘SampleOscillator2’ modules at ‘Pitch’ pin for example, the values can be calculated as well, but it’s not so straightforward and due to deviations product requires constant manual adjustment, the table saves you this tedious process, it’s accurate and verified

MIDI 1 and MIDI 2 in SynthEdit.

MIDI 1 (Musical Instrument Digital Interface)
MIDI is a technical standard that describes a standard means of, communications, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing, editing, and recording music.

MIDI Channels

This is a subject that seems (for some people) to cause confusion.
A MIDI channel allows a specific device to receive its own set of MIDI data. So any MIDI Data sent on say channel 1 will only be received by a connected device such as a MIDI Synthesizer which is set to use Midi Ch1.
When a MIDI device is set to “All” then it will receive data from all the other interconnected devices.
This allows us to control separate devices from separate sources. So in your DAW you could have three different keyboards controlling three different VST synthesizers, and a control surface set up as channels 1,2,3 for the individual Synthesizers, and channel four as the control channel for a mixer.
A single MIDI cable can carry up to sixteen channels of MIDI data, each of which can be routed to a separate device. Each interaction with a key, button, knob or slider is converted into a MIDI event, which specifies musical instructions, such as a note’s pitch, timing and loudness. One common MIDI application is to play a MIDI keyboard or other controller and use it to trigger a digital sound module (which contains synthesized musical sounds) to generate sounds, which the audience hears produced by a keyboard amplifier. MIDI data can be transferred via MIDI or USB cable, or recorded to a sequencer or digital audio workstation to be edited or played back.
Many groups, (Tangerine Dream for one) and studios have embraced this technology, as it’s much easier to transport, nowhere near as heavy, and unlike analogue synthesizers always stays in tune, and is a lot cheaper than a stack of of hardware synthesizers. Which is easier to transport, maintain and set up; three laptops and sound interfaces feeding into a mixer, or three Moog Modulars?

Preserving a performance.
A file format that stores and exchanges the data is also defined.
The advantages of MIDI include small file size, ease of modification (there are many software MIDI editors) along with a wide choice of electronic instruments, synthesizers, software synthesizers, or digitally sampled sounds.
A MIDI recording of a performance on a keyboard could sound like a piano or other keyboard instrument; however, since MIDI records the messages and information about their notes and not the specific sounds, this recording could be changed to many other sounds, ranging from synthesized or sampled guitar or flute to full orchestra.

Ease of communication.
Before the development of MIDI, electronic musical instruments from different manufacturers could generally not communicate with each other. This meant that a musician could not, for example, plug a Roland keyboard into a Yamaha synthesizer module. With MIDI, any MIDI-compatible keyboard (or other controller device) can be connected to any other MIDI-compatible sequencer, sound module, drum machine, synthesizer, or computer, even if they are made by different manufacturers.

MIDI 2.0
SynthEdit MIDI pins can handle both MIDI 1.0 and MIDI 2.0 standards.
From Version 1.5 many SynthEdit modules accept either MIDI 1 or MIDI 2 but send MIDI 2.

About MIDI 2.
Back in 1983, musical instrument companies that were in fierce competition nonetheless banded together to create a specification to allow musical instruments to communicate with each other, and with computers. This was MIDI 1.0, the first universal Musical Instrument Digital Interface.
Nearly four decades on, we can see that MIDI was crafted so well that it has remained useful and relevant. Its ability to join computers and musical instruments has become an major part of live performances for recording, controlling mixers, programming Synthesizers, and even stage lighting.
Now, MIDI 2.0 is taking the technology even further, deliberately retaining backward compatibility with MIDI 1.0 equipment and software already in use.

Here’s why MIDI 2.0 is the biggest advance in music technology in decades:

MIDI 2.0 Means Two-way MIDI Conversations
MIDI 1.0 messages were unidirectional: from the transmitter to a receiver. MIDI 2.0 is bi-directional and changes MIDI from a monologue to a dialogue between computers and instruments.
For example, with the new MIDI-CI (Capability Inquiry) messages, MIDI 2.0 devices can talk to each other, and auto-configure themselves to work together. They can also exchange information on functionality, which is key to backward compatibility.
MIDI 2.0 software and equipment can “talk” to a device, and if it doesn’t support MIDI 2.0, and then it can simply switch to the old MIDI 1.0 protocol.

Higher Resolution, More Controllers and Better Timing
To deliver an even higher level of musical and artistic expressiveness, MIDI 2.0 re-imagines the role of performance controllers, which is the aspect of MIDI that converts human performance gestures to control signals computers can understand.
Controllers have become easier to use, and there are more of them: over 32,000 controllers, including controls for individual notes.
Enhanced, 32-bit resolution gives controls a smoother, continuous, “analogue” feel. Note-On options were added for articulation control and setting precise note pitch.
In addition to this, dynamic response (velocity) has been improved.
What’s more, major timing improvements in MIDI 2.0 can also apply to MIDI 1.0 devices in fact, some MIDI 1.0 gear can actually “retrofit” certain MIDI 2.0 features.

Profile Configuration
MIDI gear can now have Profiles that can dynamically configure a device for a particular user scenario.
If a control surface queries a device with a “mixer” Profile, then the controls will map to faders, pan-pots, and other mixer parameters.
But when connected with a “drawbar organ” Profile, that same control surface can map its controls to virtual drawbars and other keyboard parameters, or map to dimmers if the profile is a lighting controller. This saves enormously on setup time, improves workflow, and eliminates time consuming manual programming.

Property Exchange
Profiles set up an entire device, and Property Exchange messages provide specific, detailed information sharing.
These messages can discover, retrieve, and set many properties like preset names, individual parameter settings, and unique functionalities.
Essentially, everything one MIDI 2.0 device needs to know about the MIDI 2.0 device it’s connected to.
For example, your DAW or recording software could display everything you need to know about a synthesizer on-screen, effectively bringing hardware synthesizers up to the same level of programmability as their software counterparts.

Built for the Future.
Unlike MIDI 1.0, which was initially tied to a specific hardware implementation, the new Universal MIDI Packet format makes it easy to implement MIDI 2.0 on any digital transport (like USB or Ethernet). To enable future applications that we haven’t yet developed, there’s ample space still in the standard reserved for brand-new MIDI specifications and messages.

For more detailed information on (and it’s very detailed and complex) on MIDI 2 standards and protocols visit the MIDI organisation’s website
https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange

Converting MIDI 1 to MIDI 2
SynthEdit provides a MIDI converter module that can convert MIDI 1 to MIDI 2 and vice versa.
This is useful for maintaining compatibility with MIDI 1 only modules.
MIDI 2.0 is now the default MIDI standard, because MIDI 1, MIDI MPE, and Steinberg Note-Expression can all be converted losslessly to MIDI 2. However it’s not always possible to convert MIDI 2 to MIDI 1.
The SynthEdit SDK now provides helper classes that will convert MIDI for you.
This allows you to write your MIDI code without having to handle all the different types of MIDI.
Note: It’s recommend that you write your modules to use MIDI 2.
The SDK contains the ‘MIDI to Gate’ module that shows how to write a MIDI 2 module that also accepts MIDI 1 transparently.

You can intercept the MIDI signals anytime before it reaches the Patch Automator.
Note that the MIDI-CV also secretly sends it’s MIDI data there too.
By default the MIDI in SE 1.5 is Version 2.0. The MIDI-In module converts everything to MIDI V 2.0. You can send version 1.0 also, but SE’s own MIDI modules will tend to covert it back into Version 2.0 if they get a chance .

MIDI Messages and (basic) Standards.
MIDI messages are made up of 8-bit bytes that are transmitted serially at a rate of 31.25 Kbit/s. This rate was chosen because it is an exact division of 1 MHz, the operational speed of many early microprocessors.  The first bit of each word identifies whether the byte is a status byte or a data byte, and is followed by seven bits of information. A start bit and a stop bit are added to each byte for framing purposes, so a MIDI byte requires ten bits for transmission

A MIDI link can carry sixteen independent channels of information. The channels are numbered 1–16. A device can be configured to only listen to specific channels and to ignore the messages sent on other channels (omni off mode), or it can listen to all channels, effectively ignoring the channel address (omni on). An individual device may be monophonic (the start of a new note-on MIDI command implies the termination of the previous note), or polyphonic (multiple notes may be sounding at once, until the polyphony limit of the instrument is reached, or the notes reach the end of their decay envelope, or explicit note-off MIDI commands are received). Receiving devices can typically be set to all four combinations of omni off/on and mono/poly modes

A MIDI message is an instruction that controls some aspect of the receiving device. A MIDI message consists of a status byte, which indicates the type of the message, followed by up to two data bytes that contain the parameters. MIDI messages can be channel messages sent on only one of the 16 channels and monitored only by devices on that channel, or system messages that all devices receive. Each receiving device ignores data not relevant to its function.  There are five types of message: Channel Voice, Channel Mode, System Common, System Real-Time, and System Exclusive.

Channel Voice messages transmit real-time performance data over a single channel. Examples include “note-on” messages which contain a MIDI note number that specifies the note’s pitch, a velocity value that indicates how forcefully the note was played, and the channel number; “note-off” messages that end a note; program change messages that change a device’s patch; and control changes that allow adjustment of an instrument’s parameters. MIDI notes are numbered from 0 to 127 assigned to C−1 to G9. This corresponds to a range of 8.175799 to 12543.85 Hz (assuming equal temperament and 440 Hz A4) and extends beyond the 88 note piano range from A0 to C8.

System Exclusive messages
System Exclusive (SysEx) messages are a major reason for the flexibility and longevity of the MIDI standard. Manufacturers use them to create proprietary messages that control their equipment more thoroughly than standard MIDI messages could.  SysEx messages use the MIDI protocol to send information about the synthesizer’s parameters, rather than performance data such as which notes are being played and how loud. SysEx messages are addressed to a specific device in a system. Each manufacturer has a unique identifier that is included in its SysEx messages, which helps ensure that only the targeted device responds to the message, and that all others ignore it. Many instruments also include a SysEx ID setting, so a controller can address two devices of the same model independently. SysEx messages can include functionality beyond what the MIDI standard provides.

Time code
A sequencer can drive a MIDI system with its internal clock, but when a system contains multiple sequencers, they must synchronize to a common clock. MIDI Time Code (MTC), developed by Digidesign, implements SysEx messages that have been developed specifically for timing purposes, and is able to translate to and from the SMPTE time code standard. MIDI Clock is based on tempo, but SMPTE time code is based on frames per second, and is independent of tempo. MTC, like SMPTE code, includes position information, and can adjust itself if a timing pulse is lost. MIDI interfaces such as Mark of the Unicorn’s MIDI Timepiece can convert SMPTE code to MTC

More Info: https://en.wikipedia.org/wiki/MIDI