SynthMaker

Some sort of trigger issue

Archive · 2009 8 old posts

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

oddson ·

This is a strange one that I've not been able to isolate the problem is a simple schematic.

Here's the evidence of a bug:

The trigger is getting through to the AND primitive but it's not changing state when the lower boolean does. Replacing it with an integer multiply (or even a float mult) also does not work.

I was trying to answer someone asking about a MIDI delay. I warned about the event issue but decided to give it a go and build one anyway. What should have been an hour or so has been a lot more.

I'll post a simplified version of the bug if I can isolate it further but so far it's very specific to this file.

Here's the OSM.

TomC ·

Dunno if this is the problem in your schematic here, but I've had similar problems.

Have a look into your "x(t) >= x(t-1)" module:

- the float input goes into the float AND and trigger input of the (unnamed) module below

- in this module, the trigger goes to BOTH "Float Sample and Hold" (FSAH) primitives

My guess is that because both FSAH get the trigger at the same time, the one at the bottom does not yet see the changed value from the upper FSAH primitive when the trigger shots.

My workaround (from memory) was to delay the trigger to the bottom FSAH by a couple of ms with a timer.

Tom

oddson ·

Thanks... in writing up something to tell you why you couldn't be right I've discovered that the problem is coming from that setup. I still think there a bug and possible more than one - or perhaps two bugs that only show when connected together in just the right way.

Here's how that thing was supposed to work:

When the float is altered it is fed to S&H1 where it sits waiting for the trigger.

Since outside the module the trigger input is connected to the same float value a trigger is fired to S&H2 which updates with the output from S&H1 which is still the old value - transferring this value to it's output for the comparison. Then the second trigger goes to S&H1 to update it's output to the new value while S&H2 still has the old and now the comparison is what I want. The problem that I didn't think of is that in between it's comparing the old value to itself and therefore will always have a true output for an instant before it's getting to the actual comparison. So an integer S&H is needed so that he comparison output is only released on the second trigger getting to S&H1.

So I tried this and now I'm getting False values to show at the exterior comparison (the one shown in the screenshot from my first post) but it seems to be delayed until the next trigger is received - at which time both inputs show as True... 😕

oddson ·

There's also the issue of why I needed to have trigger from the float fed separately though another module instead of just connecting directly from the float but when I do the behaviour is different.

TomC ·

oddson wrote: Thanks... in writing up something to tell you why you couldn't be right

So the behaviour I described (which, of course, was right 🙂 )was intended by you. Okay, I didn't knew that.

Tom

exonerate ·

oddson wrote: There's also the issue of why I needed to have trigger from the float fed separately though another module instead of just connecting directly from the float but when I do the behaviour is different.

Here's a fix......

Haven't bothered looking into the exact reasons why that fixes it. My guess though is the trigger from the "current timecode" input is causing the boolean and to happen before the "x(t) >= x(t-1)" module has done it's thing.

Cheers 😉

Exo

oddson ·

Thanks... doesn't work for what I want yet as the trigger switch the boolean is feeding still doesn't work.

infuzion ·

I notice this weird mis-firing of values in some of my green schematics also, especially when they get larger with alot of connections. I use a workaround by sending a final trigger to my output. You can also experiment by changing the link order.

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.