From the original SynthMaker forum (2004–2014), with its members’ names and dates.
geekygenius ·
Hello, I have managed to figure out most of SynthMaker on my own, but I don't really have a solid understanding at the most fundamental level. I have no idea how one would trigger notes. In particular, for an on-screen keyboard, or an arpeggiator. I can change my voice module if needed, I think it's important, but I'm not entirely sure.
Thanks for any help!
~geekygenius
nix ·
The easiest way is to use 'MIDI event' module.
Note on is 144 status,
and off is 128 .
then you define the note no. and the velocity.
Otherwise,
You can feed a frequency to an oscillator,
and multiply it by 1 for note on, and 0 for silence.
If you you use a cycled array for the multiplier,
you have a sequence.
Use a cycled array for pitch too,
and can create arp.
If you get stuck, pls. post yer .osm and i can try help 8D
Midi timing for other than keypresses is terrible.
hmm, just a tick and I'll find you Exonerate's
sequencer, which taught me heaps.
trogluddite ·
Hi there, welcome to the forum.
The simplest way to do this is by generating a MIDI note - you can then plug this into the "MIDI to Poly" primitive to give the same effect as a notes coming in from a MIDI keyboard etc.
There are two options...
1 - Use the "MIDI Note Event" primitive - simple to use, but it has the limitation that it can only send notes of a fixed length.
2 - Create discrete Note On and Note Off events using the standard "MIDI Event" primitive - which is done like this...
These two are the only practical way to do it if your note output needs to be polyphonic - however, if you are making a purely monophonic synth, it is possible to bypass using MIDI entirely by using purely mono (blue) streams instead of poly (white) ones...
- Oscillators just need a frequency value in order to play a pitch - there are several modules for converting between Pitch (MIDI note numbers), Frequency in Hertz, or "Normalised" frequency (goes from 0 to 1). So if you don't get the pitch you expect, chances are that the oscillator just needs its frequency value converting to one of the other formats (the same is true for filter cutoff frequencies etc.)
- You can take control of envelopes by ticking the "Gate" option on their properties page, and connecting a suitable signal to the Gate input. This bypasses the usual "automatic system" that the MIDI to Poly uses, enabling you to trigger them without the usual MIDI setup.
Although it is a bit more complex, doing it without MIDI does have one big advantage - the timing will be much superior. The "Green" signals in SM have a very coarse timing resolution, and also have very low CPU priority (so they will wait for your CPU to do other stuff before changing values) - whereas White and Blue streams have very accurate timing because they are synchronised to your soundcard's sample rate. You can read more about this if you search the forum for e.g. "trigger timing".
EDIT) Ha, ha - looks like nix can type faster than me! 😉 One word of warning...
nix wrote: You can feed a frequency to an oscillator,
and multiply it by 1 for note on, and 0 for silence.
...for sure, an oscillator with frequency zero will not oscillate - so you hear no sound. However, setting frequency to zero does not mute the oscillator output, it just "freezes" the oscillator wherever it happens to be in the waveform - so you still get a fixed number at the output (a "DC Offset"), which can sometimes have nasty side effects when you mix it with other sounds - it pushes everything up or down, making the audio "lop-sided".
In this case it is a good idea to use an envelope or amplifier (multiplier) to mute the oscillator - to make sure that you reallly do get "nothing" at the output.
Happy SynthMaking!
nix ·
This is really cool IMO,
I have modified it extensively.
This version is the original Exo shared.
It's an arp done in stream, so it's timing is fine to use.
Yep Trog,
I meant multiply by 1 or 0 the osc's output to mute,
not the frequency.
This also needs dezipping, actually.
So that can be done with a dezipper or biquad/lowpass filter,
alternately to an envelope.
Cheers for explaining that better trog 8D
indeed happy experimenting chap
trogluddite ·
nix wrote: This is really cool IMO
You swine - I had loads of chores to get done, and you go and post this! 😉 😈
Arp + Step.seq all-in-one, it sure is still a beauty! 😀
nix ·
You're gonna hate me now!
I sent through my version 😉
Xtinct ·
Any ideas why this doesn't work 😕
I know its going to be something simple 😊
philter5 ·
yeah thx for the reminder nix ! i can remember this nice schematic, too. the EXO arp hehe....
years ago when this was posted by exo i remember i packed 4 of this arps in one schematic and it sounded really great...
just the CPU load was WAY too high at that times....maybe now it´s time for a new try(in the age of multi-core´s)? 😍
trogluddite ·
Xtinct wrote: Any ideas why this doesn't work
It works better if you set the boolean for "Hold Stolen" to false. If it is true, the MIDI to Voices remembers all of the last played notes, then the Note Off message turns off the most recent one, but one of the 'stolen' notes will re-appear.. This also means that it will not work polyphonically.
(NB) While trying to fix it up, I noticed that the MIDI to Voices misses a big pat of the MIDI spec' - it does not respond to All Notes Off or All Sounds Off messages!)
However, there is a way to do it, that will also work polyphonically...
In this method, Note Off events are directed to the MIDI Buffer instead of the MIDI to Poly, so played notes will latch on. When hold is turned off, the buffer is flushed - sending all the stored Note Off events to the MIDI to Poly. If the hold button were operated by CC64, this would create the standard MIDI sustain pedal action.
Note that to properly meet the MIDI spec', it would need a bit of extra logic - a Note On event with velocity=0 also counts as a Note Off, and there are a few MIDI KB etc. that use this method instead of proper Note Off messages.
philter5 ·
trogluddite wrote: (NB) While trying to fix it up, I noticed that the MIDI to Voices misses a big pat of the MIDI spec' - it does not respond to All Notes Off or All Sounds Off messages!)
😮 😕 i have to search this old thread again but i am damned sure that at least AllNotesOff worked in the past...
i remember i´ve used it in some kind of "fake"active sensing for midi to prevent stuck notes .... 😕
trogluddite ·
I have been wrong before! - and It is the kind of thing I would remember if there has been a bug thread. Maybe I was sending to the wrong MIDI channel or something - worth some more testing, anyhow.
geekygenius ·
Sorry I haven't had any input, but I was on vacation. Anyways,
I'm using a voices module, the one that comes with the default patch. It looks like this from the inside. http://prntscr.com/dslq0 Should i use a MIDI to Voices primitive, then combine the two voices outputs from the Voices module, and the MIDI to voices module? (If that makes sence)
Essentially, I am using a voices module. How would I add support for plugin generated MIDI messages, or should I control it some other way?
Wrote something here? To have a post removed or your name hidden, write to [email protected].