On 5 January 2017 at 17:30, IOhannes m zmoelnig zmoelnig@iem.at wrote:
On 2017-01-05 12:57, Esa Ruoho wrote:
i, I have an array that I'm playing at say 0.017 speed (sending 0.017 to
a
phasor~ set to cycle through the 65536 -sized array. I'm hoping to find
out
how to get this pitched down array content to be written to an array -
so i
can then dump it to a wavefile and use it on another software. How would
I
go about doing it? so far i have a solution where i have a metronome that runs for $1 (in this case, a calculation of 65536*0.017 = 1114112) and i toggle it "on" and when the array has been written to, i toggle it off. I was attempting to have a delay toggle the toggle off, so the metronome would stop counting around 1114102, but when i tried to loop this through back into the TGL -object, Pure Data crashed fully.
Pd should not crash. if you experience a crash, you should post a (minimal) patch that exposes the problem, so it can be fixed.
well, it became unresponsive. but this i think was because i had a toggle going into a bang, which was sending to a delay, which was trying to untoggle the toggle, which would then send out a bang. so it was my fault really, endless feedback loops causing unresponsiveness and then me not being able to remove a specific segment of it to stop it from feedbacking/being unresponsive. so no point really trying to fix, right? :)
anyhow, [phasor~] and [metro] both repeat, so they seem to be the wrong choices for a one-shot operation, instead of [line~] and [delay].
also i don't understand why you would want to dump the array into another array in order to record it. sending the audio to a [writesf~] directly should be enough.
Thing is, the array (let's call it plom) is played at like 0.0017 speed or more, so to capture what "plom" sounds like when pitched down, i thought i'd have to write it into an array, and save that array safely. maybe i've misunderstood, but i was able to then capture it into an array and write that array. i was just hoping to do it in a snappier way rather than having to have a metro toggled on, until it felt like the array was full, and then stop the metronome, and then manually tap on save-sample.
so far i'm quite happy with how the script goes, it's very simplistic, just two oscillators, a delay, a method of sampling the oscillators+delay result into an array (plom), then a midicontroller knob to control the playback of the array (plom) between -2 and 2. now i'm just trying to get the happy accidents (plom pitched down) into a randomly named filename (or maybe a date/time named filename) so that i can retain them, instead of losing them everytime pure data is booted.
[bang( | [array size foo] | [t f f b] | | | | | [samplerate~] | [/ ] | [* 1000] | [/ 0.01666666] | | [pack] | [t l b l] | | [$2( [0, $1 $2( [start( [delay] | | [stop( [line~] | +-------+ | |/ [tabread4~ foo] [t a] | / | +------------------+ |/ [writesf~]
after numerous mistakes, i was able to (i think) get this to work somehow. i'm not sure if foo = plom, but i put tabread4~ and array size as plom (as that's the original material). i am able to now feed the phasor~ playback speed into the [/ 0.016666] -2nd port, and if i tap on start, and wait a while and tap on stop, i get a type of sound. it's not in the same pitch as what i'm hearing, so what i hear isn't quite what i get, but it's definitely a step in the right direction. i took a screenshot of what i ended up with, if that helps. http://imgur.com/a/Gu6bz
i'm kind of halfway there, thanks to you! all i gotta do is get it to actually be at the same pitch and work, and figure out if i should just keep with 0.01666666 that you suggested, or have that be changed by the playback speed (that i'm using to feed to phasor~..
and the 2nd step is to get the date-time writing to the filename and somehow stash the long-ish path somewhere. phew. i never thought i'd get this far!