Welcome to %s forums

BrainModular Users Forum

Login Register

synthesis with sampler

Tell us what you'd like Usine to do
Post Reply
soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 23 Feb 2010, 07:25

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?

User avatar
senso
Site Admin
Posts: 4424
Location: France
Contact:

Unread post by senso » 23 Feb 2010, 08:40

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".

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 23 Feb 2010, 13:58

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...

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 23 Feb 2010, 20:02

hey soundmind, maybe have a look at the new addon i just posted, might interest you...

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 23 Feb 2010, 21:42

hey , 223fx, you're right , soundmind have to buy a pro version...

joking...;-)

or not....

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 23 Feb 2010, 22:46

ooops right sorry honestly didn't thouht to check

, what not usine pro yet!!!;)

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 24 Feb 2010, 02:19

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.

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 24 Feb 2010, 21:47

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.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 24 Feb 2010, 22:43

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 ;)

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 25 Feb 2010, 01:20

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?
23fx23 wrote:just curious: what solution did ya use to get audio to array?
Like this.
Image

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.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 25 Feb 2010, 04:37

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.

Image

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!

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 25 Feb 2010, 08:16

this is very interesting. I didnt know you could build an array with just the raw audio input.
23fx23 wrote:I guess the pb comes from the array out of sampler is a too low rez proxy, mainly used for optimized display.
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.

Post Reply

Who is online

Users browsing this forum: No registered users and 14 guests