Can anybody help me with getting a functioning polyphonic synth working.
I naively assumed you just needed to have an NoteOff and NoteOn function hooked like the picture shows, and check the “Enable polyphony” in the Make Modular SynthPreset object to get it to work.
It works in the sense that If I break link to NoteOff then I get polyphony but the notes never shut off (except if I ‘hardcode’ the duration) …, but if I keep the NoteOff hooked no sound comes out.
For NoteOff to work, you must trigger a NoteOff event with the same Note value. So if you NoteOn 83, then you must NoteOff 83 for 83 to end.
This is why I use a SWITCH statement.
EDIT: I am confused by your implementation where you Note On and Note Off immediately afterward.
Your graph will execute fully each time you give it some MIDI event. You only want to NoteOn when you have a NoteOn event, you only want to NoteOff when you have a NoteOff event.
A quick question about the MIDIControlID output. When I play note 62 and print it out I get something like 62.000000 - but if I take (float note ) into my function and try to cast it as an int:
int32 IntNumb = (int32) note;
… then I get 0.000000 (no matter what note I play)
(also if i do an unqualified int)
I guess it is a floating point number to allow for pitch bending, but I am going to be gathering musical phrases in arrays and analyzing them and think it is unnecessary to work with the notes as floats, so I am wondering why it isn’t casting properly? Or do you recommend just skipping casting it and work with floating point numbers?
I think the original intention with the Synthesizer was to work with pitch as a float for pitch bending purposes–but in reality, pitch bend should just be done with pitch bend because a MIDI style voice manager necessarily must identify the voice ID by pitch (very keyboard oriented).
Thus, it really SHOULD be an Int, but at the moment it’s a Float.
There is a whole bunch of stuff where I would rather just work in straight code than work with blueprints, but I can’t find much documentation on how, for example, to get current NoteOn and NoteOff note or velocity in C++
I am going to be analyzing pressed note arrays compared to 600 scales and such, and I feel blueprints get overly convoluted very quickly if you are doing anything more complex than simple classes.
Check out MIDIDeviceManager.h and MIDIDeviceManager.cpp (located in Engine\Plugins\Runtime\MIDIDevice\Source\MIDIDevice)
It wraps portmidi and it does so fairly minimally, so you shouldn’t have any trouble figuring out what you want from it. At the very least, you should be able to access its public functions from code!
Hi ! If you’ve copied my script, you’ll should see an area where you can indicate the MIDI Port by name via String input. So you’ll just enter the port name on your MIDI BP, so that it assigns delegates to input on that device.
Hey , What variable name exactly do I enter the string into? do i just enter a numerical value or the whole line of text? and do I input this information in the side bar when the Midi BP is selected?
It compares the user entered MIDI Device Name with all of the MIDI Devices and when there’s a match, it says this, here, this one, that’s the MIDI Device I want you to accept input from.
After about 30-seconds- 1min (or around timestamp 60,000) Unreal just stops receiving midi from ableton every time? Ableton is sending I don’t seem to understand why
Basically, every tick I would get the delta time, and then map that to MIDI ticks, and then read off the top of the Data Table until I’d reached a MIDI Event that was too far, I would stack all the other events I’d read into an Array of MIDI-style BP Structs, and then I would fire off all of the Events.
Hi !! It’s pretty amazing what you do, but I have a big issue with the “Get All Actors with Interface” Interface I have to choose. I really don’t understand where the “MIDI Listener” Interface comes from. I’m a complete noob, by the way. Thanks for your answer !!