SynthMaker

XY x 4 Pad Project

Archive · 2009 57 old posts

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

aliasant ·

Here is something I have been working on for a couple of days. I have done a lot but there are some things I just cant get to work. I need help.

Heeeeelp....... ! !

Short description. Its an XY Pad with 4 different "blobs" Each blob can move at different speeds. It has a built in "inertia" sort of and that can be adjusted via the knobs.

I left a better description inside the .osm and also wrote about the problems I have had. It does work great but there are some things I havnt been able to implement yet such as selecting a blob by clicking on it instead of as now click on the knob for that blob to select it. Im halfway there but maybe I have tried to do it in a much more difficult way then necessary?

Download it and have a look.

infuzion ·

[quote="aliasant"]I haven't been able to implement yet such as selecting a blob by clicking on it instead of as now click on the knob for that blob to select it.[/quote]Mouse Area attached to the dot's View?

aliasant ·

infuzion wrote: aliasant wrote: I haven't been able to implement yet such as selecting a blob by clicking on it instead of as now click on the knob for that blob to select it.[/quote]Mouse Area attached to the dot's View?

I have tried so many ways but there is something I keep missing here. Please Infuzion. Or anyone else. If you know how to please help me fix it?

Andrew J ·

Martin, take a look at the Parametric EQ module in the Effects toolbox. I noticed that instead of the Drag, they use an XY Drag Accumulate. However, what seems more important is that they use a separate mouse area for each control. Each mouse area is fed from the same view, but the area is set according to the current location of the blob. The way yours is set up is that the whole panel is the mouse area, so there's no way you can click on the non-active blobs.

aliasant ·

Andrew J wrote: Martin, take a look at the Parametric EQ module in the Effects toolbox. I noticed that instead of the Drag, they use an XY Drag Accumulate. However, what seems more important is that they use a separate mouse area for each control. Each mouse area is fed from the same view, but the area is set according to the current location of the blob. The way yours is set up is that the whole panel is the mouse area, so there's no way you can click on the non-active blobs.

Not entirely true. I can click on the non active blobs but it seems they need 2 clicks. First one that will not only click on that blob but also move the current active blob to that spot covering the other one.

Your most likely right though =) If someone else wants to do it for me please please do since I still dont understand how to do it right :/

Andrew J ·

aliasant wrote: I can click on the non active blobs but it seems they need 2 clicks. First one that will not only click on that blob but also move the current active blob to that spot covering the other one.

Really? That doesn't work for me.

I'd actually like to help get this to work, because it's something I have a need for myself. I've got something which works in 1D, so I'll see if I can get it to work in 2D. Hopefully I can get some time at it later tonight!

aliasant ·

Andrew J wrote: aliasant wrote: I can click on the non active blobs but it seems they need 2 clicks. First one that will not only click on that blob but also move the current active blob to that spot covering the other one.

Really? That doesn't work for me.

I'd actually like to help get this to work, because it's something I have a need for myself. I've got something which works in 1D, so I'll see if I can get it to work in 2D. Hopefully I can get some time at it later tonight!

Lol. Sorry. Since I couldnt make it work with one click I broke the connections from the Compare module to the wireless so it doesnt work unless you reconnect those 4.

I have started to try to dissect the EQs dots. Its just so hard to try and understand some one elses wireings but I think I might have something. ( elses wireings ............ how do I spell that correctly?? )

stw ·

Just a hint because i'm to busy to do it myself: Take a look at the MultiStage Env. The point select routine should be exactly what you're searching for. The points are grabbed by a x-y comparison and that works like your description of what you tried to do IIRC. If you did that already forget my comment 😈

edit: I didn't check if it's eventually the same as in the GraphEQ

aliasant ·

stw wrote: Just a hint because i'm to busy to do it myself: Take a look at the MultiStage Env. The point select routine should be exactly what you're searching for. The points are grabbed by a x-y comparison and that works like your description of what you tried to do IIRC. If you did that already forget my comment 😈

edit: I didn't check if it's eventually the same as in the GraphEQ

