Greetings:
I've been trying to solve this one for a while but I can't see the
light. I'm compiling Istvan Varga's beta 4.24.2 Csound for Linux, but
I'm stuck here:
g++ -pipe -Wall -O2 -ffast-math -fomit-frame-pointer -finline-functions
-funroll-loops -fno-strict-aliasing -fPIC -DPIC -I. -I. -I./include
-I./opcodes -DWINDOWS -DSFIRCAM -DSYS5 -DLINUX -DHAVE_TERMIOS_H
-DIV_VERSION -DPIPES -DMACROS -DHAVE_FLTK -D_REENTRANT -DMYFLT=float
-march=i686 -falign-functions=16 -falign-loops=16 -falign-jumps=16
-frename-registers -mno-ieee-fp -mno-sse -fno-exceptions -fno-rtti
-fno-unroll-loops -I/usr/local/include/FL -c widgets.cpp -o widgets.o
widgets.cpp: In method `int Fl_Knob::handle (int)':
widgets.cpp:230: `atan2' undeclared (first use this function)
widgets.cpp:230: (Each undeclared identifier is reported only once for
each function it appears in.)
widgets.cpp: In method `void Fl_Knob::draw_scale (int, int, int)':
widgets.cpp:289: `cos' undeclared (first use this function)
widgets.cpp:290: `sin' undeclared (first use this function)
widgets.cpp:310: `log10' undeclared (first use this function)
widgets.cpp:278: warning: `float ca' might be used uninitialized in
this function
widgets.cpp:278: warning: `float sa' might be used uninitialized in
this function
widgets.cpp: In method `void SNAPSHOT::get (vector<ADDR_SET_VALUE,
allocator<ADDR_SET_VALUE> > &)':
widgets.cpp:1171: `::pow' undeclared (first use here)
widgets.cpp:1172: `log' undeclared (first use this function)
widgets.cpp: In function `void fl_callbackJoystick (Fl_Widget *, void
*)':
widgets.cpp:1759: warning: `float val' might be used uninitialized in
this function
make: *** [widgets.o] Error 1
[dlphilp@localhost Csound-4.24.1]$
I understand that the missing functions are math functions, but math.h
is included at the start of widgets.cpp. Unfortunately widgets.cpp is
about 104 KB so I didn't want to send it along with this message. If
anyone wants to look at it I'll gladly send it off-list. But it seems
I've run into this kind of problem before, that it's some sort of C vs.
C++ thing... but I also know less than zero about C++... (and only a wee
bit more about C)...
TIA to anyone who can assist !
Best regards,
== Dave Phillips
The Book Of Linux Music & Sound at http://www.nostarch.com/lms.htm
The Linux Soundapps Site at http://linux-sound.org
I read an interesting article on Direct Stream Digital (DSD) / Pulse Density
Modulation (PDM) entitled "A Better Mousetrap" by Brian Smithers in the May
2003 issue of Electronic Musician. Since, Brian did a good job explaining
PDM/DSD in quasi-layman terms, I'll just quote snippets from his article to
set the stage for my questions.
<quote a="EM: A Better Mousetrap" p="96">
In DSD, the amplitude of the waveform is represented by the relative density
of the ones and zeros within the bitstream; for that reason the technique
is also known as Pulse Density Modulation (PDM). A full positive waveform
results in all ones and, whereas a full negative waveform results in all
zeros. Silence would yield a string of alternating ones and zeros
(Alternating ones and zeros reflect the "neutral" density of silence.) Sony
claims a resulting dynamic range of 120db for DSD.
In the simplest terms, DSD compares the energy of a waveform at each sample
point to the accumulated energy of previous sample periods. If the energy
is higher, a value of 1 is recorded; if the energy is lower, a value of 0 is
recorded. Because the bitstream represents the change (delta) in energy
compared to the sum (sigma) of the previous energies, another name for this
technique is Sigma-Delta Modulation (SDM).
</quote>
The article goes on to explain how DSD uses a sampling rate of 2.8224 MHz
resulting in a frequency response that extends to 100kHz. The higher sample
rate can also improve stereo/surround imaging.
<quote a="EM: A Better Mousetrap" p="96">
One more justification for DSD is that the steep filters required for PCM to
conform to the Nyquist theorem can themselves degrade the sound due to their
sharp cutoff. In fact, it has become common for PCM analog-to-digital (A/D)
converters to start with a 1-bit conversion stage and then apply a digital
decimation filter to convert the bitstream to PCM format. DSD essentially
bypasses the decimation filter and stores the 1-bit data directly.
</quote>
DSD/PDM appears to be a superiour technique for recording and playing audio
material. Granted, this technology may never catch on because of all the
hardware and software changes that would be required to mirror what a
typical PCM based DAW currently does. But, if DSD/PDM does catch on, and
DAWs start being produced, how will this effect current audio DSP
techniques? How would JACK's current design be effected by a 1-bit stream
format?
The article mentions a program called Pyramix (Windows) which features DSD
support. However, for Pyramix to do EQ, dynamics, reverb processing, and to
display waveforms and vu levels, it converts DSD to a "high quality" PCM
format.
I suspect that if DSD/PDM has any hope of succeeding in the current DAW
world, there will have to be some real-time lossless converter constructed
to seemlessly bridge the formats. But that of course begs the question of
why use DSD in the first place if you just are forced to "decimate" it PCM
to process it?
Sony is currently using DSD/PDM in their SACD format, and are positioning
themselves to be the competing format to PCM based DVD-A. The fact that
something like this shows up in EM means that at some level the format is
being given some credence and is being watched by others then just the
audiophile recording crowd.
Is DSD/PDM just a flash in the pan, or does it really represent a new wave
of thinking regarding storing/processing audio data?
Dustin
_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*
http://join.msn.com/?page=features/virus
Hi, i came across your question while browsing the web for information
on the alsa9 pcm plugin architecture..
My thought on this would be: Just make your soft synth a normal
application but be sure to make it work with the alsa pcm - plugin
layer of alsa. Then people can use the pcm plugin - layer to mix and
route the signal.
The midi stuff in alsa isn't really hard (just finding docu is :).
Anyways, a good option to add would be jack support. but again the
alsa-pcm-plugin layer has a jack-plugin that enables
every alsa app to talk to a jack server. I don't know about the details
in latency and timing, but on todays systems, the alsa layer shouldn't
hit performance that bad.
Anyways, i think it is crucial, that the synth works with the pcm layer
so people without hardware mixing capabilities can run multiple
instances of the synth(s) without the hassle of setting jack up..
Florian Schmidt
--
mista.tapas(a)gmx.net
sound clips - http://www.arted.biz/mista.tapas
Hi!
Sorry for the english .. :-)
SoundFontCombi takes the advantages of ALSA sequencer and the wavetable
devices for emulate a synthetizer.
I'm not programmer, this program dont have project page, CVS, or mailing
list, is in proof of concept rigth now. And only the binaries are available.
Is my first program in C++, my first graphic program for *nix, and belive
me the source code needs a "making up" rigth now. Maybe next month when i
learned how to do a Makefile :-)
SoundFontCombi was tested in Debian sid and Gentoo.
Requires FLTK v1.x.x (tested on v1.1.1) and ALSA with sequencer.
The binaries are available in :
http://personal.telefonica.terra.es/web/soudfontcombi/sfc-v0.005.tar.gz
Any commets will be apreciated.
Josep
Hi I know it's not a C++ specific list, but maybe someone can shed some
light on this. I have encountered this problem with all C++ compilers
and I don't know exactly what it is.
Sometimes I might make a class, and inherit it from another. Or, the
class just has virtual functions in it ( I am planning to derive others
from it). In any case, I am trying to access a virtual function in an
instantiated instance at runtime, and when I do, the program crashes. I
try to see if it is reaching the function (printf("Hi!") from inside or
something), but it doesn't. It is like the vtable is being destroyed
somehow.
So, is it possible to smash the vtable of a class? I can't imagine all
compilers have the same quirk, because I have seen this problem on half
a dozen compilers. Usually it is in classes where I am doing heavy
memory management. My guess is that the vtable can be corrupted somehow
by a smash.
Hi!
Sorry for the english .. :-)
SoundFontCombi takes the advantages of ALSA sequencer and the wavetable
devices for emulate a synthetizer.
I'm not programmer, this program dont have project page, CVS, or mailing list,
is in proof of concept rigth now. And only the binaries are available. Is my
first program in C++, my first graphic program for *nix, and belive me the
source code needs a "making up" rigth now. Maybe next month when i learned
how to do a Makefile :-)
SoundFontCombi was tested in Debian sid and Gentoo.
Requires FLTK v1.x.x (tested on v1.1.1) and ALSA with sequencer.
The binaries are available in :
http://personal.telefonica.terra.es/web/soudfontcombi/sfc-v0.005.tar.gz
Any commets will be apreciated.
Josep
Hello,
How can I make Jackd always run? Right now I have to set it up in a
console window. I'd like to learn how to run it always at startup and
not have to start/stop it when I need it.
Also how do you use Jack in real-time mode? In order to run it I have to
be root, but if I run it as root, nobody else can see Jack unless they
are also root.
I wish somebody would write a Jack-HOWTO so dummies like me can figure
out how to run this thing.
Thanks
More like a golden buddha child but hey...
I got them all working, it was problemos in my plugin manager code. The
plugins were fine.
Are you itching to know what the problem was? I'll tell you.
There is the mysterious number called NAN.
I found out where NAN was coming from.
I was calculating the log(number) to put in the control value The
culprit number=>0. Put 0 into log, and it makes NAN. Put NAN into plugin
dry/wet mix control, and plugin makes zillions of NANs. And all those
NANs will make your computer run slower than an Atari 800. What's even
worse is trying to convert NAN to an integer and play it on a sound
card.. I guess between the massive buffer underruns and trying to
synthesize all NANs was why I was hearing the most horrible noises I
ever heard in my life. I have no idea what NAN becomes when you cast it
to an int. Some demon posessed number I suppose. It doesn't sound like
white noise either.
If you want to hear the most hideous noise try it. Put log(0) into a
control volume and watch what happens. Try it with about 15 plugins at
once. It is super loud too.
I am sure it will destroy your speakers too. Don't try it with expensive
speakers.
Now which controls do it? A good many of them. It's not really a design
defect of the plugin programmer. I am sure, they don't expect anyone but
an idiot to put NAN into the control value. I didn't do it on purpose!
It was a mistake! A simple error on my part.
I hope somebody else has done this by accident too.. it'll make me feel
better...
I got my app to host plugins, but I am having problems figuring out how
to filter plugins out that won't work in my app. I only need F/X
processors. If a plugin does not process an audio stream, or is used
only for synthesis, or has peculiar controls that are not defined in the
hints, than I want to ignore them.
Is it possible? How can I find out how a plugin is used? I am reading
the API header but it's not entirely clear what properties determine how
a plugin is used or how I can tell if a plugin won't work for my app.
Thanks