From the original SynthMaker forum (2004–2014), with its members’ names and dates.
dasdeck ·
is it possibel to set a specific key range to respond to, like the note equal does it for one note? it would be nice, if not nessesary to do so.
I also wonder if there is a way to get the buffer offset of the incoming midi note/message (Delta variable of the VstMidiEvent Struct). I know some hosts do not support it while recording, but some do, and i would like to build a mini midi recorder. I think the sample pos comp has to work too to archive what i'm looking for.
D3CK
NothanUmber ·
is it possibel to set a specific key range to respond to, like the note equal does it for one note? it would be nice, if not nessesary to do so.
That should do what you want.
I also wonder if there is a way to get the buffer offset of the incoming midi note/message (Delta variable of the VstMidiEvent Struct).
I'm not sure if I understand that right but if you want to measure the elapsed time between two midi events you can do that with the timer component (in theory, there seems to be a bug that could prevent that plan but it should be possible with a later version of SM)
i would like to build a mini midi recorder.
Perhaps the "Midi Buffer" component is already doing what you want. Otherwise you could use some arrays in combination with the Midi Split and Midi Event component but you'll presumably need the timer construct from above so it could be prevented by a bug atm.
I think the sample pos comp has to work too to archive what i'm looking for.
There is a module called "Sample Position", haven't used that though but perhaps that's what you want.
Greetings,
NothanUmber
dasdeck ·
thanks for the note range filter! I did not think long enough 😊 .
shure, i could measure the time between midi events in milliseconds, but this would be the second time (at least through many hosts) you force the midi events to milliseconds. It would be more precise to get the postition releated to sample pos calculated by the host. Windows pathes MIDI in one millisecond rate i think, so setting another millisecond timer to measure another time it would double the timing error, at least this is what i think will happen.
If the comp called "Sample Position" works some time, it may have buffer size resulution like sample pos from the VST SDK, means if you have a (ASIO) buffer size 512, the samplepos is a multiple of 512. it counts in 512 steps. MIDI events can occour while one block is computet (especially if the buffer size is big), so one should know when the MIDI event occours during the buffer time, this is what the mentioned delta variable(offset) from the VST SDK struct VstMidiEvent(or something like that, the midi event type)is for. maybe there is another way to get the exact time. at least it should be possible to record exactly what i'm hearing via midi.
On the other hand there are many hosts wich do not pass this offset variable to the plug in, so you have to use your own timer.
D3CK
NothanUmber ·
If the comp called "Sample Position" works some time, it may have buffer size resulution like sample pos from the VST SDK, means if you have a (ASIO) buffer size 512, the samplepos is a multiple of 512. it counts in 512 steps. MIDI events can occour while one block is computet (especially if the buffer size is big), so one should know when the MIDI event occours during the buffer time, this is what the mentioned delta variable(offset) from the VST SDK struct VstMidiEvent(or something like that, the midi event type)is for. maybe there is another way to get the exact time. at least it should be possible to record exactly what i'm hearing via midi.
Hm, perhaps you could take a timer that is reset and restarted every time the "Sample Position" value changes (just interpret it's output as a trigger). Then you can count the milliseconds between two sample buffer refreshes without the need of additional information from the host (I don't know for sure whether there is a possibility to get that information if it's available but I guess that's not not the case atm.)
Greetings,
NothanUmber
lalo ·
i would like to build a live midi recorder too 🙂
...the midi buffer has some issues when i tried it....
it would be needed to have a buffer to keep traks of delta times between note on events and note off events...and the duration of single notes...this would need a way to tag every incoming note with an individual id and to calculate the time between note on and note off of a note with a particular id..
yep..it should be at sample-precision...
look here
midi buffers?
for some midi buffer related things 🙂
lalo
NothanUmber ·
Will try how far I come with a simple midi recorder (will use millisecond timers as others aren't available atm.) but I'm not sure if it works due to the midi vs timer bugs...
Greetings,
NothanUmber
NothanUmber ·
Have something that looks as it could work on first sight - unfortunately it doesn't. Haven't found out whether it's a bug in the schematic or one in SynthMaker. If someone want's to have a look feel invited (no, the schematic won't win a beauty price it's "quick and dirty"), I let it rest for the moment as I have no clue what could be wrong (recording seems to work on first sight but playback is not working: the counter that is connected to the "all variables avaiable?" Int Greater component doesn't increment it's value so perhaps the Get At components don't send their done trigger signals as expected...).
One feature of that recorder is that you can set recording and playing positions indepenently so you can record some notes, listen to the result and then record further from the position of the last recording etc.
If this basic schematic would work one could add options to reposition the playing and recording position e.g. to a specific event (easy) or to a time in milliseconds (not too difficult either, just increase the appropriate counter from zero and add up the correspondant time values that are stored in the array until the result is greater than the desired mark - then you have found the right counter value).
Greetings,
NothanUmber
Tom7777 ·
Hi NothanUmber, i just had a quick look, as you say its not working but it seems like it should work, there was no midi output at all for me, when i delete the 2 Bool 2 True/False modules and directly connect the int out from the toggle replay i get output but SM will slow right down and crash after a bit. The midi buffer would probably work as a better method for doing this but it needs to be fixed i think. Its a very interesting way of doing it though, i havent yet used the int array modules but you have given me a good idea of how they could become very usefull 🙂
lalo ·
yes..the int array could be used to sore anything...we only need a sample-precise timer to measure delta times 😉
and do all the tick sequencer stuff
very interesting readings....based on max and msp but good for grasp the live sequencing idea 🙂
NothanUmber ·
Tom777 wrote: when i delete the 2 Bool 2 True/False modules and directly connect the int out from the toggle replay i get output
Huch, forgot to delete them, makes much more sense that way of course 🙂
lalo wrote: we only need a sample-precise timer to measure delta times
I don't have anything against timers that work with milliseconds in theory - if they would work in all cases. In most cases I think they are even more helpful than timers that run with sample counts as timebase as this can change (so one would have to use the sample rate information in order to eliminate this samplerate dependency afterwards) And if a (approximately) sample precise timer is needed, couldn't one just build that on your own? (Will try that at the evening and have another look at the midirecorder, perhaps I simply overlooked something but the slowdown thing Dan described sounds like the midi vs timer battle again - haven't had a look though)
Greetings,
NothanUmber
lalo ·
NothanUmber wrote:
Tom777 wrote: when i delete the 2 Bool 2 True/False modules and directly connect the int out from the toggle replay i get output
Huch, forgot to delete them, makes much more sense that way of course 🙂
lalo wrote: we only need a sample-precise timer to measure delta times
I don't have anything against timers that work with milliseconds in theory - if they would work in all cases. In most cases I think they are even more helpful than timers that run with sample counts as timebase as this can change (so one would have to use the sample rate information in order to eliminate this samplerate dependency afterwards) And if a (approximately) sample precise timer is needed, couldn't one just build that on your own? (Will try that at the evening and have another look at the midirecorder, perhaps I simply overlooked something but the slowdown thing Dan described sounds like the midi vs timer battle again - haven't had a look though)
Greetings,
NothanUmber
yes i guess a sample-precise timer is just a code-module counter...
i'll try to come up with something when i'll have some time....
plus...i'm lazy 🙂 ....sometimes i search for primitives that can be made up with serious low-level work....i'l try to improve myself in this area 😉
lalo
Tom7777 ·
One thing you also need (i just made a quick midi record function also, not working so great though) is a flush/clear trigger on the int/float array modules otherwise the notes will just keep on building up, in my version i made it so it makes a loop and records to a position when you play note, like a 32 bar step sequencer type thing and it works but its very buggy though and the audio builds up if you keep playing for a while. Im still waiting for the updates to the midi buffer module as it should do basic recording fine, its only if you want to make an midi application such as fruityloops that you should use the array and logic method i think, then again that might be what your trying to make. 🙂
lalo ·
i'm after to build a live midi multitrack recorder...
record on the fly my performance on midi controllers (notes and cc) and eventually quantize the recording at a given quantize-value....and sync the record/play/stop/mute function of every track to a master tempo wich is shared by all vst plugins...
i'd use all this things in bidule...
together with some live audio recorder/player....
...instant composition..
lalo
Tom7777 ·
Does anyone know if the parser module can extract data from a list of floats? I can't work the parser module out still so i can't do it. For eaxmple.
an array of float values such as
0.1
0.2
0.3
Goes into a data type and is some way converted into 3 seperate outputs.
If someone knows how that would be great, if your wondering why i want this its so i can visually display where the notes have been played.
NothanUmber ·
Sorry, don't really understand what you mean by this, parsing a string that contains a series of floats is simple with the parsing components and reading values from a float array is rather straightforward too, so presumably you're searching for something else (Just for the case here a schematic that does the two things I mentioned above).
Btw. wasn't able to create the sample accurate timer module (see bug report) and didn't find a further mistake in the midirecorder either, I resign 😕 - for now 😉
Greetings,
NothanUmber
Tom7777 ·
Hi NothanUmber, thanks for the example you made, this was actaully what i needed (the parser version) as im still trying to learn the parser module basics, it seems like quite a simple method, thanks 🙂
Wrote something here? To have a post removed or your name hidden, write to [email protected].