If you need 'instantaneous' (zero logical time) copy, then [array get] and
[array set] are probably a good option, but even though this will not stop the
DSP, it may well cause an audio dropout, typically in the case of large copies
on a system with small blocksize and small buffer size and non-trivial CPU
usage. These factors all interact in determining how much headroom (in terms of
CPU time) there is for a copy to happen within a single audio callback without
causing a buffer underrun.
If you need a real-time friendly[1] copy, consider using a pair of tabread~ /
tabwrite~. In this case, if you need to copy faster than real time[2] (i.e.:
copy one second worth of data in less than one second), you should be able to
do that in an oversampled subpatch(via [block~]).
[1]: real-time friendly in the sense of the very loose definition of an
operation that completes in a finite amount of time and that has an (almost)
constant CPU time for each audio callback.
[2]: real time as in real-world time in seconds given by arraySize/samplingRate
Benjamin Wesch wrote on 23/04/2024 10:38:
hi,
to avoid confusion here: the "clipboard" in this case is actually a file.
it certainly works to write and read arrays to/from disk like that (as
documented in "other-messages" subpatch of the [array define] help) -
but this is not a RAM copy/paste as it might seem. :)
cheers,
ben
Am Di., 23. Apr. 2024 um 10:29 Uhr schrieb Peter P. <[email protected]>:
Thanks for this hint Oliver!
Can't test right now but am curious if audio drops out (eg. playing a
sine test tone while copying some 10secs of table data) and if there is
any (dis)advantages over the get/set method below.
cheersz, P
* [email protected] <[email protected]> [2024-04-23 10:22]:
Also just found out by chance that writing and reading to/from clipboard also
works !
[write clipboard(
|
[array define a1]
[read clipboard(
|
[array define a2]
Can you confirm this ?
Best
Oliver
Am 23. April 2024 10:15:00 MESZ schrieb "Peter P." <[email protected]>:
Replying to myself here, after this solution has been suggested to me
off-list:
[bang(
|
[array get one]
|
[array set two]
seems to work for larger tables without audio dropouts.
Much appreciated help, thanks!
P
* Peter P. <[email protected]> [2024-04-23 08:54]:
Hi list,
I am sure this has been asked many times, but I can't find a solution in
the mailing list archive. How can I copy data between arrays, in my case
arrays of 480000 samples without using externals and without blocking
the DSP computation (causing dropouts)?
I know that I can write to disk and read from it again, but is there a
way that does not require disk access?
Thanks for all ideas!
Peter
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
--
Gesendet von meinem Endgerät
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list