Hi list,
Here is a propblem that is propably already solved in another context,
so i would like to know some opinions on it:
I am trying to implement a (hopefully:-) ) simple general-purpose event
delegation architecture.
The actual application will propably be something like a network of
modules that can do arbitrary filtering, generation and manipulation of
midi events in real time.
As propably different kinds of external event sources, like several midi
ports, maybe joystick device and of course a gui, are involved, how
would one efficiently organize the delegation of events passed between
the modules, so that the everything is still thread-safe?
The three main ideas i can currently think of are:
A: don't do it at all, that is, everything is implemented as simple
subject/observer patterns, so that the communication is a pure
module-to-module thing.
Mutexes et al, would have to be managed by each individual plugin.
B: use a global, mutexed event queue. This could be a priority queue for
time-stamped events, or a simple FIFO.
C: use local queues. As above, but for each individual module.
Each of the above aproaches seems to have its advantages and
disatvantages. E.g. if queues are used, this would as far as i an judge,
make it easy to have feedback cycles.
OTOH this would propably introduce some overhead which aproach A
wouldn't have. C would propably involve a single thread for each module,
or a global "clock" thread that periodicaly calls an "process_queue"
method on each module.
Is there a general "best" way to do this?
Kind regards,
Lukas
tuneroid 0.9.3
tuneroid is a tuner for variety of musical instruments. It is designed
to tune musical instruments on PC using a microphone or directly
connecting the instrument to the PC's sound card.
http://www.uid0.sk/zyzstar/?tuneroid
--
jozef kosoru
http://www.uid0.sk/zyzstar
http://plugin.org.uk/releases/0.4.2/
Highly recomended upgrade for 0.4.x users.
Changes:
* Great new set of filter plugins from Alexander Ehlert
* Applied patch from Anand Kumria to make it build with gcc 3.3
* Rewrote the flanger modulation code - its not optimised, but should work
* Added support for FFTW3
* Added denormal killer to l/c/r delay - hopefully works better on PIV
* Fixed serious peak detection bug in lookahead limiter
* Things I forgot
Thanks to Nick T. and Anand K. for bug reports and Alexander E. for the
new plugins.
FFTW3 is much better than old versions, but if youre going to upgrade make
sure you tell it to build the 32bit library, and optimise it right for
your CPU. The SIMD optimisations (SSE etc.) make a lot of difference.
FFTW2 will be supported for the near future anyway.
- Steve
On linux, which is faster, pipe, FIFO, or socket? What about shared
memory - is it faster, and if so is it faster enough to warrant the
extra programming overhead?
--
Hans Fugal | De gustibus non disputandum est.
http://hans.fugal.net/ | Debian, vim, mutt, ruby, text, gpg
http://gdmxml.fugal.net/ | WindowMaker, gaim, UTF-8, RISC, JS Bach
---------------------------------------------------------------------
GnuPG Fingerprint: 6940 87C5 6610 567F 1E95 CB5E FC98 E8CD E0AA D460
Sort of off-topic, except that i want to do it on linux and it
does have to do with audio :)
I've been wanting to tinker a bit with analog audio circuit
design. I've built a few boxes from schematics but I've
never actually designed a circuit.
What I'd REALLY like is some GUI software in which I can construct
a circuit diagram and then feed in a test audio signal and
through some DSP magic, hear (more or less) what the result would sound
like before I start using my big clunky hands to ruin physical objects :)
Does such a thing exist? Or some combination of software that would
do the above? I've been looking at some SPICE resources online
but I can't tell if you can feed an arbitrary digitized audio signal into
a SPICE simulation.
--
Paul Winkler
http://www.slinkp.com
Look! Up in the sky! It's PURPLE KABUKI WARRIOR BOOMERANG!
(random hero from isometric.spaceninja.com)
I'm a little green at time measurement facilities available in linux,
In my host, I would like to be able to measure how much time each
individual LADPSA plugin takes. Assuming I do realtime work with the
smallest buffer sizes my system can handle, what options are available
to me to measure time on this small scale? I know that the typical
system calls time and gettimeofday have resolution of 10 ms, which is
too big for this purpose. Is there any way to do this? Is there a
high-res time howto?
-jacob robbins.....
Has anyone done any low-latency audio testing with the new native pthread
implementation (comes with rh9.0 at least)...?
I was just reading through [1] and noticed the following (in section 8):
""Realtime support is mostly missing from the library implementation. The
system calls to select scheduling parameters are available but they have
no effects. The reason for this is that large parts of the kernel do not
follow the rules for realtime scheduling. Waking one of the threads
waiting for a futex is not done by looking at the priorities of the
waiters.""
If I've understood right, SCHED_FIFO semantics do not have any meaning
between threads of one process if NPTL is used! Hopefully this is right,
as it would cause quite a lot of problems (GUIs and disk i/o threads can
freely block audio processing even though using SCHED_FIFO). :(
[1] http://people.redhat.com/drepper/nptl-design.pdf
--
http://www.eca.cx
Audio software for Linux!
Hi Steve, hi others!
I'm just adding lrdf support to glame but apart from default values I dont
see more information than in the ladspa descriptor. Can we agree on some
more metatags? I'd like to have
- a Category (or multiple ones?)
- short description of ports and the plugin itself
- URI to the documentation of the plugin
am I right getting such information would be done via the lrdf call
lrdf_get_setting_metadata? So we need to define element labels for the
above. I'd suggest
- category
- description
- help_uri
Thoughts?
Richard.
ABD/GÖÇMENLÝK wrote:
[some turkish spam bs]
shit. they sneaked it past the html filter. but i'm reluctant to plonk
all multipart messages, many mailers produce them by default.
guess we have to live with it for now.
--
All Members shall refrain in their international relations from
the threat or use of force against the territorial integrity or
political independence of any state, or in any other manner
inconsistent with the Purposes of the United Nations.
-- Charter of the United Nations, Article 2.4
Jörn Nettingsmeier
Kurfürstenstr 49, 45138 Essen, Germany
http://spunk.dnsalias.org (my server)
http://www.linuxdj.com/audio/lad/ (Linux Audio Developers)