On January 27, 2014 01:05:55 AM Florian Jung wrote:
> All data, (also MIDI data), is read from the prefetch thread and written
> into ringbuffers, to be read and played by the audio thread. the audio
> thread does effects etc.

snip

> Also, time-stretching is done inside the audio thread, and not inside
> the prefetching thread, to be able to quickly adapt new tempi (->
> external synchronisation). The prefetcher must prefetch an appropriate
> number of samples, obviously. (We may assume that the external tempo
> does not deviate by more than 10% from the tempo map).

Yes I figure the ring buffers should store individual samples rather 
 than blocks, so that we can pull as many or little samples as the 
 stretcher needs, from the process thread.
Reviewing our prefetch system:

In WaveTrack::getData(), which is called in the process thread, it calls
 _prefetchFifo.get().

Not quite sure yet but I think it already allows us to pull an arbitrary
 number samples rather than blocks. 
Which is good.

** Now here's a really IRONIC thing I just found out:

Take a look at our Fifo class (node.h, cpp) which is the class used for 
 _prefetchFifo. You see a lot of pthread_mutex_lock etc.

These locks were only supposed to be compiled if *NOT* running an 
i386 arch, otherwise it is supposed to use NO locks at all on an i386 arch.

(I guess that answers my question about built-in atomic operations 
 on i386 Linux ? Good !)

However, the macro i386 is old I believe, and is NOT defined here.
I could swear at one time long ago it was.
I believe it was replaced with __i386__ which IS defined here, and 
 __i386__ IS used elsewhere in MusE.

So... Here we are worrying about using locks... and ironically locks 
 *are* already being used here, with no noticeable problems,
 inside one of the most critical sections of our process callback...

What are you guys seeing on your machines? Are those sections
 compiled in or not?

Thanks.
Tim.

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer

Reply via email to