iiwusynth-devel
[Top][All Lists]
Advanced

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

Re: [iiwusynth-devel] iiwusynth


From: Peter Hanappe
Subject: Re: [iiwusynth-devel] iiwusynth
Date: Fri, 10 May 2002 01:28:24 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.8) Gecko/20020205

Tim Goetze wrote:
M. Nentwig wrote:




Here's how I'll (probably) implement exclusive groups:
In Iiwu_synth.c, iiwu_voice_noteon, the new synthesis process ('voice')
is set up and running just before the 'return r' statement.
Into the same file I'll put an 'iiwu_voice_noteoff_by_exclusive_group'
function, which is then called at this point, if the voice has an
exclusive group != 0. This will then change all other voices from the
same group into release state.


i think it would be better to put any sounding voice from the same
preset / exclusive class into released state before / at the same
time with allocating the new voice.
to illustrate why i think so: imagine the open hihat is sounding, and
some crash cymbals maybe, bass, strings and an organ; bringing us to
max polyphony.
the hihat is to be closed now. your proposal would rather blindly cut
any one of the voices sounding to free a voice first. it would however
be much better to first put the open hihat into released state (we
have to do that anyway), so that when we ask for a new voice, the open
hihat becomes the natural choice for a voice to kill.

and i think you can't just kill by exclusive group -- you have to take
into account which preset the active voice belongs to, too. otherwise
if two presets define the same exclusive class, their voices will interact in strange ways.

now if i understand things correctly, this would mean that _iiwu_voice_t needs to be extended to remember which preset the voice
belongs to. but i may be wrong.

The solution I just commited releases the previous notes of the same
exclusive class and the same preset. Indeed, I added the preset to
the iiwu_voice_t structure. The code is in iiwu_synth_start_voice().



[cut] advise the
OS never to swap out your process's pages. on unix, you do this the
quick way by calling mlockall(2), and on a finer grain with mlock(2). a quick grep on the iiwu sources reveals no call to these functions.

Good point. Will do.


yeah, the sources are also easy to read. let's keep it like that. ;)

Doing our best.


Cheers!
Peter


tim


_______________________________________________
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]