First time here? Check out the FAQ!

What is the most elegant way to algorithmically generate SoundToGlobalControllers?

0 votes

Hi everyone,

I'm sure the answer already exist somewhere but I'm looking for a hint...

Looking at the 'EuSeq-McClain Metal Bar ModalFilter KBD' prototype and I like the TimbreDice feature so I want to implement the same idea in a sound I'm building. I know how to do it the laborious way with 32 SoundToGlobalControllers but wouldn't it be nice to be able to put a 'collect' message in the GeneratedEvent parameter field, like this?

{(1 to: 32) collect: [ : i | !Timbre suffix2: i]}

I've arrived at a close solution with the TransformEventValues prototype but I lose the functionality of the SourceEventValues, which I don't want to happen.

I've also explored the replicator but can't get it to behave the way I want it to in the context of my sound.

Thanks in advance for any thoughts or suggestions!

asked Oct 15, 2018 in Capytalk & Smalltalk by will-klingenmeier (Adept) (1,270 points)
edited Oct 24, 2018 by will-klingenmeier

1 Answer

+1 vote
Best answer

Hi Will,

If you have a SoundToGlobalController with !Timbre as its GeneratedEvent, then feed it to a Replicator with Number set to 32, it would create 32 SoundToGlobalControllers that generate !Timbre01, !Timbre02, etc. Is that what you'd like to end up with? Check the box that says RenameSpecialEvents and list !Timbre as a special event if you want to make sure you are renaming the !Timbre events only.

Here is an example showing how to make a roll-the-dice set of 32 Velocity potentiometers with Replicator.

answered Oct 15, 2018 by ssc (Savant) (121,430 points)
selected Nov 1, 2018 by will-klingenmeier
Looks like you are using the switch values (!SW01 etc) as Velocities (which are in turn used as amplitude scales). In your random expression you are taking the absolute value of the random [-1,1] number. But I think what you intended is that they should be either 0 or 1, right?
If so then you can get this result by changing the expression in your STGC to:
!SwDice nextRandom asLogicValue
Then a stage is either on (amplitude of 1) or off (amplitude of 0).
Right! Makes sense-That solves that. More questions soon I'm sure. Thanks so much!
When you were playing with the sound did you notice that after 'rolling' the !SwDice the toggle with the !KeyDown events doesn't always happen on the first !KeyDown? Sometimes it does and sometimes it takes two events to toggle- like the first !KeyDown doesn't register. I've been trying some variations in the Value field of the SwDice STGC but haven't found a consistent solution. Maybe that's not even where I need to be working?
Hi Will, I tried it again tonight and, for whatever reason, it seems to be working ok on my setup (I was trying it with a LinnStrument hooked up to the USB input of the Pacarana). I did have to change the Channel on the MIDIVoice from 2 to channel 1 (but that should affect things). Is it possible that might be holding down more than one key at a time sometimes? (When I was trying it just now, I was playing in an exaggeratedly staccato style so maybe that's a possibility?)
Interesting. Thanks for double checking. I'm using it with Playtronica and I'm sure I'm only holding down one 'key' at a time (in this case touching gourds). I've noticed that the MIDI events log in the MIDI messages and the 'm' shows in the DSP status window but it just doesn't always toggle on the first event. Could there be something else I could try?