iiwusynth-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[iiwusynth-devel] Pitch bend, filter, sysex, LADSPA,...


From: M. Nentwig
Subject: [iiwusynth-devel] Pitch bend, filter, sysex, LADSPA,...
Date: Sat, 06 Apr 2002 19:11:39 +0300

Hello,

again, I've made a couple of changes to iiwusynth. The whole directory
is here:
 http://prdownloads.sourceforge.net/millisampler/iiwusynth_tar.bz2
There is a diff file included (against the source I downloaded).
I've tried to remove all unnecessary changes (indentation, empty lines),
but some may have survived ...

Changes:

=========Filter=======
The conversion 'cent to Hz' did not work for high frequencies (it
freaked out just below infrared :-) This caused the noises in the
'Vintage dream waves' soundfont.
Please try again, all 128 voices sounded OK to me now (but I don't own a
SF hardware synth, can't compare against the original).
A square root has been moved out of the 'update-filter' code, now it is
only calculated once instead at every filter recalculation.
If we keep the filter, then the conversion 'cent to cotan' is not needed
anymore (wrapped it in #if 0 ... #endif)

=========LADSPA effect unit=========
In my opinion, the LADSPA code is now good enough to include it.
Several small changes are made in the configuration files, there is now
an option --enable-ladspa (default=no) available for ./configure.
I have written a small perl-Tk script, that shows a couple of sliders in
a window, which allow real-time control of effect parameters (chorus,
reverb, overdrive,...)
This is not included, but if anybody would like to try, I can make a
'bundle' (soundfont, plugins, script).

========Pitch bend=====
There was a problem in the code handling program change events: a
'break' was missing, a pitch bend event resulted for each program change
(to the wrong pitch). This was right in an older version (was one of my
patches involved here? nooooooo :-), now it works again.
Also, pitch bend default is now 0x2000 (center).

========Sysex=========
Now Sysex from 'midi in' is ignored. After the 'Start of sysex' byte
arrives, the parser will chew up all following bytes until 'End of
sysex' is received (in older versions it went out-of-sync with the MIDI
stream, iiwusynth didn't respond anymore).
I can't remember, if coding the length of the message in the header is
customary in MIDI files, but in real time midi it obviously does not
happen. So using the end-of-sysex byte seems to be the only way to
handle sysex.
There are still some printf-lines, I thought they might be helpful.
A 'todo' here is maybe a timeout for the MIDI parser in general.

========Signal to soundcard=======
The signal is now clipped for positive and negative peaks. Currently,
clipping produces a message (one might argue that clipping deserves an
error message...).
Same in the 'float' code, but untested due to the lack of suitable
hardware.
I have moved the master gain multiplication to another place, because it
makes more sense to me to apply it before the LADSPA Fx section (so that
a limiter plugin works correctly).
As long as no LADSPA effect is used, it behaves exactly as before.
And if a LADSPA user needs a true 'master gain' control, it's easy to
add an amp plugin at the output.

=========Bank select============
My own masterkeyboard sends a bank change with each program change. This
is completely useless for controlling iiwusynth. I have therefore
included a switch (set with #define MN_CUSTOMIZED), that disables bank
switching through the MIDI input, and prints a warning. Command line
bank switching (select) still works. But since the switch is not set
anywhere, this will not affect other users anyway.

=========Command line===========
The number of tokens and the line length has increased (because LADSPA
plugins need lots of parameters). Here I'm burning the memory that has
been saved while removing the cent-to-cotan-code :-)
Currently there is no checking for buffer overflow from the command line
(as I found out the hard way) but then, this is no e-banking
application.

=========Low-latency patch=======
I have included the low-latency patch for the OSS-driver. I'm still
using OSS, I'd have to reconfigure two computers - so much work, so
little time...
Again, the MN_CUSTOMIZED flag applies.
I would be happy, if we could include those 'personal' changes, that
would make my life a bit easier.

=========Gain=================
Changed the max-limit to 5. There are some rather 'quiet' soundfonts out
there, which would need a boost. And, together with the LADSPA limiter
set to a soft curve, it helps to get a nice, warm overdrive sound. And
an incredible volume level, when compared to the 'clean' sound, just
below clipping.
By the way: The limiter is finished, documented and ready-to-go. Is
anybody interested in the LADSPA plugin?

This is quite a lot of stuff, I hope I don't keep you too busy. Please
let me know, if there are any problems, of if something should be solved
differently.

Then, I tried Swami today for the first time, and after having an
extended jam session on my (computer) keyboard I must say that I like
it.

And now I'll go down to the bomb shelter and play some music.

Cheers

Markus




reply via email to

[Prev in Thread] Current Thread [Next in Thread]