SynthMaker

scribble / draw your own envelope

Archive · 2005 14 old posts

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

angstrom ·

DOWNLOAD THE OSM [edit] now links to the most up to date version 0.5 .. see below [/edit]

here's something you might like, I've been tinkering with it and it isn't really finished but it works well enough for what it is. you can draw your own wave shape or envelope, the properties page lets you define the amount of segments. It's all straight lines right now, but I will probably convert it to PALines soon. Just don't expect smooth audio transitions between graphline points or anything !

The main reason I'm posting it here is - I was after some guidance. Why does the line jump around like that when you first click on it? (I noticed it in my bars test too) If anyone has any hints or tips on improving this so it is a little more robust / works better I would be glad to hear them. Especially relating to : smoothing the (value) transition between points (lopass style), but not if the curve is steeper than a certain angle.

Also notice - if you turn up the env segmentation to about 127 and draw an envelope you start to really see a problem ... graphic peakiness as the mouse position sets 'where its at' but there is nothing to cater for 'missed' indices. Ah, you'll see what I mean. 🙂

BTW I have my reasons why the envelope position is controlled by a float. thing 1 - sustain thing 2 - scratch your envelopes!

infuzion ·

angstrom wrote: Why does the line jump around like that when you first click on it? (I noticed it in my bars test too) If anyone has any hints or tips on improving this so it is a little more robust / works better I would be glad to hear them.

Me also on both counts: seems like the mouse event thingies don't like alot of View Redraws. If you connect outs to the index/value, connect Floats to those, then make your graph window big, you can see how few times/mouse movement will cause the values to change. Shrink the height of the graph, & the values will update more frequently. So I devised a veiw area thingy that will update +/-1 division around the mouse.

I also removed the LMDn (rhetorical), added the abilty to swich internal auto-redraws off & on & switch beteween all area & the narrow-band area only, & made the code much prettier: [URL=http://rapidshare.de/files/7467169/mouse_env0.3_ang_infuzion.osm.html]

http://rapidshare.de/files/7467169/mous ... n.osm.html[/URL]

skOre ·

Nice stuff!

rl ·

oh yeah, old problem, I already spent hours (not to say days) on trying to fix problems with a schematic derived from the LFO of the old example synth.

Maybe it is a trigger timing problem, so that the Graph module does not take over the right value at the right time. Maybe a ring-buffer-type structure could help.

BTW: a workaround for the single click problem is to connect Index and Value of MouseToValue to the trigger of Graph.

NB infuzion: did you see what kind of advertisment is around your download-page at rapidshare? 🙁

lalo ·

nice stuff guys 🙂

fritzman ·

Boah,

cool stuff! Is this the path to multi-stage envelopes? Looks like ... 😀

Best wishes, FRitz

angstrom ·

nice edit!

I would have tidied it up myself of course - it just got a little late 🙂

I've had a simple idea about how to calculate the interpolation or 'smoothed' values between the points. Obviously right now If you use a division of say '5' and turn the dial the output from the GtoF is pretty chunky as it only reads the point values.

I'll have to do some of my work before I can get on it though. damn.

oddson ·

Very cool Angstrom...

I tried to start something like this but it quickly got the better of me.

For the mountain peak problem I think you have to make it forget what was on the graph before the drag.

But you'd need to keep track of the the segments yourself instead of through the Graph Create component and that would be dramatically more complex.

Perhaps that's too obvious to mention... 😕 If so, never let it be said that I lack a firm grasp of the obvious. 😉

angstrom ·

yeah, I'm going to use an array to store the values, then I can get at the current, previous and next values and then do a bit of trig to provide contiguous interpolated values at any playback point. either that or I'll do it a different really rough and ready way, depends if the trig part of my brain is functioning well enough today 🙂

Anyway, this should help me with a future solution for plotting/setting 'skipped' points, but I'll probably do that much later.

infuzion ·

Thanks for all the complements 😇 rl wrote: NB infuzion: did you see what kind of advertisment is around your download-page at rapidshare? 🙁

No; I use Adblock & selective vision so I miss 90% of all ads.

angstrom ·

Yay, I got the interpolation working!

by that I mean, it calculates smooth values between the points stored in the array. This is most evident on envelopes with a small amount of points (like say 5 or 6 ) you can see that even with these few points you now get a nice smooth output. Download the new OSM

* BUG ****************** when you load it you need to draw an envelope before it will work. For some reason the array is 0,0,0,0,0,... when it loads. do I need a preset thing for arrays? **************************

I've left the schematic all expanded so you can see whats going on, rather than remove all the float boxes that I used to internally test what is going on.

again, suggestions / improvements & bugfixes welcome. Although I obviously have further plans for functional additions ! 😉

rl ·

great stuff, some suggestions:

for an envelope the start point should be fixed at (0,0), the last point should be fixed at the x-axis.

the mouses area should be centered around the points (currrently the mouse areas are at the right side of the points)

angstrom ·

rl wrote: great stuff, some suggestions:

for an envelope the start point should be fixed at (0,0), the last point should be fixed at the x-axis.

the mouses area should be centered around the points (currrently the mouse areas are at the right side of the points)

thanks, regarding fixing the start at (0,0) , I've wondered about this previously. I think it's actually OK for and env to start at any y value. For example a very percussive envelope with this system would suffer by beginning at 0,0 ,before traversing to 1,1 . It would be less than percussive.

regarding the end : currently (by fluke) the values will interpolate down to 0 even if the graph doesn't. In general I will probably put a switch in for 'one shot/loop' in loop mode the start and end of the array will be the same values (for wave drawing), in trigger mode the end will go to 0.

regarding the mouse position, very true! Strangely I hadn't conciously noticed that, other than it was a bit hard to control! 🙂

dutchound ·

angstrom wrote:

BTW I have my reasons why the envelope position is controlled by a float. thing 1 - sustain thing 2 - scratch your envelopes!

i just had a play on this, it seems excellent, i like the lines and the straight layout of it. it's for a scratch control input so it's green? Is it possible to use it in a polyphonic synth to re trigger and sweep the filter and etc? would i have to mod this to use a stream to control the envelope position? how is that possible? else would i have to make a a green ramp signal to control it and re trigger that from the midi input? i am abit lost.

thanks!

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.