Kyma Forum
  Tips & Techniques
  Loop Player with auto increment?

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

next newest topic | next oldest topic
Author Topic:   Loop Player with auto increment?
LoopyC
Member
posted 22 October 2009 00:14         Edit/Delete Message   Reply w/Quote
I am an absolute beginner to Kyma but any advice/info would be appreciated as to the general procedure/availability of the following device. Is it advance building, something already available, or a project for some future when I am past the basics? Thanks in advance, here is my 'design brief ;-)

A sample player/looper that allows one to set loop start/stop (or as the whole file loaded) and each time (or a set amount of times/loops) the file loops (repeats), the entire loop is incremented by one 'frame', the 'frame' being some programmable fraction of a second or seconds. So do one (or 'n'#) loop, move one fraction of a second forward, do next loop, repeat, ad infinitum or until last possible loop that can be set within present file (loop end=file end so stop increment) is reached. Option of crossfade beginning/end of loop and/or de-clicking desirable but not a deal breaker.

The important part is the 'some fraction of a second' as incrementing via MIDI (which I can already do) is not fine resolution enough for the result I am after (thinking in vein of Jan Jelinek 'loop finding records').

[This message has been edited by LoopyC (edited 22 October 2009).]

[This message has been edited by LoopyC (edited 22 October 2009).]

IP: Logged

cristian_vogel
Member
posted 22 October 2009 08:52         Edit/Delete Message   Reply w/Quote
do you mean like a kind of loop scan?

thats what I call this type of idea.. a loop that can move around inside the sample, offsetting its start by tiny ammounts , but keeping the loop length the same?

IP: Logged

LoopyC
Member
posted 22 October 2009 11:57         Edit/Delete Message   Reply w/Quote
Yes, EXACTLY Cristian (and I normally refer to it as 'loop scanning' also, just neglected to in my 'brief' ;-)), with the added caveat (at least in my initial idea) of the scan happening in a very controlled automated forward motion, thus the counter to increment 1 frame each n# of loops.

I have no doubt it's possible in Kyma, I just don't know what level of skill it would take to implement (CapyTalk is a ways off for me). I would even be willing to pay someone to make it but am also wanting to to learn, been combing the book which has some tantalizing near-references but not close enough for my meager understanding to proceed (yet).

I think Jan Jelinek is actually doing something simpler (ASR mod wheel?) but I like proceeding with what I think a technique is and being wrong about it enough to make it my own experiment to some extent I did a quick search on his technique and came up with my own quote! concerning Expert Sleeper's 'Crossfade Loop Synth' lol. Unfortunately MIDI made the scanning far too course in that case for the result I was looking for (a much more 'It's Gonna Rain'-type of scan).

Have you made/done loop scanning at that level Cristian (fractions of seconds by loop counter) or is there another perspective already in the library I might be interested in?

Thanks for your interest and reply ;-)


IP: Logged

pete
Member
posted 22 October 2009 15:46         Edit/Delete Message   Reply w/Quote
Hi LoopyC

Initial experiments could by done with the Sample module. Here you can move the start and end points of the loop while the sound file is playing. This is very limited in as much as you have to remain in the loop and it is hard to know where you are at any given time.

You could make two identical sample player but make this one have the file "full ramp" as it's sample. It's output could then be your reference and with feedback modules it could be used to make calculations to control itself (and the other sample module with the sound in).

You may find this limiting after a while, so the next thing to try is the waveshaper module.

You can find one using cntl B and finding TimbreWaveshaper in the prototypes.

This is a powerful module and does so much more than it's name implies. The shaping function can be a big sound file limited only by the ram in your Capy/Paca and the input is the pointer to the position in ram that is being outputed. -1 is the start of the sound file and +1 is the end.

So if you put a ramp in the input you have a sample player. The angle of the ramp is the rate you play through the sample. If you make the ramp jump to a new position the sample jumps to that new position (at sample rate). This all requires a lot of experimenting and it may be hard to generate the ramps you need to get it to work the way you want, but you can do some interesting stuff.

Hope this helps

Pete

IP: Logged

LoopyC
Member
posted 22 October 2009 16:30         Edit/Delete Message   Reply w/Quote
Certainly, that is a nice set of tips Pete ;-) Even if I don't get to my initial goal straight away with your suggestions I am willing to see what else it will lead to, exploring around in Kyma is never a bad thing!