I think those work similar. Anyways. im having problems using them points. Selcting them by clicking on them works but nothing else. To understand what this XY pad is trying to do you have to download it and test it. It works a bit different then the normal one. However I made a new version with the new points and that one shows the problems compared to my first attempt. Sorry for my shitty english grammar here. Short on time.......

Nu Audio Science ·

aliasant wrote: Sorry for my shitty english grammar here. Short on time.......

Your kidding right ? You wanna see me try and type in swedish hahahahaha All you non native english types do an absolutely amazing job in the forum of which us english native types should have a vast and i do mean vast ammount of respect for 😉

NAS

Andrew J ·

Try this out...

It doesn't dull out any blobs because they're all active anyway. Also, the playback of the recording can be a bit jerky.

hen play it back into the input.

MichaelBenjamin ·

about the second version - maybe it could be the mouse drag module, you use a different one than at the first, perhaps it has another behaviour on mouse click release

aliasant ·

Andrew J wrote: Try this out...

It doesn't dull out any blobs because they're all active anyway. Also, the playback of the recording can be a bit jerky.

hen play it back into the input.

Nice simple idea. Seems to work. I think im gonna change it so that a Right click automatically enters record mode + stops the playback for that point and Right Up ends it and starts playback. Or something similar. It needs to be idiot proof and simple 🙂 I also need to find a way to use my float smooth thing as in my first example.

Thanx Andrew. You fixed one or two pieces of the puzzle 🙂

To Michael. Yeah. Could be. Im gonna try working on Andrews model instead. It seems to be the best one. Much simpler and smarter then mine. Just have to make it feel and behave like my first one.

philter5 ·

Andrew J wrote: Try this out...

It doesn't dull out any blobs because they're all active anyway. Also, the playback of the recording can be a bit jerky.

hen play it back into the input.

hey andrew this is really great! like the "record pad motion" function of my kaoss pad 2!

aliasant ·

OK. I modified Andrews version a bit to make it more intuitive. I think I managed to do it. What do you guys think?

Neptune ·

This is kinda cool. Comes out like the supermodulation in HGFs AlioNoctis.

aliasant ·

It is cool. I know =)

Here is my latest version. Its getting there. Much nicer now but still some small things that needs fixing.

Have a look and test it properly.

aliasant ·

OK. Version 6.

Getting better and better.

The Random works better now and only for dots that has P enabled ( are in Play mode) If you want a dot or all of them to be affected by random, put them in Play mode and reset them some were. The random is dependent on how many "steps" the dot had and if a dot is resetted it only has one step so a random will give that step a new value. This also means that if a dot had a path built up by say 5 steps a click on the random will randomize those 5 steps and not add any more. This way you can control the random for each dot.

Also implemented Rate and Smooth controls for each dot. Both use a input value ranged 0-1

I still want to create the trail when recording moves and I still need to restrict / shrink the are for the dots a bit.

Andrew J ·

EDIT - this was based on v5, will look at v6 in a tick...

Nice! A couple of comments:

- It's hard to tell which P icon to press when they're greyed out, you might need a colour cue to make it easier - Do you really need to convert to sample rate for smoothing? Seeing as you're immediately going back to float, you can probably just do some sort of moving average. With a tick time of 25ms, the 40ms de-zip equates to (n+(n-1)*0.6)/1.6. Try out the module below... - I didn't know that trick for array size (using an Int component to convert it), that's cool! - I also hadn't checked the virtual key codes out, so I didn't know about 02 for RMouseDown (I was wondering how you got that to work)

-Andrew

aliasant ·

[quote="Andrew J"]EDIT - this was based on v5, will look at v6 in a tick...

Nice! A couple of comments:

- It's hard to tell which P icon to press when they're greyed out, you might need a colour cue to make it easier - Do you really need to convert to sample rate for smoothing? Seeing as you're immediately going back to float, you can probably just do some sort of moving average. With a tick time of 25ms, the 40ms de-zip equates to (n+(n-1)*0.6)/1.6. Try out the module below... - I didn't know that trick for array size (using an Int component to convert it), that's cool! - I also hadn't checked the virtual key codes out, so I didn't know about 02 for RMouseDown (I was wondering how you got that to work)

