SynthMaker

stereo compressor

Archive · 2005 74 old posts

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

platinumears ·

the file

The difficult bits in this one were done by Shifrin (x^n code for dB conversion) and Unkargerth (envelope follower and meter). Thanks guys 😉

<edit> the 'auto' button is automatic make-up gain in case you were wondering..

Dan 🙂

malc ·

Excellent Dan!

Shifrin ·

That's great Dan! A note about the x^n calculation, it can be made a lot faster be moving the 2^g out of the loop and reducing the loop length to whatever accuracy you need for e^h. You can create an array of 2^g for whatever range of g you wish in the stage(0){...} section, this is only run once for mono code components! Only problem is that the stage(0){...} stuff is buggy and SM crashes on me randomly when I attempt to use it - but when it's fixed I'll update the code 😉

Shif.

lalo ·

cool stuff man!

rl ·

Shifrin wrote: Only problem is that the stage(0){...} stuff is buggy and SM crashes on me randomly when I attempt to use it Shif.

what works for me is when I want to edit within a stage (0) block I comment out the block, do my edits and remove the comments when I'm ready. (Then it's time to save the work).

Since the code editor is soooo slooooooow, I'm usually using an external editor using cut'n paste.

Tom7777 ·

Nice one platinumears, thanks 🙂

Shifrin ·

@rl : That's some good advice, cheers, I'll try that 🙂

@platinumears : If you're feeling brave you could try the x^n code here :-

monoin x; monoin n; monoout out;

float loge2 = 0.69314718055994530941723212145818; float log2e = 1.44269504088896340735992468100190; float log10e = 0.43429448190325182765112891891661; float log10x,tmp,f,g,h,p,q,idx,twopow[64],sgn;

stage(0) { idx = 0; tmp = 1.0; loop(63) { twopow[idx] = tmp; tmp = tmp*2.0; idx = idx + 1; } } stage(1) { sgn = (n < 0.0)&-1.0 + (n >= 0.0)&1.0; log10x = log10(x); tmp = sgn*n; f = tmp*(log10x)/log10e; tmp = log2e*f - 0.5; g = rndint(tmp); h = f - g*loge2; idx = 1; p = 1.0; q = 1.0; loop(8) { p = p * (h/idx); q = q + p; idx = idx + 1; } out = twopow[g]*q; out = (sgn < 0.0)&(1.0/out) + (sgn > 0.0)&out; }

This now works for all (within reason 😉) 'n' i.e. negative 'n' and for all x >= 1.0, it's a lot faster than the previous code I posted. When I get the time I'll look at the case for 0.0 < x < 1.0 assuming there isn't a pow(x,n) function by then 🙂

Shif.

Nu Audio Science ·

Ears is on a roll lately 🙂 Want this GUId ?

platinumears ·

Shifrin wrote: @platinumears : If you're feeling brave you could try the x^n code here

Thanks! Ill let you know how I get on..

NAS: feel free to skin it, but what I really plan to do is to integrate a threshold slider with a side-chain level meter, and a make-up gain slider with a gain reduction meter, like I did in IQ4.. I've been putting off getting to grips with the gui side of things so far, but if you feel like helping out with that I would be very grateful!

Dan 🙂

platinumears ·

Shifrin: new x^n code seems to work perfectly, over a larger range than before (in the first version I had to add 18 before the dB conversion and multiply the output by 0.125, otherwise ~6dB was the maximum possible gain reduction!).

It seems to run faster too, though Im only going by my memory of what Tracktion's cpu meters told me the other day.. thanks anyway!

Same link

Dan 🙂

Shifrin ·

I've written what should be a faster and more complete pow(x,n) function using the Assembler component, it works for all n (within reason...) and all x >= 0.0 - will upload it later tonight gotta go out now 😉

I'm interested in looking at the compressor - it's something I've always wondered about - I know the idea behind them, but never had spent any time looking at one!

Cheers,

Shif.

platinumears ·

Great! 😀

