synthesis with sampler
I have been able to "synthesize" sound in usine using a very short loop of a sample in loop mode of the sampler. If arrays could be used as waveforms then the osc could be drawable and there would be no need for a seperate "synthesis" or "osc" module. A solution would be to be able to connect the array out of an array into the array in of the sampler and maybe an "array mode" or something in the sampler so it knows to get the waveform from the array. any thoughts on this?
Yes It's a good suggestion.
Now I have to find how to do that, not so easy!
But in the synthesis pack of Nay seven there is a "wavetable draw module".
Now I have to find how to do that, not so easy!
But in the synthesis pack of Nay seven there is a "wavetable draw module".
Olivier Sens
www.brainmodular.com
www.brainmodular.com
Id like same in and out arrays of sampler, out to get the full rez wavform might be more easy to get?
i ll try o post soon my oscilloscope patch, wich basically sample any audio/array to array, it's then possible to re-read the array as audio and rec it to sampler to theorically loop and pich as a wavform. Pb is from what ive tested sampler is also linked to bloc precision limit, rec willstop on a certain bloc, whereas a note could stop in interbloc... but maybe if we rec a bit more then adjust the sampler on 0 crossing can work, have to test that.
i don't remember if sampler plays/loop sample on a bloc grid or if it's free...
ie if we have a non round nb of blocs sample lengh, can the sampler still loop the sample correctly?
if so seems doable to get an array based wavform cycling..
have to test that again...
i ll try o post soon my oscilloscope patch, wich basically sample any audio/array to array, it's then possible to re-read the array as audio and rec it to sampler to theorically loop and pich as a wavform. Pb is from what ive tested sampler is also linked to bloc precision limit, rec willstop on a certain bloc, whereas a note could stop in interbloc... but maybe if we rec a bit more then adjust the sampler on 0 crossing can work, have to test that.
i don't remember if sampler plays/loop sample on a bloc grid or if it's free...
ie if we have a non round nb of blocs sample lengh, can the sampler still loop the sample correctly?
if so seems doable to get an array based wavform cycling..
have to test that again...
hey soundmind, maybe have a look at the new addon i just posted, might interest you...
hey , 223fx, you're right , soundmind have to buy a pro version...
joking...
or not....
joking...
or not....
ooops right sorry honestly didn't thouht to check
, what not usine pro yet!!!;)
, what not usine pro yet!!!;)
23fx23,
your efforts sound promising.
Yes I know I need the pro version. I am currently waiting for the funds to accumulate which will be very soon. I appreciate the free version very much!
I like the synthesis pack as well and many thanks to nay-seven for providing that but I know we all dream of an optimized solution natively within usine. And there is no way to use arrays as waveforms.
For the array sampler idea, the array element values could just be expanded or compressed to fit into the audio 0-1 scale? Maybe with a user definable curve. Looking forward to these developments. thanks for the replies.
your efforts sound promising.
Yes I know I need the pro version. I am currently waiting for the funds to accumulate which will be very soon. I appreciate the free version very much!
I like the synthesis pack as well and many thanks to nay-seven for providing that but I know we all dream of an optimized solution natively within usine. And there is no way to use arrays as waveforms.
For the array sampler idea, the array element values could just be expanded or compressed to fit into the audio 0-1 scale? Maybe with a user definable curve. Looking forward to these developments. thanks for the replies.
23fx23,
i noticed your new addon. Nice work. I cannot DL it yet so I will have to wait. But, Ive actually managed to create something similar which converts a wave sample into an array which can then be scaled/routed to modulate different parameters. Some interesting results can be achieved. How do you get the array into the sampler? I am able to scale the array to whatever values using the mapper curve but when i connect the array out into the array in of the sampler, nothing happens. Anyway the future of synthesis in usine looks very promising. Keep up the good work.
i noticed your new addon. Nice work. I cannot DL it yet so I will have to wait. But, Ive actually managed to create something similar which converts a wave sample into an array which can then be scaled/routed to modulate different parameters. Some interesting results can be achieved. How do you get the array into the sampler? I am able to scale the array to whatever values using the mapper curve but when i connect the array out into the array in of the sampler, nothing happens. Anyway the future of synthesis in usine looks very promising. Keep up the good work.
hi soundmind.
audio in usine is an array of the bloc size set in global setup. (by default 128). there is a module in "interface control" called bloc size that ouput the correct value.
let's say you have a bloc size of 128 and you want a base array of 512 to go to sampler. the goal is at each bloc feed the sampler with an array of size 128 , so in bloc 1 the 0-127 part of the 512 array, on bloc 2 the 128-255, ect...
in other words 'scrub a sub window array of bloc size' at each bloc inside the bg array.
to achieved this the solution i use is connecting an "extract sub array" module out of the 512 array (or more now in v5)with a lengh of 128 (bloc size), start position on bloc 1 is 0, on bloc 2 is 128, ect., so this need a bloc clock, something tht count bloc.
bsork helped me doing a script called bloc counter. i multiply the bloc nb out by bloc size to get the start position of the extract subarray., if then you connect the array out of sub array, tada you get audio you can feedd an rec to sampler.
here is the script i use, copy paste in the empty new script:
/////////////////////////////////////////////////
VAR reset, counter : tParameter;
VAR count : Integer;
PROCEDURE Init;
BEGIN
reset := CreateParam('reset', ptButton);
SetIsOutput(reset, FALSE);
counter := CreateParam('counter', ptDataField);
SetIsInput(counter, FALSE);
END;
//PROCEDURE Callback(count : Integer);
//BEGIN
//END;
PROCEDURE Process;
BEGIN
IF (GetValue(reset) = 1) THEN BEGIN
SetValue(reset, 0);
count := 0;
END
ELSE BEGIN
SetValue(counter, count);
count := count + 1;
END;
END;
////////////////////////////
just curious: what solution did ya use to get audio to array? some queue data in array, dispatching and concat all arrays, or concat each new aray with previous (what i use actually) or maybe something else?
yes it can make some interesting results piched low and adapted for other automations, i love to get a spring effect out of kick drum piched down sinus., experience fractal things (each element audio piched low automat something)..strange results...
there are certainly lot of cools things to experiment with usine, but we have to remind usine is not a modular synth like ie reactor, it's better made to perform at a macro level (bloc scale and not sample scale)...
to make usine access sample accurate operations we would need to have a bloc size of 1 sample, with a nasa 1024 core computer, it's not is primary aim, for true optimized synthesis i guess it's better to use nay's pack or reactor, tassman ect..
still we can make lot's of cool things...
ive gone further with my draw oscillator and made a classic subtractive synth, with vca, vcf enveloppes and well even if higher in cpu that most of synth, it sounds really not bad and allow nice possibilities unavaible, at least not customizable on other synths..
and the thing im a bit stupidly proud of, it's a 100 percent usine synth
audio in usine is an array of the bloc size set in global setup. (by default 128). there is a module in "interface control" called bloc size that ouput the correct value.
let's say you have a bloc size of 128 and you want a base array of 512 to go to sampler. the goal is at each bloc feed the sampler with an array of size 128 , so in bloc 1 the 0-127 part of the 512 array, on bloc 2 the 128-255, ect...
in other words 'scrub a sub window array of bloc size' at each bloc inside the bg array.
to achieved this the solution i use is connecting an "extract sub array" module out of the 512 array (or more now in v5)with a lengh of 128 (bloc size), start position on bloc 1 is 0, on bloc 2 is 128, ect., so this need a bloc clock, something tht count bloc.
bsork helped me doing a script called bloc counter. i multiply the bloc nb out by bloc size to get the start position of the extract subarray., if then you connect the array out of sub array, tada you get audio you can feedd an rec to sampler.
here is the script i use, copy paste in the empty new script:
/////////////////////////////////////////////////
VAR reset, counter : tParameter;
VAR count : Integer;
PROCEDURE Init;
BEGIN
reset := CreateParam('reset', ptButton);
SetIsOutput(reset, FALSE);
counter := CreateParam('counter', ptDataField);
SetIsInput(counter, FALSE);
END;
//PROCEDURE Callback(count : Integer);
//BEGIN
//END;
PROCEDURE Process;
BEGIN
IF (GetValue(reset) = 1) THEN BEGIN
SetValue(reset, 0);
count := 0;
END
ELSE BEGIN
SetValue(counter, count);
count := count + 1;
END;
END;
////////////////////////////
just curious: what solution did ya use to get audio to array? some queue data in array, dispatching and concat all arrays, or concat each new aray with previous (what i use actually) or maybe something else?
yes it can make some interesting results piched low and adapted for other automations, i love to get a spring effect out of kick drum piched down sinus., experience fractal things (each element audio piched low automat something)..strange results...
there are certainly lot of cools things to experiment with usine, but we have to remind usine is not a modular synth like ie reactor, it's better made to perform at a macro level (bloc scale and not sample scale)...
to make usine access sample accurate operations we would need to have a bloc size of 1 sample, with a nasa 1024 core computer, it's not is primary aim, for true optimized synthesis i guess it's better to use nay's pack or reactor, tassman ect..
still we can make lot's of cool things...
ive gone further with my draw oscillator and made a classic subtractive synth, with vca, vcf enveloppes and well even if higher in cpu that most of synth, it sounds really not bad and allow nice possibilities unavaible, at least not customizable on other synths..
and the thing im a bit stupidly proud of, it's a 100 percent usine synth
really great work on this 23fx23. And thanks for explaining the block limitation in usine. Also on the synthesis pack, how to you input exact frequencies into the osc? it seems that it only accepts a 0-1 scale?