-Andrew

🙂 Nice to be able to teach someone like at least one thing hehehehe

About the smooth thing. I think using a float smooth gives a different result. At least the one I tested before. I think the as soon as the input stops changing the smoothed output stops before it reached the same value as the input stopped at. What might be possible though is to use a simple lopass filter hopped?

About the P's. Yeah I know. I am not sure if they are any good. Maybe there is another way to do it. Ideal would be for all the knobs and buttons to stay in their position when resizing the entire window. Im not so good at that stuff so if someone else wants to fix that it would be great.

Was also thinking about having a R button. That would be Randomize individually for each dot.

BTW. I was just testing this in my vocoder and it is quite the bomb. So easy to use. However there are still stuff to do and bugs to fix but not that many I think.

aliasant ·

There is a serious bug that needs a fix.

If you turn down the Smooth to its minimum and start dragging you can see that the dot aint going from a to b but it is constantly fighting between 2 different values. This is why the more smoothing the less of this is seen or heard but it really needs a fix. I guess it is the "Last Changed" float that is getting new values into both inputs.

Andrew J ·

aliasant wrote: There is a serious bug that needs a fix.

If you turn down the Smooth to its minimum and start dragging you can see that the dot aint going from a to b but it is constantly fighting between 2 different values. This is why the more smoothing the less of this is seen or heard but it really needs a fix. I guess it is the "Last Changed" float that is getting new values into both inputs.

Your minimum smooth time has to be greater than the time between ticks, so set it to >=40msec

aliasant ·

Andrew J wrote: aliasant wrote: There is a serious bug that needs a fix.

If you turn down the Smooth to its minimum and start dragging you can see that the dot aint going from a to b but it is constantly fighting between 2 different values. This is why the more smoothing the less of this is seen or heard but it really needs a fix. I guess it is the "Last Changed" float that is getting new values into both inputs.

You're minimum smooth time has to be greater than the time between ticks, so set it to >=40msec

OK. In my test version I changed the minimum from 20 to 40. Seems to work 🙂

Now. How do I make the area that the dots use a bit smaller so I get a frame around them for the buttons and stuff?

Andrew J ·

No - take a look at this version and see how I've added an inset which is used to reduce the span parameters and also as an offset which gets applied to the x/y coordinates in the transform module. Problem with this is that your dots are offcenter so it doesn't look quite right. I've put a white square behind each dot to show you the area you should stay within (you will need to tune your shifts and possibly the size parameter).

I've also put the float smoother in here, but hardwired to 2 samples (equivalent to 50msec with the dezippers). This means the smooth controls are redundant, so I removed them.

Lastly, I realised the redraws were very inefficient. So I've taken all the co-ordinate outputs and grouped them up, put them through one limiter and then sent that back to each of the dot RedrawAreas. This seems much smoother to me now.

aliasant ·

Superb. That works much better. And yes. ok. Ill give up the smoothers. This seems to work quite well. And now I can fit in a R (random) button for each dot. I also love this one because its so easy to put in more then the 4 dots. Just copy and paste. Very sweet. O btw. I was thinking about a Lock button for each dot. Everything is already in there. Just need to place the button and hook it up. What do you think? Overkill?

Now I need some rest from this. 🙂 A movie and some food.

Andrew J ·

aliasant wrote: O btw. I was thinking about a Lock button for each dot. Everything is already in there. Just need to place the button and hook it up. What do you think? Overkill?

I don't know, I don't need the record/playback for my stuff yet - I just wanted a surround panner. Still, this is working really nicely now, so I might have to dream up some other uses for it 🙂

EDIT: Only just had a play with the rate control, that resampling idea is pretty nifty!

aliasant ·

Andrew J wrote: EDIT: Only just had a play with the rate control, that resampling idea is pretty nifty!

