From the original SynthMaker forum (2004–2014), with its members’ names and dates.
NothanUmber ·
Hi,
have found a little bit of time playing with Synthmaker again 🙂
I'm into building a vst-plugin that manipulates a midi stream accordant to certain rules and outputs the result as midi again. The most important missing features (or at least things I couldn't find out how to accomplish) for that task are:
* MIDI inputs and outputs for vst-plugins
* a component that analyzes the incoming midi data (a midi in, integer outputs for note pitch and velocity, a boolean output that indicates whether a note is played etc.) I found the midi to poly component but that's not too useful for calculations (no poly comparison, math etc.)
* perhaps some more simple to use specialized midi event generator components (e.g. create note on, off, create CC with number X and value Y etc.) (can I use "create MidiEvent" e.g. for creating note ons? Haven't completely understood how to use that component...)
* a programmable midi filter for notes and CCs
* midi support in the code component (lower priority if the things above would be there)
Greetings,
NothanUmber
stefan ·
Midi in's and outs already exists.
The midi event generator can be used to generate note ons / note offs / cc's and whatnot. There's also one component that can filter out specific midi notes. Look at the timer schematic, here:
timers / animation
The rest is missing though... 🙂
NothanUmber ·
Thanks, I will have a look at the example! I think with just the addition of a midi analyzer component my project should then be possible 🙂
stefan ·
Could you describe a bit more elaborate what it is that you want to achieve? If you're lucky, it might already be doable.
NothanUmber ·
ok, I'll try to describe my project a little bit:
I want to build an instrument that consists of two ribbons that are mounted above each other and a breath controller, where the ribbons act as some kind of "special featured" strings: In "base mode" the lower ribbon playes the notes c0 to c4, the upper one c4 to c8. (Well in order to hear something one has to blow into the breath controller of course). Now if one holds a "string" and touches the other one while still holding the first one the other string tunes itself a quint higher if the new touching point is below the one on the original string and otherwise one quint deeper if the new touching point is above the original one. If one releases one of the strings, the other one becomes the new "reference string" for new touches of the other string. If both strings are released the instrument goes back to base mode (c0 to c4 for the lower and c4 to c8 for the upper string). An important aspect is that volume/velocity is controlled by the breath controller so one can play "silent switches" e.g. to make jumps in runs that are greater than a quint etc. That instrument could be fun to play 🙂 (As the strings are frettless it will perhaps have a relatively steep learning curve - but it should be easier than e.g. a violin as the scale is not logarithmic but linear.)
So now the vst should implement the described logic for the strings.
Greetings,
NothanUmber
stefan ·
Ok, that would be doable if the ribbons and the BC outputs CC's, than you could extract the CC values and apply the proper logic from these, and then generate the corresponding midi messages. If I wasn't so goddamn busy atm I'd knock it all up for you, but. I am.... :/
NothanUmber ·
Letting the ribbons output CCs instead of notes is a good idea (they indeed also support that mode), I'll try if I can get the vst done with that approach.
The downside is that limits the resolution to 128 steps per 4 octaces 🙁 (in note mode one gets a base note and the divergence as pitch cc so the resolution is up to 48*128 steps for four octaces - the pitch range is variable) But it's a start 🙂
stefan ·
NothanUmber wrote: Letting the ribbons output CCs instead of notes is a good idea (they indeed also support that mode), I'll try if I can get the vst done with that approach.
The downside is that limits the resolution to 128 steps per 4 octaces 🙁 (in note mode one gets a base note and the divergence as pitch cc so the resolution is up to 48*128 steps for four octaces - the pitch range is variable) But it's a start 🙂
What? No! Don't go the cc route! I misunderstood you! I thought you wanted to make them generate the midi notes, but if they already do let them do it! But since there's no way to just extract note information atm, you can't make that quint-thingy atm, you could make the BC etc though.
NothanUmber ·
Just saw in the specs that pitch is a 14 bit value, that reduces the problem a bit (or 6 bits to be exact 😉 ). Nevertheless I'm now halfway done with a schematic that is based on notes input and not pure cc values. For now I use a "dummy analyzer" so I should only have to substitute that with the real thing once it gets released.
P.S.: Now I see that I also need a component that realizes a logical AND operator between two integers (or any other possibility to split a 16 bit integer value into two 8 bit ones...)
NothanUmber ·
Have now something ready that looks as it could perhaps do something if one inserts the missing components (and removes all the hidden bugs 😉 ). One additional thing was not absolutely neccessary but would have been of great aid: a cc filter (e.g. the ribbons are touch sensitive and control an additional cc that way. Without a cc filter one has to sense and regenerate these events instead of just filtering out the ones one wants to modify and then pass all the others to the output unchanged)
NothanUmber ·
Hi,
how is MIDI support going? 😉
(Perhaps it would be good if you could improve the code component to a point where users are able to create missing modules by themselves - or implement a new code component for performance wise "uncritical" data like midi, number calculations etc. that uses e.g. a Python Interpreter (relatively easy to use from C-Code) and a small supporting library to access SynthMaker related stuff from that component (e.g. Blender ( http://www.blender.org ) goes that route with many interesting results ). Another possibility could be to use WSH (as already proposed here ( Windows Scripting Host support ) but not only for "remote controlling" but also for writing filters and modules that can be plugged in at any place of the data path (a little bit like it's done in MidiOX). (*) Although Python is more common, "nicer" (language wise), plattform independent (just for the case... ) and of course definitly more eleet than Visual Basic Script (bäh... 😉 ) )
NothanUmber
(*) ok, after reading the quoted thread again that seems exactly what mindplay had in... mind 😉 There also exists a Python implementation for WSH (PyScript) so perhaps one finds a solution that makes everybody happy 🙂
NothanUmber ·
The concept of "cmdlets" of the upcoming Monad (scheduled for Longhorn) looks also promising. (You can pipe .NET objects around between applications and control all this from scripts or more or less simple commands from a new command shell):
(see chapter 5 "Enter the Programmer" of the video)
I have doubts when/whether Microsoft provides a WSH.NET (it was vaguely announced 2001 but not released up to date) so perhaps this plattform will become deprecated in the not too distant future (At least in it's current form). (Anyways here I found a ready to use scripting host that is based on .NET: http://www.dotnetframework.de/(fz04qq45ybkdwl555nbx2c2j)/default2.aspx?start=http://www.dotnetframework.de/scripting/dotnetscripting/ no clue in how far that will be compatible with WSH.NET - if it will ever be released).
So eventually the Python VM is a safer bet that WSH for the time being in terms of support and further development - and Mac as well as Linux fans can at least continue to dream about a SynthMaker version for their system 🙂
malc ·
NothanUmber wrote: how is MIDI support going?
Unfortunately it's been on the back burner for a while. I'll try and have a look at this soon. There are quite alot of things stacking up at the moment.
I'd say that it's unlikely we'll have MIDI scripting/coding in the near future but we can certainly make the components you'll need. I'll get back to you on this - do please give me a nudge if time passes and you've heard nothing 🙂
Thanks for the .NET info - will check it out at some point.
Wrote something here? To have a post removed or your name hidden, write to [email protected].