Sylphyo and Mainstage
I too found the youtube video with Pedro Eustache very inspiring. I am a beginner with electronic music and am a bit lost as to where to begin in trying to create something similar to what Pedro shows.
My basic questions;
Can you only use sounds specifically made to respond to CC messages (as those sent from the Sylphyo ..elevation, roll sliders..etc), or can any sound be made to respond to these CC messages? How does one assign these to the sound. I have assigned different controllers in mainstage, and they respond to the Sylphyo - elevation roll etc? All the videos I have seen on Mainstage use keyboard controllers...
Any help appreciated. Thanks
Clint last edited by
@paul-flute Could you say which YouTube video are you referring to? This one ... https://www.youtube.com/watch?v=YdiqO-dJoRY ... is the top hit for "Eustache Sylphyo Mainstage" ... but I'm not sure that's the one.
In my limited experience so far, I have had to do some basic customization to most of the virtual instruments that I want to respond to CC messages such as those generated by the Sylphyo Elevation, Roll, and Compass (Pitch, Roll, and Yaw). This customization has been straightforward in the sound-rendering tools that I use: Kontakt, Reaktor, Cantabile, Respiro, and other plugins all have some straightforward way to map a given CC to a given control within their interface.
In particular, I have found Cantabile to be excellent with respect to managing the overall structure of a song (and a full set list), with all their attending instruments, effects, routes, interfaces, and recording requirements. One thing it does not really handle is live looping - I am currently using a physical looper for that.
However, some of the "MIDI Learn" functions that are straightforward for keyboard players are not so useful with the Sylphyo, since it is producing multiple CCs whenever you move the instrument. A few tools will display a choice of all the received CC messages when you initiate a "MIDI Learn", but it can be a challenge. I usually just type in the controller number and range.
Another challenge may be how to map the range of CC value to the desired behavior. Some CC values produced by the Sylphyo - elevation, for example - were not what I had imagined at first, and I had to sit down with the Sylphyo Bench application or run a MIDI monitor to explore what was actually being sent by the Sylphyo.
I have found that having a good command of the MIDI monitor tools in my system to be critical to diagnosing subtle playing issues. One or another virtual instrument might respond unexpectedly to the precise sequence of MIDI commands output by the Sylphyo, and the MIDI monitor tools come to the rescue (I have found this particularly true with physical modelling engines built by various folks in Reaktor 6).
@clint Thanks for your reply. Here are 2 videos I was referring to; https://www.youtube.com/watch?v=YC6GELu4Ls4 and https://www.youtube.com/watch?v=AX74xgosAek Very interesting what he did here.... Do you know how to modify a stock sound eg ES2 so it triggers by a controller like CC 75 instead of CC 2? thanks
Do you know how to modify a stock sound eg ES2 so it triggers by a controller like CC 75 instead of CC 2?
Clicking on the "MIDI" button near the bottom left corner shows a couple of assignments named Control A-F:
These assignments are used in the modulation matrix in the center area of the ES2. You can either set a modulation matrix source field to match your Ctrl A-F, or set the Ctrl A-F to match a source in the modulation matrix.
For more radical changes or to compose your own sounds you most likely want to set the Ctrl A-F fixed (as your personal standard) to your Sylphyo's CCs and then configure the modulation matrix to your needs.
If you play the ES2 a lot, you rather want to use the second method because the parameter ranges of ES2 presets do seldom fit to your Sylphyo CC ranges. You have to adjust the matrix anyway.
@peter-ostry Thank you. That was helpful. I can see I have a lot of learning to do, to understand all the concepts in sound synthesis. I am trying to figure out how to make, say CC 75, actually trigger the sound without blowing into the Sylphyo. I have managed to make CC 75 attenuate the sound after I have blown... but not to trigger the sound... Thanks again
I have managed to make CC 75 attenuate the sound after I have blown... but not to trigger the sound...
Sorry, I missed this part of the question. We need to talk about the basics.
With the Sylphyo we normally play in MIDI world. We can not trigger a tone just by a CC event. We need a note-on event with note number and velocity value to start the note, and we need a note-off event to end the note. The trick for electronic wind instruments is, to take initial velocity but control the loudness of the tone while it sounds, by a stream of CC messages. Traditionally CC#2 but can be anything else.
As Clint suggested, use a monitoring tool to observe the MIDI stream coming from the Sylphyo. Since you are on a Mac, install Midi Monitor, go to preferences and set the controller format to "decimal numbers". During your monitoring use the various filters to narrow the display to the event types you are interested in.
At very short tones you can easily see that the Sylphyo starts with a breath value, then immediately generates a note-on event with the initial value that is stored in the Sylphyo settings. A stream of CC values follows as long as you blow. When the breath value goes down, a note-off event is generated. Basically you could play similar with a keyboard and a fader or pedal, but not as fluently, intuitive and organic as a good wind controller can do it.
I think this gives you an idea about what you have to do to play a synth you do not know yet:
You have to find your initial velocity. For the beginning and for many sounds you can be lazy and set the Sylphyo's velocity a little below maximum. For sensitive sounds you may want to experiment. A quick way in Logic or Mainstage is, to scale the velocity with the MIDI FX plugin "Modifier" before the instrument. Depending on the system you can also look for velocity curves or other scaling options. Setting the velocity in the Sylphyo diffently for particular sounds is the least convenient way and not recommended.
You got to find a good-sounding way to control the loudness. Sometimes the channel fader can be enough, we often did this with wind controllers in former days as we had less options. I think the Sylphyo sends CC#11 for breath by default. In Mainstage you have an "Expression" dial on each channel. I am not sure what it really does, but it reacts by default to CC#11 and may be all you need. If not, look deeper into the synth to find a parameter that does what you want. Volume, Output, Expression, Amp, Global or Main are common labels for such parameters. For the dynamics of your breath, don't forget that the Sylphyo itself offers breath curves. If you use curves in your computer software, set the Sylphyo's breath curve to linear. Otherwise you never know who scales what.
Clint last edited by
If you use curves in your computer software, set the Sylphyo's breath curve to linear. Otherwise you never know who scales what.
One of the challenges I had when I started with the Sylphyo was volume control at very low breath pressures. Playing very softly (and corresponding large dynamic changes) is characteristic of the music traditions I was coming from (ethnic flutes) and I was getting noticeable jumps in volume coming from silent to pianissimo.
The Sylphyo can only produce low-resolution (7 bit) breath pressure MIDI commands. Aodyo is concerned that doubling the size of the MIDI command in order to produce high-resolution (14 bit) CC#2 will cause capacity issues (see https://community.aodyo.com/topic/545/support-for-high-resolution-midi/12).
I have compensated (successfully!) by using a combination of two breath curves:
My Sylphyo is set to Breath => Curve => Log, and
Many of the virtual instruments I use have breath response curves such as this one in Kontakt:
The "Table" version of that curve looks like this:
... which does exhibit (if you look carefully) a bit of the stepwise nature of 7-bit MIDI velocity curves.
Yes, these two curves (the Sylphyo and the Kontakt) are compounded together to produce the response curve I needed, but they do work quite well for me.
Ah, you are correct.
We should rather say,
"If you use breath curves in your computer software, check how
they interact with the breath curve you have set in the Sylphyo."
My Sylphyo is set to Breath => Curve => Log, and
Many of the virtual instruments I use have breath response curves such as this one in Kontakt
Your Kontakt curve looks flat, but when we transform it to the technically correct quadratic format, we see that you almost equalized the Sylphyo's logarithmic curve. Kind of 'Sylphyo pulls down, Kontakt pushes up'. I am not sure, but the average of your Sylphyo- and Kontakt-curves seems to be similar to a straight line. Could be a typical "double corrected" situation.
I can imagine that you get the same playing result if you use linear in the Sylphyo and just make the beginning flatter in Kontakt.
Clint last edited by Clint
@peter-ostry Yes, uh, well, gee, it does seem that I made an early-on error in imaging what a Log curve is. I was thinking exactly the the opposite, and that may have led me down a long path ...
Here is a sample of the low-breath-pressure issue, played on Sylphyo via Link through the Patchman English Horn sample set, using Kontakt 6 and recorded in Cantabile:
... The critical areas are in the areas (in seconds) of 1-2, 13-15, and 20-22. I initially believed that this "jittering" or "stuttering" was due to 7-bit MIDI, but then got up to speed with modulation curves.
The full discussion of the history of this is on the Native Instruments forum: https://www.native-instruments.com/forum/threads/high-resolution-breath-controller.442309/
So ... I may have to visit this and explore what kind of modulation curves would be suitable if I set the Sylphyo to Breath => Curve => Linear
I know the jitter problem you demonstrate in the audio example. It happens clearly on the lowest breath values. But as I learned with the Respiro Synth, we do not talk about values of 0-3 but rather about those values, where the instrument begins to respond. In a certain Respiro preset the point where the jitter happens (and the main sound comes up) follows the pitch of the note. In the upper octave (C4) it stutters at breath values 0-3. In the C3 octave it stutters around 6-9 and in the C2 octave this happens around 12-15. For physical modeling the moving trigger point is ok, because a lower flute tone needs more air. But the small jitter area right above each trigger point is a technical problem.
Just suppressing the lowest values, like suggested in the NI forum, helps only for sounds that trigger at zero. Not an universal solution. I don't have the technical knowledge to say if high-resolution MIDI would cure this or not. And how many synths support that? Respiro does. Kontakt does not, according to a forum post over there. What surely helps is to play with a volume pedal. Cheating, so to say. Maybe controlling the volume via the Sylphyo's elevation control and a custom volume curve in the synth.
Maybe I will try to feed high-resolution breath streams to various synths just to hear if the jitter problem remains.
Oops, we finally hijacked Paul Flute's thread. Sorry.
Should we continue here or start a new thread or could someone split this thread?
@peter-ostry Hi, I am still searching for help to accomplish what Pedro does in this video; https://www.youtube.com/watch?v=AX74xgosAek. . How does one default the chord triggers in the instrument strip to off? Has he mapped all 3 sliders (top bottom and whole) to CC 13, as he has only 1 screen control responding to all 3, and how would you program this in the mapping? Thanks
Haven't used Mainstage for a long time but I try to remember.
You want 2 ChordTrigger plugins, let's call them "Plugin 1" and "Plugin 2". You want to activate them alternatively. Both should never be on at the same time. But you want to turn them both off with the same control element on the Sylphyo.
The Sylphyo's "Bottom Edge Slider (CC#13)" looks applicable for this task, because it has a dedicated starting point at the very bottom. So it's not likely to operate it accidently. And this starting point (with a little hysteresis) can be used as a main switch, to bypass both plugins.
You want this function:
Sylphyo slider tapped, but very low: both plugins bypassed (this is your main off-switch).
Sylphyo slider a little higher until value 63: plugin 2 active.
Sylphyo slider over 63: plugin 2 bypassed, plugin 1 active.
Here is a screenshot of the two mappings:
It is quite simple, uses just an inverted range for Plugin 1. The plugin is bypassed from 0-63 and active from 64-127.
If you look at the graph symbol, you see that something was done in the mapping for Plugin 2. Here is the graph, that bypasses Plugin 2 if the slider value is 0-10.
(If the "stepped" view shows you different values, just ignore this Mainstage bug. The graph works.)
Here you have your function:
By default, both plugins are bypassed (set this "saved value" as attribute for both "Bypass" mappings). If you tap the Sylphyo slider at the low end (0-10), you activate your CC-13 but plugin 2 stays bypassed. Plugin 1 is off anyway because it needs a value over 63. Moving your finger higher then 10 activates Plugin 2. At the middle point Plugin 2 gets bypassed and Plugin 1 activated. This way you can switch between two chord settings. If you slide your finger fully down or simply lift your thumb, the Sylphyo slider sends a 0 and both plugins are off.
With the method above you have to keep your thumb on the slider as long as you play chords. I haven't thought about a toggle function yet.
This post is deleted!
Thanks Peter, that is an elegant solution. Not bad for someone who hasn't used the program for a while. I wonder what version of Manistage you were using here. I am on 3, and there appears to be an exrra column in mine and there may be some new functionality. ! I haven't found any description of all the choices in the menus and sub menus, so had been doing a lot of faffing around... not having any backgroiund in electronic music...My Sylphyo is giving me trouble, and I am doing a 48hr charge as advised by Aodyo, so I cant see if this works until Friday eve. Thanks again
@peter-ostry I am using the same version on new mac book pro M1. Very frustrating not being able to turn on my Sylphyo until tomorrow... I meant to re mention, that it looks like Pedro as well as having the top & bottom slider controls set to CC13, has the whole slider control set to CC13 as well, with which he is modulating the sound of the main lead sound, and using it as a pitchbend control on another sound... guess thats my next challenge...
@paul-flute Making progress, though I find some of the bugs in Mainstage pretty frustrating. The screens and cursors are jumping around in Edit mode, due to what I presume is the steady stream of Midi data coming in from the Sylphyo. Also while trying to map some controls , I have 3 mappings to 3 separate channel strips playing loops with the Playback plugin. If I try and make all 3 "Playback for Start" one keeps on changing to PDF? Then when I tried to save, program hung and I had to force quit? Has also crashed for no reason many times...
I cannot comment your general complaints because I do not use Mainstage currently. It is known as pretty stable. Although, in former days it sometimes tended to get unstable in layout and edit mode. But what you describe doesn't sound normal. If you run it in Rosetta, you can try native. This may also change the third-party plugins you can use.
Mapping: Since the Sylphyo can send many CCs, avoid the learn function in Mainstage. Set the interface and numbers manually.
General: It could be that you are using a Mainstage template that does not work properly or does not fit to the M1. Rather make a new empty concert, save it as template and start your tests from scratch.
@peter-ostry Yes I set interface and numbers manually. I also start from a blank concert... Another question I have is; my 2 loops I am triggering with elevation CC75 using Playback in 2 channel strips. The loops play but I cannot get them to loop seamlessly, there is always a second or two break at the end of the loop, before it starts again?
Sorry, I don't know anything about playback in Mainstage.
That is not on the performance screen. It is just a picture detail of the channelstrip, superimposed in the large picture.
If you want lights on the performance screen, add two buttons and map them to
(Channelstrip Name) —> ChordTrigger —> Bypass
Invert their range and they will light synchronously to your plugins. You may add hardware labels on the layout screen to tell them apart.
@peter-ostry Ah yes of course... Thank you. (again)