I had thought about the ramp method (as opposed to a counter) as that is how I have done it MIDI which is of course...errr well 'course', but taken in the context of Kyma, these other modules, and your suggestions I will optimistically check it out, thanks for your input.

Right this moment I am actually doing it (loop scanning) with a combo of a cheap little program called 'Amazing Slow Downer' which allows a frame nudge of 1/75th of a second through MIDI (which I am doing through 'Rondo', another little cheapie). Not it's (ASD's) intended use but it actually works within that 1/75 limit so I can at least 'prototype' the effect somewhat

IP: Logged

pete
Member
posted 22 October 2009 17:58         Edit/Delete Message   Reply w/Quote
Hi LoopyC

Don't forget that a counter in the digital domain is a ramp and with 24 bits you have 16777216 steps. A bit less course than MIDI.

You will let us see your efforts when you get going?

good luck

BTW are you on Capy or Paca?

[This message has been edited by pete (edited 22 October 2009).]

IP: Logged

robertjarvis
Member
posted 23 October 2009 14:18         Edit/Delete Message   Reply w/Quote
I think the way I would initially think about doing this would be to paste an Oscillator into the !LoopStart field of a sample, and select an appropriate wavetable. Then in the frequency field, where one controls how quickly the wavetable is to be read, it is just a matter of inserting the appropriate frequency.

For example, using the "Count" sound that comes with the Sample prototype, you can see that it is 88200 samples in length. If a version of that sample was to increase by one sample on each play then it would take 88200 x 2 seconds to reach the end, so therefore that's how long we would want our wavetable to get from the start point to its end point.

Would this work?


IP: Logged

LoopyC
Member
posted 24 October 2009 14:55         Edit/Delete Message   Reply w/Quote
Thanks Robert, I will also try that

Pete, I will certainly keep the thread up-to-date as to my progress, the discreet-built 'prototype' I mention above was so much fun I have been temporarily distracted exploring the processing possibilities (albeit in a limited form)

I have got this page copied onto my desktop so next Kyma session I will explore all the suggestions, the help/suggestions/feedback is much appreciated, thanks all.

[This message has been edited by LoopyC (edited 24 October 2009).]

IP: Logged

LoopyC
Member
posted 24 October 2009 14:57         Edit/Delete Message   Reply w/Quote
Oh and Pete, I have the new Paca running from a Mac Pro (Nehalem) and Apogee Duet.

IP: Logged

SSC
Administrator
posted 24 October 2009 17:07         Edit/Delete Message   Reply w/Quote

LoopyC.kym

 
Please have a look/listen at this Sound and let us know if this is approaching what you had in mind.

It's a Sample where the Start parameter is:

!FrameDur s tick sampleAndHold: !StartLoop

and the End parameter is:

(!FrameDur s tick sampleAndHold: !StartLoop) + !LoopLen

To get from a frameDur in seconds to a proportion of the total sample duration, it uses:

((!FrameDur s tick) triggerEvery: !NbrLoops) countTriggers - 1 * (!FrameDur s / 'SwS - 062 Tidal.aif' sampleFileDuration)

The Sample is multiplied by a FunctionGenerator on a Gaussian envelope triggered at the FrameDur rate to do the windowing or enveloping.

For small frameDurs (~ 0.02 s) and NbrLoops > 1, you get a classic granular time stretch kind of effect. For larger FrameDurs it can repeat, for example, each beat in the loop.

Are these the kinds of results you were seeking?

IP: Logged

LoopyC
Member
posted 24 October 2009 21:56         Edit/Delete Message   Reply w/Quote
Oh thank you for your example and input

It does seem to be on the right track but I don't know if it is inner relatedness of all the parameters but I can't seem to get the same subtle, slow effect despite different source samples. Here is my 'prototype' (a screenshot) and also there are some examples as posted to my blog of this 'on the fly' prototype. As they are varied sources and take a while to unfold (thus some are very long), skip through the tracks in the player for best example (102209 005 is probably a good one).

http://i242.photobucket.com/albums/ff143/loopyc/Forum%20Bucket/LoopScannerPrototype.png

http://loopyc.com/?p=906

[This message has been edited by LoopyC (edited 24 October 2009).]