Lol. Was that you saying: Hey Martin.... Sometimes you actually produce some good shit!

🙂

I just tried to add a 5th dot and then realized the a square only has 4 corners. Never realized that before................

LOL So to place each dot in a corner isnt very practical with more then 4 dots..

Maybe the controls could be on the side or above/under the XY instead?

Andrew J ·

aliasant wrote: Andrew J wrote: EDIT: Only just had a play with the rate control, that resampling idea is pretty nifty!

Lol. Was that you saying: Hey Martin.... Sometimes you actually produce some good shit!

🙂

What? I can't believe I haven't told you that before - sometimes you produce some good shit Martin!

aliasant wrote: I just tried to add a 5th dot and then realized the a square only has 4 corners. Never realized that before................

Oh dear, I take back every nice thing I ever said about you 😉

Enjoy your movie, I'm going back to bed :yawn:

MyCo ·

Isn't it better to implement the movement directly in streams? And then use Mono2Float or Poly2Graph to display the dots? For me it doesn't make sense to use this, when your automations are not accurate.

aliasant ·

MyCo wrote: Isn't it better to implement the movement directly in streams? And then use Mono2Float or Poly2Graph to display the dots? For me it doesn't make sense to use this, when your automations are not accurate.

I dunno? Show us?

aliasant ·

I have a new version.

I replaced the float smoothers with a lowpass filter instead. Its a LP filter in green. Not sure how safe it is to use but it hasnt caused any problems yet and it allows for more smoothing. First I tried using your Andrew. I placed 4 of the float smoothers in a row but it used more cpu. The lowpass filters seems much faster but please test your self.

I did some other minor changes + added some info for some of the main preferences/settings

When I run all 4 dots with automation my Taskmanager say I use about 0% of my cpu. This is if I go inside the module so there isnt any redrawings made. Pretty fantastic. If I have the Pad upfront the taskmanager reports about 9% usage and that is very good. Most my other plugins and builds generally use about 30% when the main gui is visible.

Same if I use my browser and resizes the screen size of it. Seems 30% for screen redraws is standard for me. More or less.

MyCo ·

well... here on my netbook, it uses a complete core, so CPU usage is 50%

aliasant ·

MyCo wrote: well... here on my netbook, it uses a complete core, so CPU usage is 50%

Ouch. Is this with the GUI visible, all 4 dots moving and the XY Pad module not highlighted?

I took some pictures of my Taskmanager in 3 different situations.

First Pic is; all 4 dots moving and the XY Pad module not highlighted

Second Pic is:all 4 dots moving and the XY Pad module highlighted

Last Pic is; all 4 dots moving but inside the XY Pad module

MyCo ·

yes, all dots moving on front panel... on my desktop PC (Q6600) it uses ~15%, which is quite high. Just to compare on my desktop the default setup of my LoopDrive4 plugin uses ~10% when playing (with all animations).

There is one thing you can see with this module: unselected CPU: ~15% but if it is selected (white border around it) it uses here ~25% !!! So here a new tip: If you've got a large project, don't select anything 😈

MyCo ·

Damn, this schematic is pure chaos 😈 since you have animations, here is a tip to half the CPU usage: in the attached image remove the redraw limiter (and all connections) in the red ellipse and connect the ticker to the redraw wireless transmitter...

I can't help you anymore on this, because I don't understand a single bit of this. For me it would be faster to build it by myself instead of fixing any problems in this schematic.

Andrew J ·

MyCo wrote: Damn, this schematic is pure chaos 😈 since you have animations, here is a tip to half the CPU usage: in the attached image remove the redraw limiter (and all connections) in the red ellipse and connect the ticker to the redraw wireless transmitter...

I can't help you anymore on this, because I don't understand a single bit of this. For me it would be faster to build it by myself instead of fixing any problems in this schematic.

It was tidy until Martin got his hands on it 🙂

He'll probably tidy it up when he's happy with how it works, and I don't mind helping out with that either (just another opportunity to be usefully obsessive-compulsive 😀).

