Hi guys Im using [tabosc4~]. Acording to the documentation one should use an array of any power of 2 + 3. The extra 3 elements are for safeguard, one should go at the begining of the array (a copy of the 1st element of the vector) and the other 2 should go at the end (both of them copies of the last element of the vector).
I´m using a 256 block size, so the size of my array should be 256+3= 259. Im having problems figuring out how to copy the N-2 element of the table (that is sample with index 256) to the 257th and 258th index of the table using [tabsend~] and [tabreceive~].
The only way i have come up with (that is obviously not working) is using tabread4~ to read the 256th sample and write it down on the 257th and 258th sample of the array using tabwrite~ (and that is why this whole thing is not working).
I attach a basic patch that im using. Any help would be apprecieated
Thanks in advance
Daniel
you can use tabread and tabwrite (not ~) in order to easilly copy the 3 sample at the end.
you can also use tabosc4c~ from the nusmuk audio externals in order to use an array of 256 sample, so you don't have to copy them.
C
mami music a écrit :
Hi guys Im using [tabosc4~]. Acording to the documentation one should use an array of any power of 2
- The extra 3 elements are for safeguard, one should go at the
begining of the array (a copy of the 1st element of the vector) and the other 2 should go at the end (both of them copies of the last element of the vector).
I´m using a 256 block size, so the size of my array should be 256+3= 259. Im having problems figuring out how to copy the N-2 element of the table (that is sample with index 256) to the 257th and 258th index of the table using [tabsend~] and [tabreceive~].
The only way i have come up with (that is obviously not working) is using tabread4~ to read the 256th sample and write it down on the 257th and 258th sample of the array using tabwrite~ (and that is why this whole thing is not working).
I attach a basic patch that im using. Any help would be apprecieated
Thanks in advance
Daniel
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hey cyrille thanks for your answer. But it didn`t quite work. Im dinamicaly feeding the table with a signal, so the 256th sample of the signal changes at block speed and the writing of the 257th and 258th sample is done at control speed. (please check attached patch) I used an [until 44] to see if i could make up for the differences in the signal time, bit still not working
Ill check the nusmuk external to see how it works, but definitely would be glad to make it in vanilla.
Any suggestions.
Daniel
2010/1/26 cyrille henry ch@chnry.net
you can use tabread and tabwrite (not ~) in order to easilly copy the 3 sample at the end.
you can also use tabosc4c~ from the nusmuk audio externals in order to use an array of 256 sample, so you don't have to copy them.
C
mami music a écrit :
Hi guys Im using [tabosc4~]. Acording to the documentation one should use an array of any power of 2 + 3. The extra 3 elements are for safeguard, one should go at the begining of the array (a copy of the 1st element of the vector) and the other 2 should go at the end (both of them copies of the last element of the vector).
I´m using a 256 block size, so the size of my array should be 256+3= 259. Im having problems figuring out how to copy the N-2 element of the table (that is sample with index 256) to the 257th and 258th index of the table using [tabsend~] and [tabreceive~].
The only way i have come up with (that is obviously not working) is using tabread4~ to read the 256th sample and write it down on the 257th and 258th sample of the array using tabwrite~ (and that is why this whole thing is not working).
I attach a basic patch that im using. Any help would be apprecieated
Thanks in advance
Daniel
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
mami music wrote:
Hey cyrille thanks for your answer. But it didn`t quite work. Im dinamicaly feeding the table with a signal, so the 256th sample of the signal changes at block speed and the writing of the 257th and 258th sample is done at control speed. (please check attached patch) I used an [until 44] to see if i could make up for the differences in the signal time, bit still not working
Ill check the nusmuk external to see how it works, but definitely would be glad to make it in vanilla.
Any suggestions.
[bang~] | [ 256 < | [tabread {table}] | | [t f b] [t f b] \ \ / | \ [257< / [258< \ \ / / \ \ / / \ X / \ / \ / / V [tabwrite {table}]
mami music a écrit :
Hey cyrille thanks for your answer. But it didn`t quite work. Im dinamicaly feeding the table with a signal,
hum, you can sync this with bang~
so the 256th sample of the signal changes at block speed and the writing of the 257th and 258th sample is done at control speed. (please check attached patch)
if you change the table use by tabosc~, you should expect to have some click anyway. moreover, your table did not loop, so don't exepct a clean sound...
I used an [until 44] to see if i could make up for the differences in the signal time, bit still not working
Ill check the nusmuk external to see how it works, but definitely would be glad to make it in vanilla.
i can understand that. but delay~ is not in vanilla.
c
Any suggestions.
Daniel
2010/1/26 cyrille henry <ch@chnry.net mailto:ch@chnry.net>
you can use tabread and tabwrite (not ~) in order to easilly copy the 3 sample at the end. you can also use tabosc4c~ from the nusmuk audio externals in order to use an array of 256 sample, so you don't have to copy them. C mami music a écrit : Hi guys Im using [tabosc4~]. Acording to the documentation one should use an array of any power of 2 + 3. The extra 3 elements are for safeguard, one should go at the begining of the array (a copy of the 1st element of the vector) and the other 2 should go at the end (both of them copies of the last element of the vector). I´m using a 256 block size, so the size of my array should be 256+3= 259. Im having problems figuring out how to copy the N-2 element of the table (that is sample with index 256) to the 257th and 258th index of the table using [tabsend~] and [tabreceive~]. The only way i have come up with (that is obviously not working) is using tabread4~ to read the 256th sample and write it down on the 257th and 258th sample of the array using tabwrite~ (and that is why this whole thing is not working). I attach a basic patch that im using. Any help would be apprecieated Thanks in advance Daniel ------------------------------------------------------------------------ _______________________________________________ Pd-list@iem.at <mailto:Pd-list@iem.at> mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hi all and thanks
2010/1/26 cyrille henry ch@chnry.net
mami music a écrit : https://mail.google.com/mail/?shva=1#inbox/1266c7380e4f9473
Hey cyrille thanks for your answer. But it didn`t quite work. Im dinamicaly feeding the table with a signal,
hum, you can sync this with bang~
yes yes!!! [bang~] was the object i was missing.
so the 256th sample of the signal changes at block speed and the writing
of the 257th and 258th sample is done at control speed. (please check attached patch)
if you change the table use by tabosc~, you should expect to have some click anyway. moreover, your table did not loop, so don't exepct a clean sound...
Thats right. It doesnt loop all the time. Only when the carrier diverges in small amount from an intire multiple of the carrier frequency, but that is FM matters, not [tabosc4~].
I used an [until 44] to see if i could make up for the differences in the
signal time, bit still not working
Ill check the nusmuk external to see how it works, but definitely would be glad to make it in vanilla.
i can understand that. but delay~ is not in vanilla.
wao wao!!! had always used it without checking its origin in the help file.... you ar absolutely right!!!
Another question rises now: When the signal inside the array cant loop at the block~ frequency is there a windowing method any would recomend to try to smooth things out (obviously there would be distortion). Maby having two [tabosc4~] one with phase shift of 180 degrees in relation with the other with some sort of windowing... but i guess that would be equivalent as making the blocksize bigger....
Thanks again!!!
sorry mas modulator and not carrier.
Thats right. It doesnt loop all the time. Only when the *modulator* diverges in small amount from an intire multiple of the carrier frequency, but that is FM matters, not [tabosc4~].
2010/1/26 mami music mami.music@gmail.com
Hi all and thanks
2010/1/26 cyrille henry ch@chnry.net
mami music a écrit : https://mail.google.com/mail/?shva=1#inbox/1266c7380e4f9473
Hey cyrille thanks for your answer. But it didn`t quite work.
Im dinamicaly feeding the table with a signal,
hum, you can sync this with bang~
yes yes!!! [bang~] was the object i was missing.
so the 256th sample of the signal changes at block speed and the writing
of the 257th and 258th sample is done at control speed. (please check attached patch)
if you change the table use by tabosc~, you should expect to have some click anyway. moreover, your table did not loop, so don't exepct a clean sound...
Thats right. It doesnt loop all the time. Only when the carrier diverges in small amount from an intire multiple of the carrier frequency, but that is FM matters, not [tabosc4~].
I used an [until 44] to see if i could make up for the differences in the
signal time, bit still not working
Ill check the nusmuk external to see how it works, but definitely would be glad to make it in vanilla.
i can understand that. but delay~ is not in vanilla.
wao wao!!! had always used it without checking its origin in the help file.... you ar absolutely right!!!
Another question rises now: When the signal inside the array cant loop at the block~ frequency is there a windowing method any would recomend to try to smooth things out (obviously there would be distortion). Maby having two [tabosc4~] one with phase shift of 180 degrees in relation with the other with some sort of windowing... but i guess that would be equivalent as making the blocksize bigger....
Thanks again!!!
Hallo, mami music hat gesagt: // mami music wrote:
When the signal inside the array cant loop at the block~ frequency is there a windowing method any would recomend to try to smooth things out (obviously there would be distortion). Maby having two [tabosc4~] one with phase shift of 180 degrees in relation with the other with some sort of windowing... but i guess that would be equivalent as making the blocksize bigger....
The usual approach here is to split the [tabosc4~] into its phase and table-lookup parts by using [phasor~]--->[tabread4~] instead. Then make a phasor~ signal half out of phase using [+~ 0.5] and [wrap~] to drive a second [tabread4~]. Window both signals with e.g. a raised [cos~] window and you're set.
It's the approach taken in many of the sampler-examples in the 3.audio.doc sections and described in detail in Miller's book, which you can read online. (I consider it required reading.) You don't need to bother with [block~] at all here.
Frank
Thanks frank Have seen that approach all the way through PD examples.
But still, i am trying to find more windowing option besides a raised [cos~] window. Iguess there are specific windows fos specific cases... maby some reading references about it. Thanks a lot
Daniel
2010/1/27 Frank Barknecht fbar@footils.org
Hallo, mami music hat gesagt: // mami music wrote:
When the signal inside the array cant loop at the block~ frequency is
there
a windowing method any would recomend to try to smooth things out
(obviously
there would be distortion). Maby having two [tabosc4~] one with phase shift of 180 degrees in
relation
with the other with some sort of windowing... but i guess that would be equivalent as making the blocksize bigger....
The usual approach here is to split the [tabosc4~] into its phase and table-lookup parts by using [phasor~]--->[tabread4~] instead. Then make a phasor~ signal half out of phase using [+~ 0.5] and [wrap~] to drive a second [tabread4~]. Window both signals with e.g. a raised [cos~] window and you're set.
It's the approach taken in many of the sampler-examples in the 3.audio.doc sections and described in detail in Miller's book, which you can read online. (I consider it required reading.) You don't need to bother with [block~] at all here.
Ciao
Frank
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hallo, mami music hat gesagt: // mami music wrote:
Have seen that approach all the way through PD examples.
But still, i am trying to find more windowing option besides a raised [cos~] window. Iguess there are specific windows fos specific cases... maby some reading references about it.
Raised cos~ actually is a pretty good window for this application (it keeps loudness constant just as in a cosine-based panning algorithm), but you could do your own experiments by using any window function written into a table, then read it with [tabread4~]. I think, Miller's book has some analysis of window types, but I may be mistaken ...
Frank
Hi Daniel
You probably could use the non-tilde [tabwrite] and [tabread] for this task
[257, 258(
|
[t b a]
|
[256(
|
[tabread wave]
|
[tabwrite wave ]
If you want this to happen every cycle, then put a [bang~] at the top and make sure to set the blocksize accordinly with [block~ 256].
(Sorry, I haven't looked at your patch)
Roman
On Tue, 2010-01-26 at 16:04 -0500, mami music wrote:
Hi guys Im using [tabosc4~]. Acording to the documentation one should use an array of any power of 2 + 3. The extra 3 elements are for safeguard, one should go at the begining of the array (a copy of the 1st element of the vector) and the other 2 should go at the end (both of them copies of the last element of the vector).
IŽm using a 256 block size, so the size of my array should be 256+3= 259. Im having problems figuring out how to copy the N-2 element of the table (that is sample with index 256) to the 257th and 258th index of the table using [tabsend~] and [tabreceive~].
The only way i have come up with (that is obviously not working) is using tabread4~ to read the 256th sample and write it down on the 257th and 258th sample of the array using tabwrite~ (and that is why this whole thing is not working).
I attach a basic patch that im using. Any help would be apprecieated
Thanks in advance
Daniel _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list