[This message has been edited by LoopyC (edited 24 October 2009).]

IP: Logged

LoopyC
Member
posted 24 October 2009 22:15         Edit/Delete Message   Reply w/Quote
Hmmm, I am seeing that substituting a 20 min file for the reference to looplen (!LoopDur) and then loading/playing a short sample (a typical pad loop) of 3secs starts to go in the intended direction but still difficult to set without lots of loading and editing, I am wondering with all these interdependencies (as opposed to straight parameter inputs) is this the most straight forward way then? It would require a lot more loading and changing of references it seems but maybe I haven't wrapped my head around this alternative approach properly? Given the simplicity of the prototype (choose file, set desired durations, and go!) I thought something similar would work in Kyma ;-) Maybe just my own newbness or?

Either way, thanks for the help and feedback

IP: Logged

LoopyC
Member
posted 24 October 2009 22:18         Edit/Delete Message   Reply w/Quote
btw, even though it initially doesn't get the intended effect, some other interesting possibilities suggest themselves so I will use this version for something ;-)

IP: Logged

LoopyC
Member
posted 24 October 2009 23:40         Edit/Delete Message   Reply w/Quote
btw btw lol, I realize I am ahead of myself in application versus knowledge and need to get back to the excellent 'map' of learning Kyma provided by SS...I just get excited sometimes and was exploring the knowledge level i would need to get this result. There is a lot in all your replies to think about and fill in the gaps I am having understanding it all but never the less greatly appreciate the information which will ALL go to my future use so thanks again all (and keep them coming if inclined!)

IP: Logged

pete
Member
posted 25 October 2009 06:14         Edit/Delete Message   Reply w/Quote
Hi LoopyC

listening to your example I think I see what you are doing and it really is simple and just as simple to implement.

Get just one module, the "Sample".
Call up your sound file in the Sample field.
Set Frequency to default.
Set Gate to 1. set scale to 1.
Set Start to 0 and End to 1.
Set LoopStart to !Trigger ramp: !Speed s.
Set LoopEnd to (!Trigger ramp: !Speed s) + !LoopLen.
Set both AttachTime and ReleaseTime to the crossfade time you want or put !XFade ms in
both, for live control.
Tick both SetLoop and LoopFade

When you start the sound you will need to adjust the range of the Speed control in the VCS using the pad lock, to something like 0 to 500 as this is the number of seconds it takes to move through the file.

The LoopLen value will represent a fraction of the whole file hence if the file is 60 sec long then 0.1 will be a 6 sec loop.

Once set up press the trigger button to start again, and don't forget to take a snapshot or you will loose your settings next time you start up.

Hope this makes sence

Pete



IP: Logged

LoopyC
Member
posted 25 October 2009 06:24         Edit/Delete Message   Reply w/Quote
"listening to your example I think I see what you are doing and it really is simple and just as simple to implement."

That's what I like to hear, thanks Pete...will try that ASAP! Got some good learning in though playing with y'all's suggestions tonight...needed to get over some of the intimidation my 'creative' side gets when faced with the newness of it all (hopefully got my lifetime though to rectify that, I know the Kyma is willing ;-))

IP: Logged

pete
Member
posted 25 October 2009 07:17         Edit/Delete Message   Reply w/Quote
Hi LoopyC

listening to your example I think I see what you are doing and it really is simple and just as simple to implement.

Get just one module, the "Sample".
Call up your sound file in the Sample field.
Set Frequency to default.
Set Gate to 1. set scale to 1.
Set Start to 0 and End to 1.
Set LoopStart to !Trigger ramp: !Speed s.
Set LoopEnd to (!Trigger ramp: !Speed s) + !LoopLen.
Set both AttachTime and ReleaseTime to the crossfade time you want or put !XFade ms in
both, for live control.
Tick both SetLoop and LoopFade

When you start the sound you will need to adjust the range of the Speed control in the VCS using the pad lock, to something like 0 to 500 as this is the number of seconds it takes to move through the file.

The LoopLen value will represent a fraction of the whole file hence if the file is 60 sec long then 0.1 will be a 6 sec loop.

Once set up press the trigger button to start again, and don't forget to take a snapshot or you will loose your settings next time you start up.

Hope this makes sence

Pete



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