The idea was to use the floats as triggers so that it doesn't bother redrawing if nothing is playing. Note also that when playing, the floats are actually dependent on the tick trigger anyway. The strategy here all depends on how important the animation is. My needs were just for the dragging, in which case this approach is most efficient. For permanent playback, your (MyCo's) suggestion is better.

As for doing the movement in stream data, again that depends on whether or not you are prepared to pay for the cpu cycles. I used float mainly because the record/play functionality was an add-on for Martin that I did on the spur of the moment. Stream data would be overkill for my needs.

aliasant ·

Well. First. When the module is highlighted it uses much more cpu. But thats irrelevant since that will never happen in a plugin. I took that shot just to show those that didnt know this what happens if you select your module compared to an unselected one.

In real life use it will never use more cpu then it does in SM with the Pad module unselected. And that is ONLY when the plugin is visible/ the plugin editor is open. As soon as you close down the plugin cpu will go down to almost nothing.

If I look at the taskmanager while disconnecting the the dot redraw wireless to stop all redraws I see no difference at all. Steady at 2% If I instead connect a ticker25 to it I see a small increase maybe up to 3% But. If Im looking at the GUI I see the big change that Myco talked about. It dropped from about 11% down to about 5% So thats a good gain. Very good gain.

About the chaos in the schematics. To me it all looks quite tidy. But that might just be in my head. Maybe its actually very chaotic 😉 Are you guys using curved lines in SM? I dont. Straight lines only. Might be that or?

And Andrew. If you want to tidy it up please be your best obsessive-compulsive. 🙂

About doing it with stream. I dont care about sample accuracy for this. You cant move the mouse with sample accuracy anyways. But if you make something else that works Myco. Dont be shy 😉 We all have a lot to learn from you.

What I do want is to make that "trail" so that you can see the path you are making when recording a new one for a dot. The dot should leave a trail after itself so it is easy to get back to were you started. That goes away when the recording is done.

bootsy ·

cool shit 🙂

aliasant ·

OK. Made a bunch of fixes + added the path line.

One problem with it though. It only works if the Offset ( I renamed it to "Shrink area by Grids" and placed it in the properties) is 0 When offset is used the pathline is also offset. Andrew..... You the man to fix this. You did the offset thing and understand how it works so you the guy that knows whats wrong 🙂

I also cleaned it up a bit + managed to cut even more cpu. Every dot had its own redrawer and that is quite unnecessary so I removed them all and placed a single one after the dots. Now its cpu us is down as low as I think it can get. But feel free to prove me wrong 🙂

Another thing that was wrong was that the new Green lowpass filters that I added needs a 25 tick which ment that even if a dot was not in play mode it still had a tick going thru it and that made it so that when recording a new move it would record ad 25/sec even if the mouse wasnt moving. This might be a nice thing if you are making rythmical moves or for some other reason like to record pauses. I changed it however to only record when mouse is actually moving. Maybe there needs to be an option here. A switch that lets you choose the way you want to record that dot.

]

Update: I did some more cleaning by putting all the (not dot dependent) keyboard commands and mouse commands in a single module with wireless going out. Works fine. I think it might even save more cpu.

MichaelBenjamin ·

looks like flies, very nice cpu ~7-9% here

infuzion ·

They look like fireflies dancing!

Andrew J ·

Wow this is looking much cleaner now! And what happened to the CPU meter? It's hardly reading anything - well done sir!

aliasant wrote: One problem with it though. It only works if the Offset ( I renamed it to "Shrink area by Grids" and placed it in the properties) is 0 When offset is used the pathline is also offset. Andrew..... You the man to fix this. You did the offset thing and understand how it works so you the guy that knows whats wrong 🙂

OK, fixed that quite easily. See the Reduce Area module inside Dotted Path Line.

