SynthMaker

Code thread

Archive · 2005 18 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

Nu Audio Science ·

Wants and needs and such 🙂 Stefs away so were losing a big chunk of info but he'll be back

I'm just startin out so the only thing i can think of (If it can be done tell me to shut it) is the ability to load files into the code component (.wavs and such)

Hengy ·

this is a bit blue sky, but matrices and optimised matrix operators (ok i'll go back to matlab now 😉 )

unkargherth ·

Nu Audio Science wrote: Wants and needs and such 🙂 Stefs away so were losing a big chunk of info but he'll be back

Well, my two cents on what i FEEL be useful in code module

.- Math functions ( exp, log, pow basically) .- A random function outside the stage(0) .- Global array vars and.... user defined functions .- Truncate to smallest int ( or rndint options) . Think jorge is fighting this .- ASM{} directive: a way to code ASM directly in code module. something like

asm { ....non-loop,no-calls sse asm here.... }

...MOre or less in priorityt order IMHO

jorge ·

Hengy wrote: this is a bit blue sky, but matrices and optimised matrix operators

very fast SSE matrix operations will be possible when you have arrays exposed through array connectors. You can then use arrays to represent matrices with the first two values meaning number of columns and number of rows with the actual values following.

Shifrin ·

unkargherth wrote: .- Math functions ( exp, log, pow basically) .- A random function outside the stage(0)

They'd do me great for now 🙂

Shif.

Nu Audio Science ·

Yep i knew Unk would know what was needed 🙂 C'mon Shif you must have some wish's (You Unk and Stef are the code Gurus round here so we need ideas from you three really 🙂 - Although everyone has to admit that Unk and Stef do tidy up a lot of other peoples code Ahem Mine mainly 😉 )

Shifrin ·

Nu Audio Science wrote: C'mon Shif you must have some wish's

Well, not too many actually and the other things I'd like are bugfixes 😉

* Nested Loops, i.e. to have a loop within a loop - which is not currently possible.

* The stage(0) construct to work in exported VSTs, at the moment any VST I export with a code component and a stage(0) crashes (should have posted this in the bugs section but I already mentioned I had crashes with stage(0) so that probably covers it).

* User defined functions and global arrays would be cool too like Unk said, and the ability to pass arrays from one code component to another 🙂

Shif.

Tom7777 ·

NAS why not just use normal inputs and represent the wavs with floats? im guessing your going to be wanting to do something complex with this maybe though so thats why. Rompler or something?

rl ·

- more math functions - user definable functions / subroutines to be used everywhere in the schematic - !!!! FLOAT CODE MODULEs that do only run on input change (not at sample rate) !!!!!!!!!! - a way to access graph data. Example: There is this great FFT Module. It would be nice to mangle some FFT'd data for spectral processing. (Also needs an inverse FFT) - oversampling

Shifrin ·

rl wrote: - !!!! FLOAT CODE MODULEs that do only run on input change (not at sample rate) !!!!!!!!!!

Yup, that'd be a time/space (schematic wise) saver for sure 🙂

rl wrote: - a way to access graph data. Example: There is this great FFT Module. It would be nice to mangle some FFT'd data for spectral processing. (Also needs an inverse FFT)

Hadn't thought of that, would be utterly awesome to be able to manipulate FFT'd data.

rl wrote: - oversamping

You can do it for your own oscillators, but not sure about up/down-sampling in the sense of an effect. Might be possible already. Although to have this functionality built in would be neat!

Shif.

Hengy ·

I was thinking about user definable functions myself, perhaps implemented by the ability to call code modules from within other code modules or perhaps more like macro statements that just help reduce typing.

The more I thought about them the more i started to get a conceptual problem. The problem i get is as you start expanding the code modules with calls etc you end up in the situation i keep finding myself, which is thinking about how to code the whole synth in a code module and forgetting the rest of synthmaker. You could be in danger of losing the visual coding aspect of synthmaker.

I wonder if some of these ideas are better implemented outside of the code modules, leaving the code modules as very tight dsp modules?

for example wrt to some of the (really interesting) ideas already mentioned for oversampling there could be sub-modules that could be set to run at different sample rates from the main synth, with auto upsampling/downsampling at the interfaces. code modules within these would run at the appropriate rate (this would let me go further with my current messing around with wavelet anaylsis) and for graph data there could be a graph to poly module.

thoughts anyone? does this make any sense?

platinumears ·

Hengy wrote: for oversampling there could be sub-modules that could be set to run at different sample rates from the main synth, with auto upsampling/downsampling at the interfaces. code modules within these would run at the appropriate rate (this would let me go further with my current messing around with wavelet anaylsis)

I would love to see this! It might be better if it were implemented at a module level though: that way you wouldn't need to represent upsampled audio signals differently, they would simply be up / down sampled automagically on their way in or out of the module. This would allow an entire plug to be oversampled if needed, or just critical modules within it.

Also, is there currently any way to process doubles? Consider it a request if not!

Dan 🙂

unkargherth ·

Hengy wrote: I wonder if some of these ideas are better implemented outside of the code modules, leaving the code modules as very tight dsp modules?

Well, The idea of functions isn'y to code whole synth in code module (it would be a nightmare). What i'm suggesting is to have a a way to define a small func ( maybe a macro) with current code tools. Something simpler, like:

func tanh() { polyin x; polyout o; float x2,x3,x4,x5,x6,x7; ...calculate here..... o=result; }

The most important idea here is to have LOCAL vars. There's no need a REAL function call, coudl be a kind of CUT and PASTE MACRO, provide vars are local This way would be easy to define a more or less standard "user-defined function set", instead of requesting malc and jorge once and again each function individually

platinumears wrote: I would love to see this! It might be better if it were implemented at a module level though: that way you wouldn't need to represent upsampled audio signals differently, they would simply be up / down sampled automagically on their way in or out of the module. This would allow an entire plug to be oversampled if needed, or just critical modules within it.

I remember a topic on this. Suspect that malc and jorge are trying to find a way to do it, but, IMHO it isn't simple, althought5 it will be very nice to have it

platinumears wrote: Also, is there currently any way to process doubles? Consider it a request if not!

Also previously discussed, But , AFAIK, there's no SSE equivalent for doubles, so they would be, at least 4 times slower than floats

Shifrin ·

unkargherth wrote: AFAIK, there's no SSE equivalent for doubles, so they would be, at least 4 times slower than floats

That's my understanding of it too.

Shif.

jorge ·

unkargherth wrote: Also previously discussed, But , AFAIK, there's no SSE equivalent for doubles, so they would be, at least 4 times slower than floats

Actually there is, but each SSE instruction operates on 2 doubles rather than 4 floats. So it would be 2 times slower rather than 4.

It's not too hard to implement a version working with doubles but I'm not sure when it will become top priority.

Hengy ·

platinumears wrote: I would love to see this! It might be better if it were implemented at a module level though: that way you wouldn't need to represent upsampled audio signals differently, they would simply be up / down sampled automagically on their way in or out of the module. This would allow an entire plug to be oversampled if needed, or just critical modules within it.

i agree with you 100%, that's exacty what i meant, my use of the term submodules was misleading, my meaning was a module container that has a sampling rate setting, with exactly as you say auto up/down sampling at the interfaces

Hengy ·

unkargherth wrote: Well, The idea of functions isn'y to code whole synth in code module (it would be a nightmare). What i'm suggesting is to have a a way to define a small func ( maybe a macro) with current code tools.

i certainly support the idea of macro like functions, anything that saves typing gets my vote 🙂

platinumears ·

jorge wrote: Actually there is, but each SSE instruction operates on 2 doubles rather than 4 floats. So it would be 2 times slower rather than 4.

It's not too hard to implement a version working with doubles but I'm not sure when it will become top priority.

Great! No hurry! 😉 I managed to get a 64-bit version of the RBJ filters coded as an SE module for me for a project I'm working on, and I've come to the conclusion that it sounds rather better than the 32-bit version, especially with extreme settings.. its good to know I will someday be able to do this in SM without needing to bribe module developers! 😀

Dan 🙂

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.