the mapper is used to expand or compress the element values to fit into the steps min max values using a linear curve as suggested by martin.
the expand compress array module is used to "tame" the size of the array.
the "round" module is used in case your target array is beyond the -1,1 scale and uses integer precision.
The results can vary depending on the "factor" of the array compression/expansion module but is surprisingly usable especially for doing parameter modulations. Messing with the factor can give cleaner or dirtier results in other words. The wave used here is a 55hz sine wave. Im sure you or some other gurus will tell me how to get a cleaner result. Thanks for your feedback and thanks for that script, i will take a look.
Like this.23fx23 wrote:just curious: what solution did ya use to get audio to array?

the mapper is used to expand or compress the element values to fit into the steps min max values using a linear curve as suggested by martin.
the expand compress array module is used to "tame" the size of the array.
the "round" module is used in case your target array is beyond the -1,1 scale and uses integer precision.
The results can vary depending on the "factor" of the array compression/expansion module but is surprisingly usable especially for doing parameter modulations. Messing with the factor can give cleaner or dirtier results in other words. The wave used here is a 55hz sine wave. Im sure you or some other gurus will tell me how to get a cleaner result. Thanks for your feedback and thanks for that script, i will take a look.
well that solution is very easy to setup and low cpu, nice job. it must be enough for using low freq to parameter.
I guess the pb comes from the array out of sampler is a too low rez proxy, mainly used for optimized display.
i got a solution not cpu friendly at all, but it can be cool just to get the full rez wavform, then reduce it same way with an expand compress, and put in another array. basically it queues each bloc of audio one after the other.

but warning!!!. you should make the patch be on only the time of sampling, and it has to be short ie 5s max otherwise cpu will jumps exponentially till freeze, cause array size is getting quicly huge..at 44100 hz!
I guess the pb comes from the array out of sampler is a too low rez proxy, mainly used for optimized display.
i got a solution not cpu friendly at all, but it can be cool just to get the full rez wavform, then reduce it same way with an expand compress, and put in another array. basically it queues each bloc of audio one after the other.
but warning!!!. you should make the patch be on only the time of sampling, and it has to be short ie 5s max otherwise cpu will jumps exponentially till freeze, cause array size is getting quicly huge..at 44100 hz!
this is very interesting. I didnt know you could build an array with just the raw audio input.
I understand, The reso is definitely a factor here. From what I understand, an optimized solution would have to be hard coded into the sampler or usine itself. But regardless, many interesting experiments can be done with manipulating arrays. Looking forward to many more.23fx23 wrote:I guess the pb comes from the array out of sampler is a too low rez proxy, mainly used for optimized display.
Who is online
Users browsing this forum: No registered users and 25 guests
