Page 2 of 5

Re: sound freezer

Posted: Sat Mar 01, 2014 11:07 am
by tester
Generally it's difficult to say. I suppose however - randomizing phase per each replay gives more fluency to the frozen playback. Do you have some schematic that shows it? I have no experience with playing with such stuff.

I will play with Martin's solution in a few days, because some infection pulled me down a little bit.

Re: sound freezer

Posted: Sat Mar 01, 2014 7:13 pm
by tester
martinvicanek wrote:Basically it records the incoming audio in a ring buffer. Upon pressing the Freeze button, it stops recording and proceeds playing back the last two wave cycles in a pitch-synchronous, cross-faded leapfrog scheme. It sounds a bit sterile so you might want to add some modulation to the "frozen" playback for musical effect.
Have fun!


Is it possible to make it less sterile? If I understood correctly, these two wavecycles you mention - are two different cycles (one after another), just measured per minus-to-plus zero crossing? If yes - then how to add few cycles between crossfade or how to make this crossfade per few more cycles? Ah, found the answer for the first part of my question; it looks it may sound better when adding a multiplier before the function generator.

But your idea is cool anyway - useful for other purposes (like finding by ear, new single-cycle wave shapes in audio signal).

Re: sound freezer

Posted: Sun Mar 02, 2014 9:26 pm
by tester
Martin, I'm having here a weird problem, and it appears that this comes from the freezing component of yours (i.e. not the pitch tracking part). I have on my schematic multiple filters that use mono4 philosophy, and when your freezer is connected - (as a single mono pass-through, as it is) - filters stop to work (I'm getting error on 2nd channel). I suspect there is some problem within the mono/mono4 connections you made. When I disconnect your freezer, and move signal directly - then filters start to work again. Could you check it on your side?

Re: sound freezer

Posted: Mon Mar 03, 2014 9:58 am
by martinvicanek
Tester, thanks for pointing that out. It was a silly division by zero bug in the freq/period conversion which propagated into the audio path and jammed your recursive filters. Fixed now in my original post.

Re: sound freezer

Posted: Mon Mar 03, 2014 12:16 pm
by tester
Thank you! Now it works.

Re: sound freezer

Posted: Tue Mar 04, 2014 9:03 am
by Perfect Human Interface
martinvicanek wrote:Anyway, here is a setup for freezing single-pitched sound. Basically it records the incoming audio in a ring buffer. Upon pressing the Freeze button, it stops recording and proceeds playing back the last two wave cycles in a pitch-synchronous, cross-faded leapfrog scheme. It sounds a bit sterile so you might want to add some modulation to the "frozen" playback for musical effect.
Have fun!


Hell if I won't use this for evil plans :o

Re: sound freezer

Posted: Mon Apr 28, 2014 1:03 am
by tester
Quick question.

I'd like to store frozen loop into a wavetable. How?

Re: sound freezer

Posted: Thu May 01, 2014 3:39 pm
by KG_is_back
Turn the loop into a float array using mono to float array primitive and input that to the wavetable primitive which will create the wavetable for you. you could possibly use ruby to extract the float array if you need sample precise performance.

Re: sound freezer

Posted: Thu May 01, 2014 4:44 pm
by tester
Mono to float prim depends on green ticker, thus it may not work well. But I think there is other way, sample accurate. I have somewhere a converter (thakns again Jay), that makes able to convert audio files (as far I remember it worked with wavs) into scaled text files. That's said - the first tep would be to make a wave writter (I think I have somewhere working example), to make a temp wave file, and second step would be then to use that temp for conversion. Or maybe there is a simpler way to use directly - mono to mem and mem to float array? (or - how to use ruby for that?)

Re: sound freezer

Posted: Thu May 01, 2014 5:09 pm
by KG_is_back
something like this should work to create the wavetable. However you'll have to input the indexes too (probably can be send as output from your looper).