aliasant wrote: Another thing that was wrong was that the new Green lowpass filters that I added needs a 25 tick which ment that even if a dot was not in play mode it still had a tick going thru it and that made it so that when recording a new move it would record ad 25/sec even if the mouse wasnt moving. This might be a nice thing if you are making rythmical moves or for some other reason like to record pauses. I changed it however to only record when mouse is actually moving. Maybe there needs to be an option here. A switch that lets you choose the way you want to record that dot.

I like the way the rate/smoothing works and I think it would be a good idea to also allow recording in the mode that includes the pauses. That could be very useful for some applications. Not sure what to call the modes so they make sense - perhaps call one "free draw" and the other "timed draw"?

-Andrew

PS - Sorry about the couple days of silence, had a very busy weekend.

aliasant ·

🙂

Ill have a look maybe later this week.

I must say it turned out better then I had hoped for. Much better.

Thanx for the fixes Andrew. And to everyone else. Have fun with the "fireflies" 🙂

TheAudiophileDutchman ·

Great stuff 😍

Runs as smooth as a baby's bottom 😀

aliasant ·

There is one little thing that wasnt as brilliant as I first thought.... I used the 02 keyboard as the Right Mouse down. Wasnt to smart since that command is active all the time. Meain that whenever you click you right mouse the function will execute. In this case if I, in my host right click on a track or what ever the path of the selected dot will show. Should probably change that to right click down primitive instead.

Andrew J ·

I couldn't get the right click to work with the dragXY - that's why I used the shift key instead.

hansdump ·

This is amazing work gentlemen!

H.

philter5 ·

yes, indeed great project and great work here! 😍

noise_maker ·

Really nice! The Left+Right path record feature is very handy! thanks for sharing it Martin all the others who help! amazing work!

noise_maker ·

I have a superrrr idea! but I have no idea how to implement it.

here it goes:

1. add a BPM button (to sync off/on)

2. while drawing a path (right + left+ drag), for every beat press Ctrl to add a beat mark# (1, 2, 3, 4...)

noise_maker ·

another suggestion: saveable paths

trogluddite ·

noise_maker wrote: 1. add a BPM button (to sync off/on)

Unfortunately, I'm a bit busy to contribute much at the moment; but my current project is using a form of 'motion recording' on its knobs. If I get the chance I'll see if I can modify the relevent parts to post up here...

In the mean time, if you search for 'Soopa Loopa' there's a Beta of the schematic there - the relevent part is within the knobs, called 'Parameter Looper' - you'll also need to delve into the tempo module to get hold of the clock generator that generates the timing signals - 'Beattime' is the length of one beat (in samples) and 'Masterclock' is a ramp waveform cycling every two beats (two beats is just a side effect of the clock being used elsewhere). The main bit is hopped and interpolated, but the timing clock is sample accurate, so the BPM timing is much much better than in green, and the CPU is pretty low (could even use quad mono - two x,y blobs per code then) - sorry the code is a little convoluted, but that's so that it can follow tempo changes. (the main bit is in assembly, but there's a purgable module with the original code version) I'll see if I can do some mods so that record and play are seperated - that way it could use a mem primitive, enabling paths to be saved as wav files.

aliasant ·

That would exellent!

trogluddite ·

Here's my first draft of a modified motion recorder module - it may need a fair bit more tweaking to suit your purpose, but I haven't time just now 🙁 to try and wire it into your x/y pad. The length of the loop is rounded to the nearest beat from the length of time that record is active (that may well be the part that doesn't work so well for your schematic). The Master Clock is a wireless module so that it can be shared by several recorders easily. Let me know how you get on, and I'll try to refine it more (unless somebody else fancies trying to make sense of my code 😈 ) - it could be a useful little module eventually for a lot of different things.

aliasant ·

I too am very short of time so I hope someone else can dig into it? At least get it started perhaps?

noise_maker ·

Invector (SM synth - osm version) has a BPM based pad with 5 steps (4steps and the 5th close the beat).

it isn't as cool as drawing a path and click CTRL to add steps, but maybe it could be useful to understand few thigns (at least from my side)

noise_maker ·

when I link the balls to my midi controllers, the balls move only half way X/Y....

can you look into it please?

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.