SynthMaker

Creating MIDI FX

Archive · 2009 17 old posts

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

Dias.Francisco ·

Is it possible in SynthMaker to create a MIDI FX like arpeggiator... let's say I don't want sound to come out of the VST, I just want the IN-NOTE to be processed and generate MIDI signals (arpeggios) that are sent out to another VSTi... is it possible? Thank you in advance! 🙂

MichaelBenjamin ·

its possible, but not usable, due to timing issues with the event system. you would get midi data out, but it is all very unreliable. if you want to process midi data with any kind of timing involved, check out synthedit.

Sasu Honka ·

You must have audio outs in your MIDI-FX VST even if you have no audio processing. Some hosts will not recognize MIDI-FX if there are no audio outs.

+ what Michael said. MIDI is handled in GREEN which is not sample accurate in SM.

HalfLife ·

MichaelBenjamin wrote: its possible, but not usable, due to timing issues with the event system. you would get midi data out, but it is all very unreliable. if you want to process midi data with any kind of timing involved, check out synthedit.

Michael,

Does this apply to simply sending MIDI as well? (As opposed to processing MIDI.) I've been working for several months now on a monome controlled MIDI sequencer in SM. Quite similar to Tenoi-on, my application send a series of notes as the seq runs through 16 steps. Pressing various buttons on the monome causes the seq to restart, transpose, arp etc - all in real time.

I've got a rough draft of the UI and I'm getting to the MIDI part now. Should I look for another tool?

Regards,

Scott

MichaelBenjamin ·

i dont know, if you need to specify time, and you do it in green, it wont be sample accurate, and also depending on cpu load way off under some circumstances. the best thing i can imagine would be a code block which sets the timing and then a mono2float with 100tick to the note event, and nothing else in green but even then the tick will vary in time.

HalfLife ·

Thanks Michael (even if it's bad news). Guess it's back to the drawing board. Perhaps I'll take the plunge into Max

Regards,

Scott

oddson ·

Hey Scott...

Above you used the term 'real time' MIDI. But you also talk about sequences -- which are decidedly not real time.

SynthMaker can present MIDI events to it's host as real time (well not exactly but no program actually works in instantaneous 'real time').

The problem is when delaying events -- where SM (currently) relies on Windows timers which are not reliable for precise timing of musical events.

If you want to trigger a host to play and control the sequences that's easily done -- assuming the host let's you define an event that it can recieive as MIDI that it interprets as 'play this sequence RIGHT NOW'. (Something like this is easily done in a program like eXT.)

But if you want to tell the host:

D1 in for 1 second 25 frames F1 in 2 seconds 10 frames for 1 second 25 frames A1 in 4 seconds 5 frames for 1 second 25 frames

... then you're shit-outta-luck because there's no accurate way to initiate the delay for the latter two notes.

OutSim demo'd SynthMakerX (for experimental) back in Spring 2006 and it did have sample precise event timing but since then no one here has heard anything about if and when the complete overall of the events system will be achieved in the full program.

So... you can wait with the rest of us or move on to another program if sequencing is a deal breaker for your project.

(P.S. - did you know that Max is no longer supporting Plugo? Perhaps it's not where you want to go either.)

Jay ·

Hi

I havn`t been around much lately as i'm busy learning all things visual studio atm! also the programmers at work are trying to teach me a bit of Delphi 😕

I have a question or two. Why is Synthmaker still relying on Windows Multimedia timer services when there are so many addon replacement Timers and Libraries for every single Dev Package out there! Most of these address the problems of accuracy and resolution found in the Microsoft ones so whats the problem? Is there some reason that these cant be used? Maybe some uniqueness in Synthmakers coding? is it a case of having to change so much of Synthmaker code? If so then Outsim need some extra staff 😉

Anyway i was just wondering since i now know some of the possibilites out there!

Best regards

Nu Audio Science ·

I think it's more of a case of Malc needs to make money to live 😉 He will get to updates like these when he gets time Updating an app like SM on your own can't be an easy task

NAS

Jay ·

wow just malc doing the coding! i thought it was maybe workload related but certainly never thought that there was only one coder at Outsim! that's really a feat indeed!

but then surly if this was fixed as more of a priority then a lot more ppl would adopt Synthmaker and therefore would be more money going into Outsim! alas i know an awful lot of ppl that steer clear of Synthmaker for development purely because of timing issues!

ive tried synthedit and fair enough it has a lot more features and better timing and midi but it is stinking ugly and hard to make nice gui elements! imho horrible to use after using synthmaker

Synthmaker FTW and i hope malc gets the help he needs soon!

regards

Nu Audio Science ·

Most people stay away from SM for developing for other issues than the timing 😉 Same goes for SE Neither of these will ever be useable for fulltime development unless they put out source code which you could tweak and compile yourself I doubt that is ever going to happen so take your pick

If your serious about developing then native code is the way to go

NAS

overhishead ·

this looks like it was made in SynthMaker, and it is a midi effect as described by o.p.

http://www.lesliesanford.com/SanfordArpeggiator.shtml

Jay ·

i thought so too but, Leslie Sanford stuff is usually written in c# He/She has a fair few articles and code snippets on the codeproject.com web site

Incidentally, Leslie has an artile that describes the win32 multimedia timer as being pretty great 🙂

and i quote "The Win32 multimedia timer services provide the greatest degree of timing accuracy. They allow you to schedule timing events at a higher resolution than other timer services. This can be useful in a multimedia application where timing accuracy is of utmost importance. For example, a MIDI application needs timing events that are as finely grained as possible."

i take it synthmaker uses another windows timer 😉

Best Regards

overhishead ·

well, Leslie seems to have modelled a SM gui very accurately, unless SM uses graphics from some other common source.

mwvdlee ·

Isn't the Timer module ([old link]) based on the multimedia timer? I understand that at the very least it's accurate with a resolution of about 16ms which may be sufficient depending on the intended purpose. I can drum slightly above 10 beats per second, the fastest drummers in the world can hit about 20 beats per second (hey, I've only been practicing for half a year now :P). Both would be well within the limits of the Timer module. I'm sure there are reasons to go faster, but for many purposes 16ms resolution may be sufficient. What other timing mechanisms are available in Windows?

MichaelBenjamin ·

i think the timer is so unusable because of its random instability, a human does not got this random instability, more of a constant error drift with magical readjustments. if you put a quantized midifile trough eg tobybears humanizer and adjust the random timing, it starts to sound not pretty very soon, ~over 5 ms. but its interesting that your source mentions that timer to be excellent. i have no idea why its not that excellent in sm.

mwvdlee ·

MichaelBenjamin wrote: i think the timer is so unusable because of its random instability, a human does not got this random instability, more of a constant error drift with magical readjustments. if you put a quantized midifile trough eg tobybears humanizer and adjust the random timing, it starts to sound not pretty very soon, ~over 5 ms. but its interesting that your source mentions that timer to be excellent. i have no idea why its not that excellent in sm.

Has anybody ever tried using it without a big, fat, resource-hog of a GUI?

As I understand it, S|M does all it's green stuff (including the Timer) in a GUI thread. It may be the timing inconsistencies stem from this reason and would be very hard to fix without introducing a new, high-priority thread and all the plumbing that goes with it. Then again, if the Trigger Thread module can trigger normal threads, it could also trigger high-priority threads. I understand the Threads module is quite unstable at the moment though.

Perhaps what could fix this would be to have a poly-to-MIDI module? Then again, if poly is handled in batches depending, it's timing might be even worse. Lord knows we could use better MIDI-Poly interaction.

p.s. It wasn't my source, somebody else posted that 🙂

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.