Support

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?

For general discussion related FlowStone

Re: How "draw" method is executed from Stack in FlowStone/Ru

Postby tulamide » Thu Mar 17, 2016 9:10 am

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

Postby Tronic » Thu Mar 17, 2016 10:59 am

@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?
Tronic
 
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: How "draw" method is executed from Stack in FlowStone/Ru

Postby Nowhk » Thu Mar 17, 2016 5:21 pm

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". :o

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

Postby tulamide » Thu Mar 17, 2016 6:20 pm

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
"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

Postby Nowhk » Fri Mar 18, 2016 4:53 pm

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

Postby Nowhk » Tue Mar 22, 2016 3:43 pm

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:

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

Postby Nowhk » Tue Mar 22, 2016 7:49 pm

For help the "investigation", here's two example!
One for FL Studio owner (basic Patcher with Sytrus and no addittional plugins):

MIDI Sync.zip
(10.64 KiB) Downloaded 891 times

and the same schematic that works in FlowStone standalone (which will play/send MIDI to Microsoft GS Wavetable):

MIDI Sync.fsm
(570 Bytes) Downloaded 880 times

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

Postby Tronic » Tue Mar 22, 2016 8:23 pm

Tronic
 
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: How "draw" method is executed from Stack in FlowStone/Ru

Postby Nowhk » Tue Mar 22, 2016 10:17 pm

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

Postby Nowhk » Tue Mar 22, 2016 11:10 pm

Here's the recording (MP3 192) of some bars after pressing "play" in my DAW:

recording.zip
(174.57 KiB) Downloaded 924 times

near the end it becomes somethings like a swing :shock: Huge async...

Immagine.png
Immagine.png (73.86 KiB) Viewed 18853 times
Nowhk
 
Posts: 275
Joined: Mon Oct 27, 2014 6:45 pm

PreviousNext

Return to General

Who is online

Users browsing this forum: No registered users and 47 guests