iiwusynth-devel
[Top][All Lists]
Advanced

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

Re: [iiwusynth-devel] Modulators for sample points: Proposal for API fun


From: Josh Green
Subject: Re: [iiwusynth-devel] Modulators for sample points: Proposal for API function
Date: 11 May 2002 16:49:08 -0600

On Sat, 2002-05-11 at 05:15, M. Nentwig wrote:
> Hello,
> 
> I'm currently implementing the modulators for loop start / end, sample
> start / end.
> The idea is to allow real-time 'tuning' of loops.
> 

Awesome.

> On the other hand, modulators are more flexible here.
> Thinking of Swami, it could create modulators, which are not saved with
> the soundfont, only uploaded to iiwusynth for editing purposes.
> GEN_STARTADDROFFS, GEN_ENDADDROFFS, GEN_STARTLOOPADDROFFS,
> GEN_ENDLOOPADDROFFS, (all 'fine' and 'coarse') would allow full control
> over the sample..
> Those modulators could be independent (using a different source) for
> each instrument zone.
> So if the user tweaks the loop point of the C6 of a piano sound, the C2
> won't be affected at the same time. Otherwise it will be really
> confusing, if editing one zone 'breaks' all other zones.
> 

Since Swami uses the sfloader all generators/modulators will be loaded
at note-on time. It appears from the current version of iiwusynth that I
have that there isn't a way to load modulators yet via the sfloader API.
It might be nice to have a routine to set/offset a generator on a
particular voice without using modulators though. I remember we
discussed this a little before. I think the conclusion at that time was
that iiwusynth doesn't know what voice pertains to a particular zone.
Through the sfloader it would be possible for Swami to keep track of
what voice is created for a zone though. The only problem I see with
having routines that use iiwu_voice_t after it has been started is that
we don't know when it will be destroyed. If there was some way to keep
track of Swami's reference to a voice and/or have some sort of callback
when a voice gets destroyed, this could be solved?
I see that there is already a routine called 'iiwu_voice_gen_incr' and
the *_set routine of course. These aren't real time though, but the
routines would look the same at least from the callers perspective.

Do you think that a real time generator control API could be created
with relatively little effort? :)

> Question is: How to control these modulators (from Swami)? MIDI CCs are
> bad, because
> - there is only a small number of valid MIDI CC controllers
> - They are only 7 bit wide.
> 
> Therefore, it seems reasonable to me to add API functions for
> iiwusynth-specific modulation sources.
> SF 2.01 section 8.2.1 defines modulation source indices:
> 0 constant
> 2 note-on velocity
> 3 note-on key number
> 10 poly pressure
> etc.
> 
> 'Private modulation sources' would appear to the synth like 'internal'
> (non-MIDI CC) sources, like aftertouch, note number etc. They would just
> use higher numbers, for example >=100.
> 
> For example:
> 
> void iiwu_init_private_modulation_sources(int number);
> This reserves memory to hold the values for (number) independent private
> sources. It has to be called only, if the application wants to use this
> feature.
> 
> void iiwu_set_private_modulation_source(int index, double value);
> This sets modulation source (index) to (value).
> 
> Josh, what do you think? Is this useful for Swami, or did you have
> something else in mind? I remember that there was some discussion about
> this topic a month ago.

Seems a little too hackish for my taste. What about a real time
generator control API like I mentioned above? Or is this too
hard/hackish to implement?

> 
> Cheers
> 
> Markus
> 
> PS: The latest iiwusynth from CVS does not compile, because the files
> iiwu_chorus.c and iiwu_chorus.h are missing. Probably they were left out
> while uploading?
> 

I have also noticed the current brokenness of iiwusynth CVS.

On a somewhat unrelated note. It doesn't appear that there is yet any
way to set the pitch_wheel_sensitivity which I guess is normally a MIDI
RPN message of 0. A simple routine like
'iiwu_synth_pitch_bend_sensitivity' would do the trick for what I need
it for. I may do this myself if no one else gets around to it.

Also I noticed a bug in iiwu_cmd.c for the 'iiwu_handle_reverbsetwet'
routine. You'll notice that it uses iiwu_revmodel_setwidth to set the
value, should be iiwu_revmodel_setwet? (a copy/paste foo :)
Keep up the excellent work! Cheers.
        Josh Green




reply via email to

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