Kyma Forum
  Tips & Techniques
  Quantizing Time/Rate changes

Post New Topic  Post A Reply
profile | register | preferences | faq | search

next newest topic | next oldest topic
Author Topic:   Quantizing Time/Rate changes
Phi Curtis
Member
posted 11 February 2006 13:40         Edit/Delete Message   Reply w/Quote

SequencerwithProportionalRates.kym

 
Hi,

I've attached a simple sequencer which allows you to determine the rate of playback in relation to a given !BPM. So if you set up !Numerator to 1 and !Denominator to 8, you are playing back in 8 notes, 3 and 8 gives you a step change every 3rd 8th note, etc.

What I want to do is quantize any changes I make to the !Numerator or !Denominator so they happen on the next beat (or actually a user-specified quantization level, which I know will mean I have to double or quadruple the !BPM rate if I want to quantize to 8ths or 16ths).

I have a vague feeling that this would be done by using countTriggers on the !BPM and using alignWith: somehow in the rate field of the sequencer, but it seems like it would have to avoid somehow piling up several different new values on the next beat if you were to turn the knob and pass through several values on the way to your new value.

Any ideas? Maybe there's already an example of this in the user library that I don't know about? This same kind of problem exists in changing beat-timed delay times, for example.

I also have the sequencer set up to have a user-definable step !Start, and a !Length of the loop, which wraps around the end of the steps, but I would like to be able to have the sequencer jump to the new !Start step on the next step after the change of the !Start parameter value. Any ideas on how to do that?

Finally, I'd love it if there were a simple way to reverse directions with a hot value, but I guess there isn't, beyond setting up two identical sequencers and making one go in reverse and then gate them on and off simultaneously? I know that you can use countTriggersMod: reverse: on sequencers set up using that expression, but I'd like it if reverse were a hot value in the sequencer object.

thanks,
Phil

IP: Logged

pete
Member
posted 11 February 2006 16:06         Edit/Delete Message   Reply w/Quote
Hi Phi

I think you need to use sampleAndHold: i.e. you want to hold the old value until the next beat triggers the change. You may need to make a copy of the BPM: formula to do the triggering. It may be a problem if the the BPM: itself is being controlled, then other tricks have to be used.

IP: Logged

SSC
Administrator
posted 11 February 2006 18:09         Edit/Delete Message   Reply w/Quote
"What I want to do is quantize any changes I make to the !Numerator or !Denominator so they happen on the next beat (or actually a user-specified quantization level, which I know will mean I have to double or quadruple the !BPM rate if I want to quantize to 8ths or 16ths)."

Should it be aligned to the next beat at the current tempo or the next beat in the new tempo?

You might be able to do this using an EventVariable. And only set the variable aligned with a beat...

IP: Logged

Phi Curtis
Member
posted 11 February 2006 19:56         Edit/Delete Message   Reply w/Quote

Sequencerwproprates,quantize.kym

 
Hi Pete and SSC,

Thanks for the suggestions. Working with Pete's idea, I now have the expression

(!Gate bpm: (!BPM * 4) / ((!Quantize - 1) of: #(16 8 4 2 1))) sampleAndHold: (((!Numerator - 1) of: #({8} {4} {8/3} {2} {8/5} {8/6} {8/7} {1})) * !Denominator * (!BPM / 3840))

in the rate field of the sequencer. This pretty well (see the attached sound), and allows me to quantize to whole notes, half notes, quarters, eighths and 16ths of the !BPM tempo (depending on the value of !Quantize).

quote:
Originally posted by SSC:
Should it be aligned to the next beat at the current tempo or the next beat in the new tempo?

Actually, I'm not really working with changing the tempo at the moment. I was just keeping the base tempo (!BPM) steady and changing the rate of the sequencer so that it is advancing steps at eighths, quarters, half notes, etc. Where it gets tricky, and the current solution allows things to get pretty out of sync still, is that I also allow tuplets - so I could have the sequencer playing 5-tuplet eighths (5 notes evenly in 2 beats) in relation to !BPM.

With the current solution, if I have the quantization at quarters (!Quantize = 3) and I want to go from 5-over-4 tuplets to 8ths (change !Denominator from 5 to 4), if I change !Denominator in the middle of the 5-tuplet the eigth notes will all end up in some weird 5-tuplet related offbeat, if you can follow. If I change it close to the downbeat of the tuplet I'm okay. It's better in these kinds of situations I think to have the !Quantize set to quantize to whole notes or halfs.

Still, there might not be a better solution, since it's a pretty hard to figure out how it should work...

SSC, can you give me an example of how it might work with an EventVariable? I'm going back to the manual now to review that...


IP: Logged

All times are CT (US)

next newest topic | next oldest topic

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply

Contact Us | Symbolic Sound Home

This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.


Ultimate Bulletin Board 5.45c