(I noticed the thread: couldn't understand any of the code, but got the feeling it was going to help me out here! 😉 )

The compressor is a very basic design really: its character/quality is determined entirely by the envelope follower.. I was pleasantly suprised bu Unkargerth's one actually, though I had to divide the time constants by 10 to get it to sound like all my other compressors.. (?)

I would be interested in any other envelope following / peak detecting / RMS sensing code anyone can come up with, as each should have a different flavour..

Dan 🙂

Shifrin ·

The new assembler versions of pow(x,n) are in this thread 🙂

Mono and Poly pow(x,n) modules...

Shif.

platinumears ·

Wow!

Dramatically lower cpu use now.. great stuff Shif! 😀

same link

Dan 🙂

Shifrin ·

Glad to hear it's a lot faster 😀

Shif.

Shifrin ·

Just wanted to say that in the 'code component' code I posted for x^n in this thread (and one other) there is a line :-

tmp = log2e*f + 0.5;

That should read :-

tmp = log2e*f - 0.5;

Although why anyone would use it when the assembler version is way faster (and doesn't have this bug!) is another story 😉

Shif.

infuzion ·

Shifrin wrote: Just wanted to say that in the 'code component' code I posted for x^n in this thread (and one other) there is a line :- tmp = log2e*f + 0.5; That should read :- tmp = log2e*f - 0.5; Although why anyone would use it when the assembler version is way faster (and doesn't have this bug!) is another story 😉

Might be a good idea to edit the old text, to help not confuse ppl who are easily confused like me 😉

platinumears ·

Dynamix (compiled vst)

Any thoughts?

Dan 🙂

lalo ·

beautiful 😀

Shifrin ·

Oooooh very nice looking, will check it out 😀

@Infuzion :- Edited the two posts with code in them 😉

Shif.

malc ·

Thanks Dan - nice job!

sambean ·

Looks good, I'll try to get a chance to try it out on some tracks soon..

What may be nice with all this GUI goodness is to have a display of the response, a la waves, if possible

nice one

Nu Audio Science ·

Cool 😀

Nu knobs coming up for this baby 😉

Some clicks and pops when changing settings in EXT by the way 😉

platinumears ·

Nu Audio Science wrote: Some clicks and pops when changing settings in EXT by the way 😉

Which settings? If its just the switches then I'm aware of it.. though not sure how best to fix it yet!

Shifrin ·

platinumears wrote: If its just the switches then I'm aware of it.. though not sure how best to fix it yet!

I believe Jorge is working on the 'clicking/popping/glitching' when using switches (selectors/multiplexers)!!!

Shif.

lalo ·

Shifrin wrote: I believe Jorge is working on the 'clicking/popping/glitching' when using switches (selectors/multiplexers)!!!

Shif.

i think so 🙂

that's why his recent silence 😉

the man is workin' furiously ....

or is on holyday 🙂 ..wich he needs furiously too due the amount of work done on SM in the last year 😀

Nu Audio Science ·

Yep sorry i didn't realise they where workin on it 🙁

cbit ·

ooh compression is my favourite kind of processing, looks very interesting

Tom7777 ·

Thanks 🙂

platinumears ·

I updated it. A couple of minor cosmetic changes (I made a mistake with my redraw modules in the last version) but the main difference is an envelope follower of my own design.. not tested it that much, but I think it has some use as a creative drum shaper if nothing else!

See what you think..

same link

Dan 🙂

platinumears ·

Another update: the "peak" button switches peak sensing algo, which gives it a different character, especially on drums.

Same link.

cbit ·

Cool!

[gui rant] this is more of a general GUI comment rather than one directed at the compressor gui design. The circular 'light' buttons don't look at all like buttons to me. More like indicator lights.

I guess they might be modelled after radio buttons in web forms (being circular and being used to make a selection in a mutually exclusive group of options).. but the web form radio buttons have a black dot in the middle when selected, almost as though you'd 'marked' the desired circle with a pencil in a traditional paper form. The radio buttons in web forms are also more abstract, which gves them more leeway in terms of what kind of traditional interface metaphor they can be seen as representing.

The problem with these (SM) buttons is that their design (with shadows and hilights and all) makes them look like a 'real world' object (a little lamp), but in the real world, a little lamp like that doesnt also function as a button. [/gui rant]

Really interested to see how this develops PE.

skOre ·

I would as well like to press the issue of gui design within SM. Now that we have all the tools to make dynamic, thrilling and inspiring guis that richen the plugin, we should not fall back into building bitmap-based SE-guis.

I would help 😀

cbit ·

without meaning to hijack the thread:

Bitmap based gui elements offer certain possibilities that are out of reach of runtime vector generated graphics (especially for the pseudo 3d/photographic looks).

platinumears ·

Well, I have no talent for graphic design whatsoever. 🙁 Even the slider and pointer graphics in this thing were done for me (by Eric Langou for a SE project.. which is why I havent shared the schematic btw).

I do my best to provide useful visual feedback about the processing going on, but when it comes to pretty knobs and buttons I am worse than useless!

I'm just not a very visual person I think.. I've been living in this flat for nearly a year, and still havent bothered to hang anything on the walls apart from a duvet behind my monitors..

Dan 🙂

Shifrin ·

platinumears wrote: I've been living in this flat for nearly a year, and still havent bothered to hang anything on the walls apart from a duvet behind my monitors..

You know what's important then 😀

Going to go have a play with this compressor now!

Cheers,

Shif.

platinumears ·

Nu Audio Science wrote: Nu knobs coming up for this baby 😉

Well??? Show us yer knob NAS! 😀 It seems I need better buttons too.. 😮

😉

Nu Audio Science ·

Will do Ears 😉

I just gotta finish my Lightwave GUI for Silo for another community (Spinquad) If i can't get em done tonite tommorrow at latest 😉 I was gonna do the whole shebang background knobs switches all matchin ?

Sounds nice on beats by the way 🙂

platinumears ·

Nu Audio Science wrote: Sounds nice on beats by the way 🙂

its certainly got some attitude!

I started looking at making an RMS detector, but got stuck at the first letter.. anyone know how to do square roots at all? (Shif? 😉)

Dan 🙂

Shifrin ·

There's an SSE assembler command to do this in SM now :-

polyin in; polyout out;

movaps xmm0,in; sqrtps xmm1,xmm0; movaps out,xmm1;

That'll do square-roots on poly data, for a mono version simply change the polyin/polyout to monoin/monoout 😉

Shif.

platinumears ·

Excellent! Thanks again Shif!

😀

platinumears ·

That made a difference! 😮

same link 😀

Shifrin ·

Glad it worked! Going to grab the latest version now 😉

Cheers,

Shif.

sambean ·

Just tried it out for sound.. Quality sounds good, I don't really know the subtilties of compressors that well, tend to just use them to beef up dance tracks.. but the quality seems to hold even with some extreme settings..

Are you considering multiple inputs for sidechaining? Thats what I dig most in a compressor..

platinumears ·

sambean wrote: Are you considering multiple inputs for sidechaining? Thats what I dig most in a compressor..

Of course! It would be rude not to.. 😉

cbit ·

lol right on!

platinumears ·

two band version:

Bi-Dynamix

Dan 🙂

Nu Audio Science ·

I'm runnin a little behind here but i'm on it today 😉

platinumears ·

Side-chain version:

Dynamix-SC

I also corrected a small mistake in the other versions (gain slider readout was double what it should have been 😮 )

Want me to send you the schematics NAS, or will you just make me the bits?

Dan 🙂

infuzion ·

nice work there PE! Shifrin wrote: There's an SSE assembler command to do this in SM now :-

polyin in; polyout out;

movaps xmm0,in; sqrtps xmm1,xmm0; movaps out,xmm1;

That'll do square-roots on poly data...

Of course, every good idea needs a GUI:

http://rapidshare.de/files/3332795/Mono ... n.osm.html But getting there was harder than planned, since Unicode is currently unsupported:

Nu Audio Science ·

I should be able to get going with just the pics, I haven't started yet (DOH) but i have set a few hours aside tonite to sort it out 😉 Sorry for the wait 🙁

Nu Audio Science ·

I went back through the thread and it seems people will whine if i use BMPs so i had to go and learn some of the draw modules again which took all nite 🙁

I'm not entirely sure i like this but i thought i would let you have a look, The green will turn to orange and then through to red but i havent worked out how to do that yet 🙂

I'm back on it now though so i will do some different designs if you dont like this one 😉

cbit ·

I say use the best tool for the job..

and i reckon if you're aiming at a 'hardware metaphor' representation of reality, then you can get a closer result using bitmaps..

If you're after a decidedly flat (ableton live-ish) interface, use vectors.

so whats 'the job'?

Shifrin ·

Nu Audio Science wrote: I went back through the thread and it seems people will whine if i use BMPs so i had to go and learn some of the draw modules again which took all nite 🙁

While it's cool to use the built-in modules to do gfx, I think it's daft to insist on using them (or complain when they're not used) as opposed to bitmaps - it's a lot easier for me to design a knob in Blender and render/stitch it together and then use a very simple schematic to draw it.

(I for one won't whine if you use bmp's 😉 )

That said, nice knob NAS 🙂

Shif.

platinumears ·

Looks good to me!

Frankly I'm not bothered how you go about it: you can skin it with vectors, bitmaps, real fur.. whatever makes you happy!

😀

Nu Audio Science ·

cbit wrote: If you're after a decidedly flat (ableton live-ish) interface, use vectors.

I dont actually agree with that, You cant see really because its a jpeg but i used fades on that above to define gradients for depth, I have done others that are even more 3D looking in SM.

Ears i will do a load of new knobs for you to look at Wink

cbit ·

Nu Audio Science wrote: I dont actually agree with that, You cant really because its a jpeg but i used fades on that above to define gradients for depth, I have done others that are even more 4D looking in SM.

sorry, i don't follow..

Nu Audio Science ·

Yeah sorry about that keyboard meltdown, I have edited the post 😉

cbit ·

now i understand.

but i'm still yet to be convinced by a 'realistic' looking vector interface graphic. (i don't think the above knob looks realistic).

I'm sure it must be possible to create this kind of thing purely with vectors, But i have a feeling that its probably more efficient to do realistic looking stuff using bitmaps.

Tom7777 ·

It is a lot easier to make realistic GUI with bitmaps i think, you could always use a combination of both though and use bitmaps for lighting effects.

Nu Audio Science ·

I dunno, I think these look pretty good ? I should have used the arc method i gut from Unk but i will when i redo em.

infuzion ·

Nu Audio Science wrote: I dunno, I think these look pretty good ?

They do 🙂

cbit ·

sorry i don't mean to be an ass, but they still look very vector-y to me.

I think they would be more convincing if you pay more attention to the imagined lightsource origin and base the positions of shadows and hilights on that.

eg. at the moment the top left portion of the outer 'grip' ring should be lit more brightly than the rest of the ring, and the raised indicator strip should cast its shadow to its bottom left, it probably shouldn't have a black outline all the way round either, etc.

I think if youre trying to convincingly create the look of a knob of this complexity, youre best hope is exporting from a 3d rendering app (as bitmaps).

Nu Audio Science ·

Fair enough

platinumears ·

well, they look great to me.

:shrug:

🙂

stefan ·

I too think they look awesome, but they don't exactly look like photographed ones.

Which is a plus when it comes to GUIs in my world.

But, give it some time and we'll be able to realtime render 3d guis within SM 🙂

Nu Audio Science ·

[edited in error]

FragileX ·

Nu Audio Science wrote:

I went back through the thread and it seems people will whine if i use BMPs so i had to go and learn some of the draw modules again which took all nite 🙁

I'm not entirely sure i like this but i thought i would let you have a look, The green will turn to orange and then through to red but i havent worked out how to do that yet 🙂

I'm back on it now though so i will do some different designs if you dont like this one 😉

Hello NAS, I already have a litte colorfading knob, so if you can use it, here is the link: FragileX_ColorFader.osm

platinumears ·

A facelift (using .png's suplied by Eric Langou.. sorry vectorphiles!)

I think I also have a click-free "On" switch.. 😀

same link

Dan W 🙂

platinumears ·

Right.. I should have checked the name really: Dynamix has been used. http://www.kvraudio.com/forum/viewtopic ... sc&start=0

😠

Anyone got any other suggestions?

They're working well in Tracktion btw.. I used a few instances in a NIN remix the other day, if anyone is interested: http://www.myspace.com/iirs

cbit ·

Name suggestions: this might sound a little strange but bear with me.. how about bucking the trend for giving audio gadgets a pun/misspelled name? [ducks]

If i was naming something of mine, i'd approach it in this way:

1. A word/phrase that indicates where the device comes from, ie something that points to you, that you'd be happy to use for all your forthcoming creations (eg. 'PE', 'Ears', your surname, some other made up handle)

2. A word pointing to what it does (compressor), or a synonym of that (squasher, pusher, squeezer etc).. or a completely made up word that sounds a bit compressor-y.

3. version number of course.

---

My aversion against puns and misspellings > I suppose i don't find those word jokes funny enough to be 'set in stone' as the name of something or other (if you smile at it the first time you read it, that's as funny as it gets). It always strikes me as being a bit amateurish ('Tracktion' included).

ALchniyAL ·

The Links don't work. Would love to try it.

zippoflash ·

can anyone reup this?

mano11 ·

all links are dead.

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.