From the original SynthMaker forum (2004–2014), with its members’ names and dates.
BobTheDog ·
Hi Guys,
I am looking at the demo and trying to work out if omni mode over multiple midi channels is supported or easily implemented.
Here is some background.
Midi guitars work best when useing omni mode. Each string sends midi data on a seperate midi channel. Pitchbend is very important as it is used for slides, pull offs, hammer ons etc.
So basically I need to be able to take input on 6 channels each with indipendent pitch bend info and have this converted into a poly signal.
Anyone any ideas?
Thanks for any help
Andy
oddson ·
See Dreamkeeper's post in this thread for an example of how to filter MIDI channels.
The MIDI coming out the right-hand-side will be events from the selected channel only.
BobTheDog ·
Hi,
Thanks for the info.
So I can split into 6 midi channels.
How would I then add pitchbend and create a poly signal?
Thanks for any help
Andy
oddson ·
I'm not sure if/how you can reassemble the data into a single poly-stream.
I'm not at my S|M machine right now, I'll have a look at it tonight.
oddson ·
@Bob - does the pitchbend data get sent on CC 1 (coarse) and CC 33 (fine)?
@Devs - can you just add multiple Poly streams (from six different MIDI2Poly components) together and they will become a usable poly stream?
stefan ·
Hm, I doubt it. Maybe you could write the six pitch bends into an array and extract the values from there using Float Array To Poly components. If you can work out how to create proper indices for each poly channel that is.
oddson ·
Thanks Stefan... I didn't think it would be that easy but I wanted to eliminate it as a solution before I tried anything too complex.
unkargherth ·
Mmmmm. Maybe manipulating thing in midi domain....
In short: filter out every midi channel, route it through a module that add de desired pictch bend IN MIDI MESSAGES. Then add up the six midi output into one MIDI to poly module
or i'm saying something stupid ?
BobTheDog ·
Hi Guys,
Thanks for your interest on this, it looks like it is not going to be straightforward!
Concerning pitchbend, I am not a midi expert but isn't pitchbend a 14 bit value seperate from CC messages.
I think it is a byte 0xEn where n is the midi channel followed by two bytes. Where the 14 bit value is the second byte shifted left 7 bits and ored with the first byte.
Cheers
Andy
BobTheDog ·
unkargherth wrote: Mmmmm. Maybe manipulating thing in midi domain....
In short: filter out every midi channel, route it through a module that add de desired pictch bend IN MIDI MESSAGES. Then add up the six midi output into one MIDI to poly module
or i'm saying something stupid ?
Hi,
This message apeared while I was posting my previous message.
This sounds exactly what I need, I have used this technique in Reaktor. Is it possible in SM?
Cheers
Andy
oddson ·
Pitch bend is not note specific, that's why the guitar controller uses 6 midi channels to give the disire result.
The question has definately peaked my interest. I'm still thinking about it.
oddson ·
oddson wrote: @Bob - does the pitchbend data get sent on CC 1 (coarse) and CC 33 (fine)?
Opps - i'm thinking of mod wheel... Pitchbend has it's own status byte so it's automatically two bytes* for data.
* well 7 bits for each of two bytes.
oddson ·
I've had a go at this but I have no idea if it works because I don't have the MIDI gear to test it out.
guitarMidi.osm
Since each midi channel is monophonic (I assume) I figure I can use the pitch value as an ID within a code module and build a poly frequency stream by adding a pitch shift value and then converting to frequency.
stefan ·
Yes, each string is monophonic, but they overlap (a lot) in their pitch ranges.
BUT.... As long as the guitarist doesn't play the same note on two strings (like an A on both the E string and on the A string), your method should work.
BobTheDog ·
Hi,
Thanks alot the patch, it is very good of you to help me out on this.
It works pretty well apart from playing the same note on two strings causes one of the notes to cut out.
I have tried to understand the patch but my abilitys in SM are not quite up to the required level
I think I understand the "MIDI guitar module" this seems to filter out the messages for a particular channel and output the pitch and pitchbend like :
Pitch I = Midi note number
Ptchbend f = ((pbend/8192) -1) * pitchbend range
So basically outputiing the pitchbend in semitones centered around 0 for no pitchbend.
Now to the code, here it gets a bit hazy in my mind I take it that the code sees if the note vale at p = each individual channels note and if so adds the bend value to shift. The output is then the P input plus the pitch shift, this leads to the problem when two midi notes P have the same value.
Am I anywhere near on this?
Cheers
Andy
Wrote something here? To have a post removed or your name hidden, write to [email protected].