iiwusynth-devel
[Top][All Lists]
Advanced

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

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


From: Peter Hanappe
Subject: Re: [iiwusynth-devel] Pitch bend, filter, sysex, LADSPA,...
Date: 07 Apr 2002 00:59:59 +0200

On Sat, 2002-04-06 at 18:11, M. Nentwig wrote:
> Hello,

Hi Markus,

I just got home from the saturday down town with my wife. Happy to see
so much activity around iiwusynth. Let me work thru these mails... 

> 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 ...

Will check that out and merge it into the CVS.

> Changes:
> 
> =========Filter=======
> The conversion 'cent to Hz' did not work for high frequencies 

Okay for the changes.

> (it
> freaked out just below infrared :-) 

That way we can use the synth to talk to palm pilot ;)

> 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)

OK

> =========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'll check it. I wasn't sure about some of the things in your proposal.
Initially I had a more straightforward solution in mind. Your
implementation makes it come close to a patch language. Since you
implemented it all and it's working fine I'm quite happy with that.

Another point I wanted to bring up was that (some day when I have more
time) I'd like to adapt the synthesizer to have a multi-channel out. It
would allow users to send, for example, MIDI channel 1 to audio channel
1, MIDI channels 2+3 to audio channel 2, etc... That way, people can use
an external mixing console to finilize the mix or to use the synth in
combination with a multi speaker system to do more fun stuff. 

If we want to go there, we have to be careful not to kill the CPU
because we'd be duplicating the reverb modules and other plugins on the
audio path.  

> 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).

A GUI interface would be great. I think that's what's really needed now
to make the synth get a wide acceptance (eye candy).


> ========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).

Bummer! You had already send the pitchbend change to me, didn't you?

> ========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).

OK

> 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.

MIDI files also use the end-of-sysex message. It simply never has been
tested much.


> 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.

I'm not sure I understand?

> ========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.

OK

> 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.

I'm quite sure your masterkeyboard sends the correct bank select
messages. Yamaha knows MIDI quite well ;) The specifications of DLS
(Downloadable Sound, very similar to soundfonts) actually advices to
always send a bank select message before a program change. What values
do you receive for the bank select MSB and LSB?



> =========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.

OK

> =========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.

I'll keep that in the #ifdef MN_CUSTOMIZED !

> =========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.

Sure. I wish I had more time to actually do things with the synth so I
could experiment more with it. I even lack some necessary MIDI equipment
to do fun stuff.


> By the way: The limiter is finished, documented and ready-to-go. Is
> anybody interested in the LADSPA plugin?

Yes, sure. Do you already have a ladspa ID. I requested a bunch of them
so I can give you one if needed.


> 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.

Next weeks I will have very little time again. Tomorrow is family day,
then on monday I start a new mission, interleaved with more family
weekends. So it'll be nightly hacking sessions again.


> 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.

Have fun!

Cheers!
Peter

> Cheers
> 
> Markus
> 
> 
> _______________________________________________
> iiwusynth-devel mailing list
> address@hidden
> http://mail.freesoftware.fsf.org/mailman/listinfo/iiwusynth-devel
> 





reply via email to

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