iiwusynth-devel
[Top][All Lists]
Advanced

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

[iiwusynth-devel] Re: [Swami-devel] Stuff


From: Josh Green
Subject: [iiwusynth-devel] Re: [Swami-devel] Stuff
Date: 20 Sep 2002 12:50:01 -0700

On Fri, 2002-09-20 at 01:28, M. Nentwig wrote:
> Hello,
> 
> nice to hear again from you, it -was- rather quiet. Well, I was just
> about to write this afternoon or tomorrow; I'll also update Swami again.
> 
> What was the problem with pitch in modulators again? Was it that the
> generator number for pitch is mentioned nowhere? I think I missed the
> discussion.
> 

It was a while ago when this problem was mentioned.. In section 8.4.10
of the SoundFont 2.0x PDF spec it mentions a default modulator called
"MIDI Pitch Wheel to Initial Pitch Controlled by MIDI Pitch Wheel
Sensitivity". The problem is that the InitialPitch destination generator
is non-existent. Unless in fact they do mean the fineTune generator
(#52), which I doubt. I think they just messed this one up (I really
don't see a need for the coarse tuning parameter as the fine tune one
covers the entire MIDI note range). But I realized that the fineTune
generator could in fact be used for this purpose. I don't really see any
draw backs of doing this. This would allow for us to override the pitch
bender and use it for other purposes :)

> I implemented the modulators for coarse / fine sample start etc. a
> couple of months ago and thought, that the code is waterproof. Seems
> that it isn't - I'll look into this.
> 

How about setting these generators in real time from the API? I should
just try it :) This laziness has got to end, he he.

> We had a discussion about individual channel audio outputs a while ago.
> I said that I could use individual outputs for each MIDI channel, but I
> realized that this isn't versatile enough. It will be fine for
> sequencing and using the synth as part of other programs, but it's too
> limited for 'real-time' playing:
> Assume you want to program a 'split' sound, for example an electric
> piano on the left end of the keyboard, organ on the right. The piano
> should play through a multi-tap delay, but not the organ.
> So what now? They are both controlled with the same MIDI channel, just
> different zones in one preset.

For that particular case it might be better to split the keyboard itself
to use 2 different MIDI channels. My crappy Roland A-33 will do such a
thing. I've been thinking of extending the virtual keyboard in Swami to
be able to do this as well. Having some sort of software controlled MIDI
note map filter (say in a ALSA sequencer chain) would be cool too.

> The best solution I have come up with so far is to add a new generator
> 'Output select' to the sound font. Of course, the feature has to be
> supported by both synth and sound font editor to work. If the generator
> is 0 or undefined / default, then audio is routed to L/R, chorus, reverb
> using pan. If it's 1, then it goes only to individual channel 1, pan is
> ignored. Same with 2, 3, 4 etc. This works with stereo and is effective,
> because the synth doesn't need to be able to send a signal to individual
> output 1,2,3, L/R chorus and reverb at the same time, with most of the
> gain settings 0 anyway - it just avoids useless buffer copying.
> 

I've been fairly reluctant in doing things to the SoundFont standard.
Probably wouldn't be looked apon very well by EMU. This kind of stuff
could probably still be accomplished from the input side of things and
allow audio routing of individual MIDI channels.

> 
> Unrelated, but maybe interesting (if just for the pure joy of hacking):
> I found a cheap alphanumeric LCD display (40 char) in an electronics
> shop - hooking it up to the parallel port was easy. Add some cardboard,
> a battery and -lots- of adhesive tape, and the result is a display in a
> robust little box, that can be controlled from the command line, as in
> >> LCD 'Hello World!'. And if the display is disconnected, the computer
> doesn't even notice.
> 
> Now what does that have to do with Iiwusynth? Add another 160 lines of
> perl code, that
> - starts iiwusynth with some sound and puts the name on the LCD
> - does nothing while I'm playing
> - waits for a program change (it reads the output through a pipe)
> - kills the synth
> - starts the synth with a different sound and prints the name on the LCD
> 
> - waits for a program change
> etc.
> 

Kill the synth? Why would this be necessary?

> Now the perl program keeps all the settings (gain, chorus parameters,
> reverb parameters, font name, program number) together in one place, and
> the LADSPA Fx unit can be programmed differently for each sound. There
> is a reasonable default value for everything, which is only modified,
> where needed. And I can operate the whole mess without ever touching the
> PC once it's running. Well... I -am- an optimist... But I'll try it in

I've been thinking about how to store Reverb and Chorus parameters. You
have probably seen some of the discussion on LAD about creating a SysEx
based protocol for fetching program names for synths? The discussion has
involved iiwusynth in particular. It would be neat to get a LAD SysEx
Manufacturer ID (although it appears to be $200 a year, if it was for
the entire Linux community it might not be too hard to come up with). We
could have a iiwusynth device ID and do custom SysEx commands for
setting things like Chorus and Reverb parameters. Of course this
wouldn't allow things to be stored in the SoundFont itself, but an
accompanying MIDI file could be used.

Which reminds me. Does anyone know anything about the XMF (eXtensible
Music File - http://www.midi.org) standard? It sounds like its a way of
packaging a MIDI file along with patch banks (DLS in particular).

> real-life soon, let's see what happens. Good that my keyboard can make
> some noises of its own, something to fall back to if (when?) things go
> to hell :-)
> 

Yes, things do have a tendency to go to hell at times. I'm planning on
adding a Python binding to libswami/libInstPatch in the near future
which would probably help with your task, Python support in Swami :)

> Cheers
> 
> Markus

Cheers.
        Josh Green





reply via email to

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