If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
How "draw" method is executed from Stack in FlowStone/Ruby?
44 posts
• Page 3 of 5 • 1, 2, 3, 4, 5
Re: How "draw" method is executed from Stack in FlowStone/Ru
Nowhk wrote:tulamide wrote:Flowstone's task is to sit as a slave in a DAW and react to everything the DAW requires it to do.
And what about if you use FlowStone as standalone application? (not my case, but just curious).tulamide wrote:A midi signal comes in from the DAW, Flowstone sends audio out.
With delay compensation, everything is exactly on point.
With audio/stream, this is true, all is sync! Its also written and documented in the manual.
But... also with MIDI? They are "trigger" data types (i.e. green), and its written everywhere that green are not sync with audio (its the first/important rule I've learned in FlowStone). Since they acts as green, who can assure to me that they are treat in sync with audio? If DAW send event data (i.e. MIDI) and FlowStone has not a control rate sync with audio (because of the green nature), how can process audio sync with them? Or the story about unsync green is partial true for this kind of process?
I'm really confused here, and I'd like to understand this missing part of FlowStone (very important to me, but I can't got it since lack in documentation). Please, can you shine me?tulamide wrote:But reading what you are complaining about let's me assume you don't want to create a plugin, but a host. Because only a host needs to be perfect in midi timing to be able to control the flow of things.
And if I'm just making an arpeggiator? FlowStone can't do it?
First question is easy to answer: Depends on what application you use it for. As I said, if you try to use it as a host, it won't work. For all other applications it works just fine.
Second Question is even easier to answer: As far as I remember, MIDI has a red color, not green! MIDI is red so that everyone can easily see that isn't part of green.
I also said that reacting to an incoming signal is instant and right on time. So if a midi signal comes in, say at the first 16th, the sound comes out at the first 16th, or the changed midi comes out at the first 16th. Shouldn't be too hard to understand
But why are you talking of sync to audio? MIDI is a protocol that has nothing to do with audio. It just sends events back and forth to control the behaviour of digital instruments, it uses its own timing system (which is way less accurate than 44.1kHz, for example 96 ppq at 120 bpm at signature 4/4 means a midi timing of 192 Hz, resp. pulses per second) to do so, and never interacts with audio. That's two different things.
Third question: There are gazillion of arpeggiators out there made with Flowstone. And guess what? None of them are sync'ed to audio, but sync'ed to ppq, which is the timing system for MIDI. They ask the DAW at which pulse they currently are and react accordingly. Again, a plugin is a slave! It does not control the flow, it just has to react to it. The flow is controlled by the DAW.
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: How "draw" method is executed from Stack in FlowStone/Ru
@tulamide
The problem is just what you write,
it is synchronized with the PPQ, and this is not enough.
In any of VST, the MIDI implementation buffer is filled before processing the audio buffer in a queue list,
with an index offset as the audio buffer size.
So later when the audio buffer process is run,
it reads the list of midi events from the queue,
having as its index offset the advancement of audio pointer of the process,
thus ensuring the true synchronicity of events.
Now not knowing how effectively the process is implemented by C ++ side, here it only creates a lot of talk.
If MyCo or Malc we would reveal how it really is processed, so we discuss how to solve the existing issue:
except the audio portion,
nothing in FS is guaranteed that it can be synchronized per the sample, as in most of the VST existing framenworks,
and here one speaks also for automation, you can ensure that they are executed and synchronized per sample?
The problem is just what you write,
it is synchronized with the PPQ, and this is not enough.
In any of VST, the MIDI implementation buffer is filled before processing the audio buffer in a queue list,
with an index offset as the audio buffer size.
So later when the audio buffer process is run,
it reads the list of midi events from the queue,
having as its index offset the advancement of audio pointer of the process,
thus ensuring the true synchronicity of events.
Now not knowing how effectively the process is implemented by C ++ side, here it only creates a lot of talk.
If MyCo or Malc we would reveal how it really is processed, so we discuss how to solve the existing issue:
except the audio portion,
nothing in FS is guaranteed that it can be synchronized per the sample, as in most of the VST existing framenworks,
and here one speaks also for automation, you can ensure that they are executed and synchronized per sample?
- Tronic
- Posts: 539
- Joined: Wed Dec 21, 2011 12:59 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
tulamide wrote:Second Question is even easier to answer: As far as I remember, MIDI has a red color, not green! MIDI is red so that everyone can easily see that isn't part of green.
Well, they are Red (and draw yellow) but are listed as "trigger data types".
tulamide wrote:I also said that reacting to an incoming signal is instant and right on time. So if a midi signal comes in, say at the first 16th, the sound comes out at the first 16th, or the changed midi comes out at the first 16th. Shouldn't be too hard to understand
But why are you talking of sync to audio? MIDI is a protocol that has nothing to do with audio. It just sends events back and forth to control the behaviour of digital instruments, it uses its own timing system (which is way less accurate than 44.1kHz, for example 96 ppq at 120 bpm at signature 4/4 means a midi timing of 192 Hz, resp. pulses per second) to do so, and never interacts with audio. That's two different things.
Of course they are generated by DAW or played by human at that resolution (usually), but thats different. DSP flow (for what I know) process events at fixed control rate, for the current buffer. Well, this also happens in Flowstone? Since they are described as " triggers", it seems to happens asap. So how could they generated the sound at some point (from itself) if "some point" happens not a fixed time (i.e. triggers=unpredictable time). Thats what I don't get. MIDI are following a Control rate (not write in the manual)? Such as when MIDI event occurs, the following audio linked to it (i.e. poly) full the buffer at the time MIDI was sent?
tulamide wrote:but sync'ed to ppq, which is the timing system for MIDI. They ask the DAW at which pulse they currently are and react accordingly
Where are written these informations? Are they a guess?
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
Regarding your last question: Just ask the Flowstoners who created the arps. Or do a search around this forum. Or look for schematic examples.
For the other questions: I've already answered them. If you want to know how it's programmed, only Malc can answer that. So please ask him directly, via support@dsprobotics.com
For the other questions: I've already answered them. If you want to know how it's programmed, only Malc can answer that. So please ask him directly, via support@dsprobotics.com
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: How "draw" method is executed from Stack in FlowStone/Ru
tulamide wrote:For the other questions: I've already answered them. If you want to know how it's programmed, only Malc can answer that. So please ask him directly, via support@dsprobotics.com
I don't need to know how it is programmed But how it works. You don't answer to me really, and Support mail is hard to get answer (tried in the past). Thats a community, why dont talk together?
Re starting from basic knowledge: control rate is at PPQ tick inside Flowstone? Is there any control rate or somethings different?
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
Let say I ignore for now to understand "how things are programmed inside FlowStone". I still really don't know where I am wrong here, because I'm not able to keep sync Ruby timing with MIDI that will be trasmitted (outputted) to the DAW (FL Studio). Ruby Code is very basic:
where midi_in is a bool and midi_out a MIDI connector linked to a MIDI Out prim (which output MIDI to FL Studio). Once I trigger the bool, it sends 4 MIDI notes to DAW that play (each) a simple sine wave within a plugin (Sytrus in my example).
If I record some shoots of these 4-note-score provided by the script above and I play together two of them (one with polarity reversed) I don't get a NULL test: I hear a bit of audio. They are quite similar, yes: but they must be "equal".
Thus, I'm not able to sync MIDI with Ruby timing, or I don't know what I'm missing. Any clues?
- Code: Select all
def event i,v,t
if(i=="midi_in" && @midi_in==true)
setupMIDI
0.step(@note_pitches.size-1) do |i|
note_on = Midi.new 144,1,@note_pitches[i],@note_velocity[i]
note_off = Midi.new 128,1,@note_pitches[i],@note_velocity[i]
output "midi_out", note_on, t+@note_start_times[i]
output "midi_out", note_off, t+@note_end_times[i]
end
end
end
def setupMIDI
@note_pitches = [57,62,65,60]
@note_velocity = [100,100,100,100]
@note_start_times = [0,0,0.06,0.07]
@note_end_times = [0.23,0.15,0.21,0.23]
end
where midi_in is a bool and midi_out a MIDI connector linked to a MIDI Out prim (which output MIDI to FL Studio). Once I trigger the bool, it sends 4 MIDI notes to DAW that play (each) a simple sine wave within a plugin (Sytrus in my example).
If I record some shoots of these 4-note-score provided by the script above and I play together two of them (one with polarity reversed) I don't get a NULL test: I hear a bit of audio. They are quite similar, yes: but they must be "equal".
Thus, I'm not able to sync MIDI with Ruby timing, or I don't know what I'm missing. Any clues?
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
For help the "investigation", here's two example!
One for FL Studio owner (basic Patcher with Sytrus and no addittional plugins):
and the same schematic that works in FlowStone standalone (which will play/send MIDI to Microsoft GS Wavetable):
both are out of sync during playing (press play on FL Studio or switch the boolean to True in the schematic). Or I am wrong in some places or FlowStone/Ruby can't sync MIDI properly
One for FL Studio owner (basic Patcher with Sytrus and no addittional plugins):
and the same schematic that works in FlowStone standalone (which will play/send MIDI to Microsoft GS Wavetable):
both are out of sync during playing (press play on FL Studio or switch the boolean to True in the schematic). Or I am wrong in some places or FlowStone/Ruby can't sync MIDI properly
Last edited by Nowhk on Tue Mar 22, 2016 11:11 pm, edited 2 times in total.
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
you have read this?
viewtopic.php?f=3&t=1255&start=0
viewtopic.php?f=3&t=1255&start=0
- Tronic
- Posts: 539
- Joined: Wed Dec 21, 2011 12:59 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
Tronic wrote:you have read this?
viewtopic.php?f=3&t=1255&start=0
Yes, but thats about green and problem on alignment/PPQ when I trigger a note. My problem is different: the MIDI notes created at every "Ruby recursive call" plays different between each others (start at different times). So once the loop starts I can hear (during the time) different sound (which I shouldn't).
Last edited by Nowhk on Tue Mar 22, 2016 11:32 pm, edited 1 time in total.
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
Re: How "draw" method is executed from Stack in FlowStone/Ru
Here's the recording (MP3 192) of some bars after pressing "play" in my DAW:
near the end it becomes somethings like a swing Huge async...
near the end it becomes somethings like a swing Huge async...
- Nowhk
- Posts: 275
- Joined: Mon Oct 27, 2014 6:45 pm
44 posts
• Page 3 of 5 • 1, 2, 3, 4, 5
Who is online
Users browsing this forum: No registered users and 46 guests