Hi all,
working on the strict MVC-fication of Aeolus (a precondition
for its OSC-fication), I'm again confronted with a problem
that has been discussed a number of times on this list.
It has been stated that the model should send updates to
all clients except the one that originated a parameter change.
While this will work if all communication is synchronous,
it will go wrong easily when there are delays, e.g. over
a network.
Imagine an M and to CV clients, A and B. There are two
transmission paths: A -> M -> B, and B- > M -> A. If the
two ever intersect in time, the originator of the final
value used by M will end up displaying the other one.
So the only solution seems to echo parameter updates to
all clients, including the one that requested them. In that
way (and assuming messages remain in order), all clients
will have the value used by M. If messages do not remain
in order, the solution is to have a serial number set by
M on each update and included in all messages. Finally,
if the communication is unreliable as well, M should
broadcast periodic updates of its state, or at least
of those parts that have recently changed.
Of course this may create some problems, e.g. when a GUI
client's slider is being dragged, and it receives 'old'
update values while this is happening. The solution seems
to be simple: while dragging, ignore all updates but keep
the most recent one. Execute this one when the slider is
released. It may be a good idea to extend the 'ignore state'
by a small time (e.g. 0.1 s) after release.
Another approach would be have an originating client id in
each message, and some mark to indicate the final request
(upon release). Then, while dragging, ignore other clients,
and always only act on marked messages from yourself.
Anyone having any experience with this ?
--
FA
Hi,
I have set up an RSS feed for Linux Audio Announce :
http://www.samalyse.com/rss/laa.rss
It is updated every hour.
For example, it is useful to display news and links about other Linux audio
software on a webpage. That's what I currently do on Jackbeat's homepage :
http://www.samalyse.com/jackbeat
I mean : it can act as a sort of ring, a way to link to each other. If you are
the author of an application, you can put LAA news and links on its homepage, if
you like the idea.
Enjoy
--
og
Hi mates!
I wonder if anyone of you could help me a bit. Part of the question I have I
asked before.
I'm trying to do lpc with csound5. Unfortunitely lpanal in csound5 is still
broken, so I use lpanal of older csound4 version. The output I get is silence
with one or to glitches in between. Any idea what I'm doing wrong or what
csound's doing wrong? Material for the analysis was speech input.
Second: Does anyone know more about the status of dssi-support in csound5? I
tried but I wouldn't get the expected result. Either I get silence or just the
original signal (no effect applied). Any working example known?
Thanks for ANY help! I would greatly appreciate it!
Kindest regards
Julien
P.S.: If anyone knows a much better place to ask my csound questions, please
give me an urls or mail-adsress.
--------
Music was my first love and it will be my last (John Miles)
======== FIND MY WEB-PROJECT AT: ========
http://ltsb.sourceforge.net - the Linux TextBased Studio guide
Dear Developers,
I've just spent the last couple days trying to get some of my favorite Linux
audio apps running on OSX with various degrees of success or failure. I'm
posting this report in the hopes that some of you could give me pointers on
finishing the job, and possibly to start a dicussion of expanding some more
support to OSX. Thanks for getting us this far and please read on!
1) System:
* OSX Tiger 10.4 with all developers packages installed
* Fink was used for most dependencies
2) Apps which I used DMG packages for with no real problems:
* Ardour 0.9beta30
* JackOSX 0.71
* SooperLooper 1.0.7
* SuperCollider3 bin-20050916
* Pure Data 0.36test2-extended-RC0
3) Apps I compiled with different degrees of success:
* Jack Audio Connection Kit 0.100.0
* Jack-Rack 1.4.4
* JackEQ 0.4.0
* QJackctl 0.2.18
* Jamin 0.95.0
* Rezound 0.12.2beta
* Jack Timemachine 0.3.1
* MCP Plugins 0.3.0
* REV Plugins 0.3.1
* BLOP Plugins 0.2.8
* CAPS Plugins 0.2.3
* CMT Plugins 1.15
* SWH Plugins 0.4.14
* TAP Plugins 0.7.0
4) Results and Notes:
* Jack Audio Connection Kit 0.100.0
Apparently successful. Starts from the command line without problem, and is
installed in a different location than the JackOSX package so I don't beleive
there to be a conflict.
* Jack-Rack 1.4.4
Compiles without any real difficulty. However, when run it gives the following
error for each plugin installed in /usr/local/lib/ladspa:
plugin_mgr_get_object_file_plugins: error opening shared object file
'/usr/lib/ladspa/zm1_1428.so': dlopen(/usr/lib/ladspa/zm1_1428.so, 10): Symbol
not found: _libintl_dgettext
Referenced from: /usr/local/lib/ladspa/zm1_1428.so
Expected in: flat namespace
After which I get a GTK message stating that Jack-Rack could not find any LADSPA
plugins and I should check my path (which is correct, BTW). Ardour gives the
same error, so I assume it has something to do with my SWH compile.
* JackEQ 0.4.0
Compiles fine. Gives runtime error:
Fontconfig warning: line 251: invalid edit binding "same"
Fontconfig warning: line 263: invalid edit binding "same"
Registering as jackEQ
Bus error
and exits. Probably to do with SWH plugins.
* QJackctl 0.2.18
Compiles and runs fine. Only problem is with initializing the CoreAudio device.
My CoreAudio device has the identifier "-n Apple03DBDMAAudio:i2s-a:0", however
there is no way to get QJackctl to enter that string in the startup command.
Seems it can't handle CoreAudio/OpenFirmware(?) ID strings (QJackctl
identitifes my card as "128" in the select menu). If Jackd or JackOSX are
already running, QJackctl recognizes them and I can use the Connections menu.
MIDI support is not there, of course, due to lack of ALSA.
* Jamin 0.95.0
Compiles and runs fine, after some work to get it to recognize the LADSPA_PATH.
Exits with the same "Bus error" message on startup, possibly due to SWH Plugins
problem.
* Rezound 0.12.2beta
I've heard people using this on OSX, and I've even seen a commercial package for
OSX using it, but I'll be damned if I can get it to compile. Here's as far as I
got:
g++ -DHAVE_CONFIG_H -I. -I. -I../../../config -I../../../src/misc
-I../../../src/misc/missing/generated -I../../../src/PoolFile -g -Wall
-Wno-unused-function -Wno-unused-variable -Wno-unused -MT CNestedDataFile.lo
-MD -MP -MF .deps/CNestedDataFile.Tpo -c CNestedDataFile.cpp -o
CNestedDataFile.o
CNestedDataFile.cpp:21:2: warning: #warning parseFile doesnt need to set the
filename, only the constructor and setFilename should do that
CNestedDataFile.cpp:22:2: warning: #warning see about retaining the order that
things were parsed in the file
In file included from ../../../config/common.h:72,
from CNestedDataFile.h:24,
from CNestedDataFile.cpp:36:
./../../config/platform/platform.h:10:3: warning: #warning no platform
determined!
In file included from CNestedDataFile.cpp:45:
./../../src/misc/CPath.h:302:5: error: #error CPath::which needs to be
implemented on this platform
make[3]: *** [CNestedDataFile.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
[More spew available on request]. Also cannot get ./configure to recognize
fftw.h and the other FFTW headers, no matter how many PATH combinations I try.
* Jack Timemachine 0.3.1
Compiles and starts without problem. A half an hour ago I was getting the
following: "Cannot open file for writing: Bad file descriptor", but just now
when I tried again, apparently it wrote a proper w64 file. Who knew! ;-)
* MCP Plugins 0.3.0
These lack a proper ./configure file, and I did not edit the Makefile at all.
Compile ends with:
g++ -shared mvclpf24.o mvclpf24_if.o exp2ap.o -o mvclpf24.so
powerpc-apple-darwin8-g++-4.0.0: unrecognized option '-shared'
/usr/bin/ld: Undefined symbols:
_main
collect2: ld returned 1 exit status
make: *** [mvclpf24.so] Error 1
* REV Plugins 0.3.1
Same as MCP plugs. No ./configure and ends with:
g++ -shared greverb.o g2reverb.o g2reverb_if.o exp2ap.o -o g2reverb.so
powerpc-apple-darwin8-g++-4.0.0: unrecognized option '-shared'
/usr/bin/ld: Undefined symbols:
_main
collect2: ld returned 1 exit status
make: *** [g2reverb.so] Error 1
* BLOP Plugins 0.2.8
Compile ends with:
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -Iinclude -I.
-DLOCALEDIR=\"/usr/local/share/locale\" -pipe -Wall -O3 -Wno-unused
-DNO_DEBUG -DPIC -fPIC -ffast-math -fomit-frame-pointer
-funroll-loops -nostartfiles -shared -lc -o adsr_1653.so adsr_1653.so.o
powerpc-apple-darwin8-gcc-4.0.0: unrecognized option '-shared'
/usr/bin/ld: Undefined symbols:
_libintl_bindtextdomain
_libintl_gettext
_libintl_textdomain
dyld_stub_binding_helper
collect2: ld returned 1 exit status
make[3]: *** [adsr_1653.so] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
This unrecognized option '-shared' is becoming a theme, isn't it? I also wonder
if there is a problem with my Fink-installed gettext, as that is the error
which the SWH plugins give when a client tries to use them.
* CAPS Plugins 0.2.3
No ./configure at all, I had to symlink a malloc.h to a place where it could
find it, and it all ends as such:
g++ -O6 -ffast-math -funroll-loops -Wall -I/usr/local/include -c Amp.cc
Amp.cc:169: error: explicit specialization of 'void Descriptor<AmpIII>::setup()'
must be introduced by 'template <>'
Amp.cc:169: error: template-id 'setup<>' for 'void Descriptor<AmpIII>::setup()'
does not match any template declaration
Amp.cc:169: error: invalid function declaration
Amp.cc:303: error: explicit specialization of 'void Descriptor<AmpIV>::setup()'
must be introduced by 'template <>'
Amp.cc:303: error: template-id 'setup<>' for 'void Descriptor<AmpIV>::setup()'
does not match any template declaration
Amp.cc:303: error: invalid function declaration
make: *** [Amp.o] Error 1
* CMT Plugins 1.15
No ./configure at all. Issuing a "make" in the src directory yields:
g++ -I/usr/local/include/ -Wall -Werror -O3 -fPIC -c -o analogue.o
analogue.cpp
cc1plus: warnings being treated as errors
analogue.cpp: In static member function 'static void Analogue::run(void*, long
unsigned int)':
analogue.cpp:259: warning: 'a' may be used uninitialized in this function
analogue.cpp:259: warning: 'b' may be used uninitialized in this function
analogue.cpp:259: warning: 'c' may be used uninitialized in this function
make: *** [analogue.o] Error 1
* SWH Plugins 0.4.14
Compiled and installed to /usr/local/lib/ladspa without a hitch, but as you can
see they have caused problems for all the LADSPA hosts so far with the
following:
plugin_mgr_get_object_file_plugins: error opening shared object file
'/usr/lib/ladspa/zm1_1428.so': dlopen(/usr/lib/ladspa/zm1_1428.so, 10): Symbol
not found: _libintl_dgettext
Referenced from: /usr/local/lib/ladspa/zm1_1428.so
Expected in: flat namespace
or simply a quieter "Bus error". Too bad, it was looking good so far...
Incidentally, I also used Taybin's swh-plugins and tap-plugins DMG files and
they gave me the same results. So if these DMG packages are working for someone
else, then I know it's something specific to my system here (gettext perhaps?)
* TAP Plugins 0.7.0
No ./configure. Compile ends with:
lsgcc -I. -O3 -Wall -fomit-frame-pointer -fstrength-reduce -funroll-loops
-ffast-math -c -fPIC -DPIC tap_autopan.c -o tap_autopan.o
gcc -nostartfiles -shared -Wl,-Bsymbolic -lc -lm -lrt -o tap_autopan.so
tap_autopan.o
powerpc-apple-darwin8-gcc-4.0.0: unrecognized option '-shared'
/usr/bin/ld: unknown flag: -Bsymbolic
collect2: ld returned 1 exit status
make: *** [tap_autopan.so] Error 1
5) Conclusion
While writing this report I tried Taybin's pair of LADSPA DMG packages, hoping
for the best, but getting the same results. So I'm hoping I've provided enough
info for some of you to point me in the right direction.
I'd be happy to run a "gdb" on anything you all would like to hear more about,
and I'd love to hear some feedback about how to get through all this.
Particularly the Rezound and SWH problems, as those are the two biggest
sticking points.
thx + best wishes,
derek
http://umatic.nl
On Tuesday 04 October 2005 11:04 am,
linux-audio-dev-request(a)music.columbia.edu wrote:
> From: Alfons Adriaensen <fons.adriaensen(a)alcatel.be>
>
> Interesting. I'll have to go through some mental exercise to convince
> myself that this will never cause infinite cycles.
The controllers should not send a change back to the M when they are told by
the M what their value is.
You'll also want some logic in the M that says "if I receive a change that
tells me to go to my current value, then don't send updates to anyone".
-Ben Loftis
<http://freebob.sourceforge.net/index.php/Some_emails_about_latency>
> http://freebob.sourceforge.net/index.php/Some_emails_about_latency
> <http://freebob.sourceforge.net/index.php/Some_emails_about_latency>
> the minimum round-trip latency I achieve with our current code is about
> 8ms, but there are some bugs that pop up at these low buffer sizes.
> the minimal round-trip latency that gives rather reliable operation is
> about 14ms.
Thank you for the link! Some real numbers, finally :)
FW solution seems to be worth considering.
> note that I measure 'round-trip latency' by connecting a cable between
> output and input of the soundcard and then look at the time difference
> between the played sound and the recorded sound.
>
That means 8-14ms is really excellent, as it takes into account DAC/ADC
buffering.
> I'm working on a better driver structure/code that will allow lower
> latencies.
Amazing! If I purchase FA-101 earlier, than you finish, I'll try to help.
Dmitry.
Hi.
My little time-compressing audio player yatm currently supports 3 different
audio formats, ogg and speex via the xiph libraries, and mpeg via libmad.
I currently just blindly try to launch the decoder for either ogg, speex or
mp3 in series. SO if the first fails, I try the second, and so on. Which
kinda works but is a bit ugly. I'd like to add flac support at some point,
which would make this even more ugly.
Additionally, libsndfile support wouldnt be that bad either, so, I am
wondering, is there a reliable way to detect a audio streams file
format just given some bits of the header? So that I could set the
appropriate decoder algorithm based on that analysis? Or is
there actually a library one step higher level than libsndfile which
does generic audioformat to PCM? I guess not...
--
CYa,
Mario
> Yes, the FA-101 works but I can't tell you the numbers for latency.
The site has a nice table of working setups, but no user emails. I'd ask
them directly.
> What do you mean with restristrions on buffers (=latency?)?
AFAIK, usb cards impose 48kHz (96), 48/3 buffer setup to please
everybody in the chain.
Jackd needs buffers to be power of 2, and usb-audio - multiples of 1ms.
> we consider the 192 kHz more as marketing gag :)
That's to compete with Fireface.
> Hope that helps.
Thank you.
Dmitry.
Jens:
> I have noticed that the midi-mixing-console in Rosegarden is not
> listening to external events (like knobs on your fancy midi-controller)
It does in the current CVS version, and that in Studio to Go! 1.50. You have to connect your controller to the external controllers ALSA port, though.
However, I wouldn't recommend the code for this to anyone - it's a brutal hack on a design not intended for this - so I can't add much to your initial point...
Chris
Hi all,
Let me spread the word:) finally there comes this bug and some other
usability fixes on today's latest Qsynth 0.2.4 release.
As you might know already, Qsynth is a fluidsynth GUI front-end
application, written in C++ around the Qt3 toolkit, using Qt Designer.
Please check it out from:
http://qsynth.sourceforge.net
Upgrade is highly recommended as this one fixes a very annoying crash
bug that has been lurking for ages.
As simply pasted from the change-log:
- All widget captions changed to include proper application title prefix.
- Attempt to bring those aging autoconf templates to date; sample SPEC
file for RPM build is now being included and generated at configure time.
- Missing icons on channel and soundfont setup context menus are now up;
bank/program splitter widget added to channel preset dialog.
- An abrupt segfault on engine restart have been finally fixed; this
issue has been quite an annoyance which has been around for ages and was
a highly probable showstopper just when restarting an engine due to
changes on the setup settings. Not anymore, hopefully.
- New tool buttons were added to the main widget, for adding a new
engine and removing the current one, while trying to increase the
visibility of multiple fluidsynth engine capability (for new users, at
least :)
- Set to use QApplication::setMainWidget() instead of registering the
traditional lastWindowClosed() signal to quit() /slot, just to let the
-geometry command line argument have some optional effect on X11.
- Minor configure and Makefile install fixes, as Debian and Mac OS X
specialties. Also, install does the right thing with target file modes
(thanks to Matt Flax and Ebrahim Mayat, for pointing these out).
- Fixed output disability when messages limit option is turned off
(thanks to Wolfgang Woehl for spotting this one, while on qjackctl).
Hope you enjoy.
--
rncbc aka Rui Nuno Capela
rncbc(a)rncbc.org