If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
sound freezer
48 posts
• Page 4 of 5 • 1, 2, 3, 4, 5
Re: sound freezer
So in order to get the mem to array - it would have to be something like this?
//edit: pre-finale version.
//edit: pre-finale version.
- Attachments
-
- looper002.fsm
- (291.78 KiB) Downloaded 1284 times
-
- looper001.fsm
- (179.6 KiB) Downloaded 1301 times
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
Okay, it seems this little fellow works.
Thanks KG!
Thanks KG!
- Attachments
-
- make-004.fsm
- (152.75 KiB) Downloaded 1319 times
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
Okay, it appears that combined - it works, but... not as it should. Could you play with it a little bit? The design to which I'd like to integrate that stuff is posted here few posts earlier (temp.fsm).
p.s.:
Best way would be to focus the wave capture on zero crosspoint I guess.
p.s.:
Best way would be to focus the wave capture on zero crosspoint I guess.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
Okay, I'm stuck.
1) Probably, there is no way to get sample accurate loop using waveread and wavewrite combined with selector, because selector is switched via greenery.
2) Plus - it would be better/recommended, to get the single-cycle wave file that is captured between zero-crossing points, and not randomly.
*
Question 1. How to capture and save to file - sample-accurate, single-cycle wave - from a stream? In this scenario - start/stop flipflop reference would be minus-to-plus change in the stream.
Question 2. Predicting that the single-cycle wave in the stream - may contain multiple zero crossings - how to capture what described above - having the "cycle lenght"? In this scenario - start would be the first minus-to-plus encountered, and stop would be after specified cycle lenght.
1) Probably, there is no way to get sample accurate loop using waveread and wavewrite combined with selector, because selector is switched via greenery.
2) Plus - it would be better/recommended, to get the single-cycle wave file that is captured between zero-crossing points, and not randomly.
*
Question 1. How to capture and save to file - sample-accurate, single-cycle wave - from a stream? In this scenario - start/stop flipflop reference would be minus-to-plus change in the stream.
Question 2. Predicting that the single-cycle wave in the stream - may contain multiple zero crossings - how to capture what described above - having the "cycle lenght"? In this scenario - start would be the first minus-to-plus encountered, and stop would be after specified cycle lenght.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
trogs float-array to mem experiment may help. basically it uses ruby to create a predefined-sized buffer (a sample frame) and sends its address as a value to assembler primitive. in assembler you can use this address in pretty much the same way you use arrays (write and read from it).
advantage over wave read/write is, that you can use jump commands to bypass both writing and reading.
disadvantages are that you'll need to write a lot of parts in assembly and also the initialization is quite unstable (even to a degree that the schematic cannot be loaded because it crashes on startup).
I may provide example later this evening...
advantage over wave read/write is, that you can use jump commands to bypass both writing and reading.
disadvantages are that you'll need to write a lot of parts in assembly and also the initialization is quite unstable (even to a degree that the schematic cannot be loaded because it crashes on startup).
I may provide example later this evening...
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: sound freezer
I'm starting to wonder about something else.
Here is the idea, I'm not sure how to compile it.
If indexes are in blue, driven by ramp, then ramp may be triggered once, by stream/blue change from minus to plus.
Ramp would be stopped and hold (thus - indexes would be stopped and hold) after reaching certain threshold (calculated from "lenght").
All happens in "read" mode, with no need to use selector. Because - there is a prim called mem to array. Thus - the loop would be stored directly as a text/shape. This array can be resampled then easily.
Second idea that comes to my mind - is to use the "lenght minus n%" (related to single precision accuracy) to open the way to stop the ramp - after reaching next closes minus to plus crossing.
Does it makes any sense? Is my understanding correct here?
Here is the idea, I'm not sure how to compile it.
If indexes are in blue, driven by ramp, then ramp may be triggered once, by stream/blue change from minus to plus.
Ramp would be stopped and hold (thus - indexes would be stopped and hold) after reaching certain threshold (calculated from "lenght").
All happens in "read" mode, with no need to use selector. Because - there is a prim called mem to array. Thus - the loop would be stored directly as a text/shape. This array can be resampled then easily.
Second idea that comes to my mind - is to use the "lenght minus n%" (related to single precision accuracy) to open the way to stop the ramp - after reaching next closes minus to plus crossing.
Does it makes any sense? Is my understanding correct here?
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
yes, the ramp may be activated on first found zero crossing and stopped one sample after next zero crossing (or a first zero crossing after some "minimal period" length). Then only the desired part of mem would be read, because period would be found ... I'm actually working on that right now.
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: sound freezer
Here... a working prototype
- Attachments
-
- freeze.fsm
- (373.51 KiB) Downloaded 1333 times
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: sound freezer
Thanks for effort.
Now - from what I can see - buffer can be reduced to 20000 if I understand it correctly.
From what I can see - buffer should not (or?) be changed during schematic running (invisible 100% CPU may happen).
So. Let say that I'm using Martin's crossfaded freezer, and I have frozen the sound.
I'm turning on (triggering) your prototype, to capture a sample of that sound.
Loop lenght = buffer * 1000/pitch in miliseconds; buffer = 1, so actually it's not in the equation.
(I'm not sure about the accuracy of lenght, so let say stop point should be found around "lenght - 1%"? Or?).
What should stop the prototype?
How do I get the captured sound (single cycle wave, sample accurate) to wav or text file? (mem2floatarray shows strange results)
Now - from what I can see - buffer can be reduced to 20000 if I understand it correctly.
From what I can see - buffer should not (or?) be changed during schematic running (invisible 100% CPU may happen).
So. Let say that I'm using Martin's crossfaded freezer, and I have frozen the sound.
I'm turning on (triggering) your prototype, to capture a sample of that sound.
Loop lenght = buffer * 1000/pitch in miliseconds; buffer = 1, so actually it's not in the equation.
(I'm not sure about the accuracy of lenght, so let say stop point should be found around "lenght - 1%"? Or?).
What should stop the prototype?
How do I get the captured sound (single cycle wave, sample accurate) to wav or text file? (mem2floatarray shows strange results)
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: sound freezer
in my schematic in off state the freezer writes data to index [0] and reads from index[0] afterwards. In writing mode it writes to indexes 1,2,3,... until zero crossing is found and looping mode turns on. In looping mode it writes to index [0] and reads indexes [0] to period length.
the memory is fixed size - to save one period from it you have to extract section [0] to [period length].
note that there is a parameter which defines the minimum period length (basically defines how long is the algorithm latent after finding first zero crossing and stating to search for the second one). That should be calculated with from the pitch of your signal and some "tolerance" like:
minimal period length [in samples]=0.99[tolerance of 1%]*2/f[normalized frequency]
the memory is fixed size - to save one period from it you have to extract section [0] to [period length].
note that there is a parameter which defines the minimum period length (basically defines how long is the algorithm latent after finding first zero crossing and stating to search for the second one). That should be calculated with from the pitch of your signal and some "tolerance" like:
minimal period length [in samples]=0.99[tolerance of 1%]*2/f[normalized frequency]
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
48 posts
• Page 4 of 5 • 1, 2, 3, 4, 5
Who is online
Users browsing this forum: No registered users and 9 guests