Hi everyone. It's an honor to be read by you. I'm
not a professional programmer, but I wrote some
text-based C++ programs that quiz me on musical stuff,
and was so pleased that I want to do something similar
with musical tones.
All I'll ever need is a library that will let me
playback a sample at a certain set of frequencies --
like 6 at a time (bass tone, high tone, and a
four-note chord) -- until keyboard input signals it to
stop. In fact, even that's more than I need -- if
playing a sample is hard, I'd be perfectly happy
listening to square waves.
I've looked at some audio libraries (OpenAL,
Penguinsound, Sound Object Library) but they're all
very intense, designed to do far more than I could
even understand, let alone want.
Is there a non-threatening, perhaps even
easy-to-install, C++ library that will do what I have
in mind?
(In case it's relevant, I run Mandrake Linux 10.1
Official, KDE, ALSA, and an old Sound Blaster Live. I
often go to the San Fernando Valley LUG, in Los
Angeles, California.)
Thanks in advance,
Jeff
__________________________________
Do you Yahoo!?
All your favorites on one personal page � Try My Yahoo!
http://my.yahoo.com
Hi!
There is an article on slashdot today about KORGs Linux based music-
workstation christened OASYS.
The java-script on KORGSs page kills my Mozilla (well, actually the
whole Xsession goes bunkers ...)
Is this machine somehow related to the prototype HiEnd keyboard Benno
introduced a while ago? Price and features seems to be about the
same ...
--
(
)
c[] // Jens M Andreasen
Hi all,
if you are not a gentoo user stop here, otherwise read on. All the english
linux-audio-lists please accept my apologies for crossposting to german
gentoo list. [DE: Gentoo-user-de, bitte vergebt mir das Crossposting an die
Englischen Listen.]
Today I decided to make my little but constant gentoo-portage overlay
available for the public. It contains only some apps not in already in
portage. Currently available are aeolus-0.3.1 with aeolus-stops-0.1.1,
fmit-0.9.[89], museseq-0.7.0, tuneroid-0.9.4 and (not an linux-audio-app)
ktechlab-0.1.2.
You can access the repository via svn, the address is:
http://roederberg.dyndns.org/svn/apps/portage-arnold/
If there is interest, I could also create a tarball, just ask...
Feel free to use it and feel free to send patches or to apply for write
access.
Currently I am trying to follow the anounces on this list, filter away the
apps, where gentoo.org is fast enough and add the remaining into my repo. The
chances are better if I personally use this app. :-)
Thanks for your patience,
Arnold
PS:
[EN: This will be the last time I do such a crossposting. Promised!]
[DE: Das ist das letzte mal, das ich so ein Crossposting mache. Versprochen!]
--
There is a theory which states that if ever anyone discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be
replaced by something even more bizarre and inexplicable.
There is another theory which states that this has already happened.
-- Douglas Adams, The Restaurant at the End of the Universe
Hi,
QjackCtl 0.2.14 has been released. No big features, only a bunch of
optimizations and cleanups. Check it out:
http://qjackctl.sourceforge.net
From the change log:
- Put a limit on XRUN callback messages and statistics report rate,
preventing the potential hosing of the GUI due to a XRUN cascade storm.
The maximum reasonable report rate has been fixed to be one XRUN callback
occurrence per second.
- Set to ignore the SIGPIPE ("Broken pipe") signal, where available, as
the default handler is usually fatal when a JACK client is zombified
abruptly.
- All conection view items are now sorted in natural case insensitive
order, not just as audio port names as was before.
- Got rid of those nonsense paranoid and rather stupid pseudo-mutex
guards on the connections management framework and event notifications
(nuff said :).
- Optional confirmation warning on audio server shutdown, if there's some
audio clients still active and connected (as suggested by Sampo
Savolainen).
- Check for <jack/statistics.h> on configure time (as of JACK 0.99.42+ CVS).
- "Unlock memory" server setup option was added, allowing the release of
memory used by common toolkit libraries (GTK+, Qt, FLTK, Wine) that were
being superfluously locked on every GUI JACK client; number of periods
has now the minimum allowed value of 2; server start delay widget
converted to spinbox; setup dialog layout slighly changed.
- Removed stand-alone usx2y driver support. Since JACK 0.99.41+ CVS, the
special "rawusb" support on the Tascam US-122/224/428 USB Audio/MIDI
interface controllers have been merged and properly integrated into the
regular alsa backend driver. Being still experimental, this special mode
of operation is now triggered only when "hw:N,2" is specified as the alsa
device name (N = soundcard index of snd-usb-usx2y module).
- Messages window limit is now enforced only when the line count exceeds
in one third the user configured line count maximum; if Qt 3.2.0+ is in
use, the QTextView widget is otherwise set to the optimized Qt::LogText
format.
- XRUN status items are kept double-dashed if none has been detected.
Enjoy.
--
rncbc aka Rui Nuno Capela
rncbc(a)rncbc.org
Hi,
i wonder if there's a way to grant a process priority over all other
processes when it comes to disk i/o.. Somewhat similar like SCHED_FIFO
scheduling for cpu priorities.
This would be very useful especially for high reliability hard disk
recording. I mean it would be simply great to record 24 tracks in ardour
and not having to worry about disk underrun [or overrun] when a cronjob
kicks in that scans the whole filesystem..
I heard and read a bit about the new io schedulers in the 2.6.x kernels,
but i wasn't able to find any infos specifically on this subject..
So anyone knows more? Please let us know! Maybe current io-schedulers
actually take the cpu priorities [nice level or relatime priorities]
into account when assigning io bandwidth to processes, but if so i
wouldn't know where to look to find out..
Thanks,
Flo
--
Palimm Palimm!
http://affenbande.org/~tapas/
On Sun, 23 Jan 2005 10:44:48 +1100
Cal <cal(a)graggrag.com> wrote:
> Indeed it does, so let's not stir it up again unnecessarily!
Sorry, i did not see a reply in that thread.
Flo
--
Palimm Palimm!
http://affenbande.org/~tapas/
Hi,
I compiled the CMT plugins with the g++ options -msse2 and -march=i686
and the freeverb denormals problem (seen with ardour on a dual Xeon
machine) seems to be _almost_ entirely fixed. Also, I don't see any
weird problems with the ardour host (yet :). But, I still see the DSP
load increasing from around 5% to about 15%, although now it is _much_
farther along in the tails of the reverb than before and I get _zero_
xruns. [before, the DSP shot up to 60-90% with tons of xruns and
usually the zombification of ardour].
Much cooler.
--Neil
PS: I also am using the new undenormalize inline function described in
an earlier message.
On Sat, Jan 22, 2005 at 03:17:28PM +0100, Christian Schoenebeck wrote:
>> I think for such an important piece like freeverb it might be worth
to add
>> architecture dependant assembly optimizations. E.g. with SSE(1) you
simply
>> have to change the SSE control register to get rid of the denormal
problem.
>> With that no denormal fixes for individual sample points are necessary
>> anymore which definitely pays off in performance.
Agreed, but I'm not sure how doing that will affect the host - ie does
-mfpumath=SSE (or whatever the option is) always leave the FPU stack in a
sane state when control goes back to the host? I dont think it would
normally return the FPU to 387 mode, which might do bad things to the
host occasionally.
OTOH it might be fine, I dont understand the interaction with the 387 and
SSE.
- Steve
Hi all,
The denormal problem with freeverb/ardour on P-4's is killing me.
Since CMT plugin development seems to be a little stagnant, I decided
to take it into my own hands a bit, but I might need a little help from
a kind someone out there. Is there anyone who can give me a tip on
proper syntax for changing the denormals.h file in freeverb (assuming
this is where the problem lies)?
Details:
On this list and/or posts elsewhere I found that the denormals.h file
for freeverb doesn't work too well with some newer gcc compilers; one
recommendation was to exchange the first statement below with the second
definition:
#define undenormalise(sample) if(((*(unsigned
int*)&sample)&0x7f800000)==0) sample=0.0f
static inline float
undenormalise(volatile float s)
{
s += 9.8607615E-32f;
return s - 9.8607615E-32f;
}
I tried changing it out one-for-one, but.. no good. Ardour still
zombifies after reverb tails die out. Maybe there is somewhere else
that needs changing wrt denormals, or maybe I am just clueless :).
Anyway, I then tried using something like the following....but still no
good, [ardour now doesn't zombify, it's just that freeverb sounds like
@$!&].
#define static inline float undenormalise(volatile float s) { s +=
9.8607615E-32f; return s - 9.8607615E-32f; }
You can probably see that I have no idea what I'm doing, but this seems
like it should be so _simple_. Maybe now is the time to go read up on C++.
Thanks,
Neil
Steve,
OK. I put your denormal-zeroing function w/SSE into the freeverb.cpp
code, and when compiling with the SSE option and calling
set_denormal_flags() in the activateFreeverb3 function (see below), I
get this error wherever asm is called:
freeverb/freeverb.cpp: In function `void set_denormal_flags()':
freeverb/freeverb.cpp:48: error: can't find a register in class `BREG'
while reloading `asm'
Do you have an idea of what might be wrong?
Here is where I put the call to your function. Does this make sense?
void
activateFreeverb3(LADSPA_Handle Instance) {
Freeverb3 * poFreeverb = (Freeverb3 *)Instance;
poFreeverb->mute();
/* call the Steve Harris denormal zeroing function w/SSE flag */
set_denormal_flags();
}
--Neil
PS: Maybe we should move this discussion to just linux-audio-dev for now
PPS: For reference, this is your function for zeroing denormals w/SSE
that I am using:
#ifdef __SSE__
#include <xmmintrin.h>
#endif
void set_denormal_flags()
{
unsigned long a, b, c, d;
#ifdef __SSE__
asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (1));
if (d & 1<<25) { /* It has SSE support */
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (0));
if (b == 0x756e6547) { /* It's an Intel */
int stepping, model, family, extfamily;
family = (a >> 8) & 0xf;
extfamily = (a >> 20) & 0xff;
model = (a >> 4) & 0xf;
stepping = a & 0xf;
if (family == 15 && extfamily == 0 && model == 0 &&
stepping < 7) {
return;
}
}
asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (1));
if (d & 1<<26) { /* bit 26, SSE2 support */
_mm_setcsr(_mm_getcsr() | 0x40);
}
} else {
fprintf(stderr, "This code has been built with SSE support, but
your processor does not support\nthe SSE instruction set.\nexiting\n");
exit(1);
}
#endif
}
-------------Steve Harris wrote:---------------
For something like a reverb the best option is going to be to build with
SSE maths and call the function I posed here a week ago or so. There are
so many places where denormals can occur in reverbs that youre going to
burn a load of CPU trying to kill them.
OTOH I'm not sure how that function would interact with the host when
loaded as a plugin