From the original SynthMaker forum (2004–2014), with its members’ names and dates.
gluon ·
hi there,
we're developping Ableton Live's devices with Max for Live but we'd like to develop VST in order to provide devices for more DAW & softwares.
I'm hesitating between programming directly with the VST sdk & using a framework like synthmaker.
I'm afraid to be limitated but I'm quite sure synthmaker is VERY powerful so... I wanted to ask & discuss a bit here before buying anything.
Can I have the TOTAL control over the GUI elements ?
Can I put my hands in the code after to have done the most big part in the WYSIWYG synthmaker framework ?
Can I control sequencing features too ? (to make a midi notes generator, for instance)
I'm ready to buy it, just hesitating yet :p
cheers,
gluon
nix ·
Hey there,
1. Yes, you can, in essence. Pop up menus are harder to make totally custom however.
2.No, sadly
3.Yes, but there are limitations. The midi events run on a green trigger, a tick. This is limited internally to 100hz, and is not 100hz sample accurate. I have been modding MAX/msp to provide sample accuracy, and up to 22050 hz ticks. These are not infallible though, as they have to be applied carefully. ie. if you plug a tick counter into an integer display, it will count at like 300hz, however, if you use the tick counter plugged into a 'mono readout', the correct value will show. hmm, still experimenting.
#3 is possibly the biggest limitation SM has compared to native code, or SE,MAX
Welcome!
gluon ·
hi nix & thanks a lot for your answer.
Maybe I should test & compare it to another framework.
I found this one: http://www.synthedit.com and of course, it is possible to directly code things in Visual Studio
I'm very curious about the toolchain chosen & used by audio damage & other nice VST designers
nix ·
I'd use Visual Studio, if you can man.
There is a preference for native code also.
SM can be a sketch pad, if you wish.
It is quite capable of processing at samplerate, but this does not cross over into MIDI.
I have heard that Audio Damage use the free version of Visual Studio at some stage.
Cheers
These guys-
http://nusofting.liqihsynth.com/index.html
Used SM as such a sketchpad at one point.
gluon ·
sketch tools & wysiwyg are nice, but if we cannot "edit" the code under the hood at the last sketch step in order to go deeper in the dsp etc, I'm afraid to be limitated 😕
tor ·
Id suggest you download the free version and look around. Also have a look at the manual.
Good luck in your choice 🙂
gluon ·
hello tor,
thanks a lot for your feedback.
I did and tested a bit.
It seems powerful!
I'd really like to know which path is followed by audiodamage guys..
nix ·
Maybe you could send them a mail?
Much cheer.
I hope SM is capable of some of your tasks.
It's advantage is that it easy(ish)!
gluon ·
I will, nix.
I discovered another framework too: http://forum.cockos.com/showthread.php?t=9524
not sure about its efficiency.
nix ·
There is JUCE too->
http://www.rawmaterialsoftware.com/juce.php
It is built by the guy who wrote Tracktion.
I found this when I first looked at Visual Studio-
http://www.portaudio.com/
Maybe these are interesting 🙂
infuzion ·
nix wrote: There is JUCE too->
http://www.rawmaterialsoftware.com/juce.php
I'm guessing AudioDamage uses this or his own framework. No idea for sure though.
IMHO, if you already or have enough brainpower to learn C++, do that instead of SM, since you will lose 60% of your market since SM will not & likely to never run on OSX or any other platforms. If you are scared, try SynthEdit, since you can later jump to C++ routines inside SE.
Mo ·
Also check Faust:
http://faust.grame.fr
gluon ·
I investigated, tested Juce c++ a lot this last week.
Juce C++ is amazing & powerful. Now I'm sure about that 🙂
BUT the big problem is: I have to reinvent the wheel at each corner of my journey inside VST design :p
I can deal with that but it is very time killing :-/
Synthmaker is still in a corner of my head. . .!
I need to implement quickly some prototypes of my ideas about circular or spiraloid sequencer, drone machines etc ...instead of spending a lot of time to code functions, to link buttons with method in C++.
With Juce, the most tricky/reinventing the wheel like stuff is the core of your plugin (even if, as you very correctly wrote, those wrappers and classes are very good!)
Prototyping things could be a pain... but I'm very honest... this may be my approach which has to be changed.
Maybe, prototyping things even in max and porting it to Juce could be the way.
Still thinking...
Maybe I'll choose to go to only window VSTi & fx at the beginning.
In that case, synth maker would be the choice.
BUT, as a hacker who want to control all his stuff, I'm afraid to be limitated..
As nix wrote, the limitation about MIDI tick is really a bad point for me, not because I need exactly to break this one, but probably there would be some other limitations I'd discover step by step (pessimistic view) but probably not a lot (optimistic view)
The most great limitation for me, is: NO VST for OSX can be exported :-(
nix ·
Would you like my polyphonic sequencer to assess SM's sequencing capabilities Gluon?
I wish to retain copyright, but you are welcome to pick it apart.
It is driven by MIDI tick 4096, routed from an .exe made in MAX/msp. The worst error should be 1/4096 sec.
If you wish to make polyphonic sequencers then it could be useful.
Regard
SM plugs can be controlled by sliders on Mac, with a program called VFX. The GUI stuff isn't compatible though, although many WinVSTs it is. VFX is a host, it won't wrap the SM plug to DAW. I hear it is quite buggy, but yeah, have to try it again sometime.
http://www.smproaudio.com/index.php/en/ ... edownloads
gluon ·
hey nix
I'm comfortable with max (too), so I guess if I needed something, I'd design my own helper standalone 🙂
But for designthemedia.com, I'd prefer to have easy-installable stuff without requiring my users to launch an exe more than daw+vst you know
I mean, it is a nice workaround, but a workaround 🙂
If I target this kind of solution, I would not code a vst, but directly a standalone max5 sequencers you know 🙂
But I like your idea
and for my own use, I could have all those inter-communication applications
On another side,
I read a lot of (not so good) stuff about the fact SM was a cpu killer
I especially read (old) thread/posts about this annoying thing, but they are nicely ranked by search engines.
I also read some 'reaktor vs SM-vst' posts that are.... insane & stupid comparison because:
- reaktor requires ... Reaktor framework to work inside a host as a global vst device
- SM-VST requires... nothing more than an host
fmo, they cannot be compared.
So the question is:
is the actual version is more efficient & CPU nice than before?
can I rely on it to produce commercial devices?
Can I change the dsp characteristics to really change the type of sounds produce ?
I mean, are the VST exported from SM all sounding the same or can we tweak to make them have their "own" quality?
And the last question (before buying???...???)
Is the audio quality good & enough for ... commercial devices production ?
best,
infuzion ·
gluon wrote: is the actual version is more efficient & CPU nice than before?
can I rely on it to produce commercial devices?
Can I change the dsp characteristics to really change the type of sounds produce ?
I mean, are the VST exported from SM all sounding the same or can we tweak to make them have their "own" quality?
Is the audio quality good & enough for ... commercial devices production ?
1) File sizes are huge compared to C++, CPU usage has to be hand-tweaked into ASM
2) AcmeBarGig has some successful cheaper releases lately, but only after building a huge fan base by releasing free VSTs for years. see #5
3) Yes, all platforms can, but honestly many synths tend to sound alike after awhile.
4) That is a strength for SM; faster to tweak & experiment with existing OSMs.
5) Well somewhat:
- no 64bit audio
- no 64bit VST Windows export
- no VST2.4 & VST3+ support
- no OSX, iOS, Android, etc exports; will be Windows-only until we have a base on Mars is seems
- poor MIDI timing support, but MIDI is decently supported otherwise
- will be missing new techs, like that new audio/controller over LAN, etc
- switching patches for complicated/lots-of-knobs VSTs can be slow
Really, if you're starting from scratch, I'd focus on C++/Juice or cookos frameworks, & perhaps use SM (free or commercial) to experiment & learn on. I feel trapped not taking the time learning C++, & I have to depend on SM to give me access to a limited & shrinking market. Plus I constantly feel like I'm beta-testing SM, even though it is in 2.0x versions, since I keep finding silly bugs. The dev only spends 1/10 of his time on programming SM it seems, since the rest is spent on flowstone, running the websites, running the business end, dealing with customers, etc.
gluon ·
Hi infuzion, and thanks a lot for your precise feedback 🙂
Indeed, choosing initially SM scaries me a bit...
(btw flowstone seems to be very interesting, but I'm more familiar with c & arduino, eventually c++ & midibox avr)
With "pure" C++, I'm afraid to loose my real target: create new synth architecture, create strange & amazing drone soundmachines, but create alternative sequencers too.
I mean, maybe, I should dev a "kind of" canvas I couls use & reuse
Maybe, building a sequencer in pure c++ doesn't require 20000 rows of code. and I could reuse this part easily for other projects too.
still hesitating, but I have to act instead of thinking quite soon 🙂
you know how it works, at a particular moment, you have to go and evaluate your choice few kilometers later ;p
infuzion ·
I thought C++ was supposed to be more reusable than C; "Object Oriented" & etc?
You can use SM to prototype, & once you get used to SM, perhaps quickly, but you still have to bug test etc just like other languages. SM is more GUI oriented, so sometimes de-bugging is better, but other text-based languages offer better search & replace, highlighting, etc.
You can translate audio Code & ASM into C++ easily, but the GUI stuff would be trickier.
trogluddite ·
Though I have word processing, CAD, circuit simulation and PCB design software at work, to generate the final refined output of the tasks I'm given - a pen and paper are still my most valuable tools.
SM does certainly have its limitations - but my experience is that an intuitive way to scribble down ideas before they disappear into the ether is a vital part of the creative process.
Don't discount SM purely because of the technical limitations - just like my favourite bass, it's invaluable to me because it just feels right under my fingers
It may be that is is worth it's weight as a complement to other ways of making VSTs, rather than a 'this or that' alternative - or maybe not if it it clashes with the way you prefer to get your ideas out of your head
infuzion ·
trogluddite wrote: Don't discount SM purely because of the technical limitations - just like my favourite bass, it's invaluable to me because it just feels right under my fingers
It may be that is is worth it's weight as a complement to other ways of making VSTs, rather than a 'this or that' alternative - or maybe not if it it clashes with the way you prefer to get your ideas out of your head
The point of gluon's questions are for commercial releases, not just tinkering. So one has to be more worried about bugs, limitations, etc. I also have talked to a few commercial SM devs, so the facts I presented are not just my own.
trogluddite ·
Oh yes, I have no disagreement with you there. My point was more that SM (likewise SynthEdit et al.) can offer a very fast way to test whether a particular algorithm or user interface is worth pursuing further in a more time-consuming programming environment. In a similar way, I would rarely make an SM assembly module without testing first in primitives/code to see if the effort is likely to be fruitful.
If working to a strict brief, then likely there would be no advantage - but possibly useful if working in a more open ended way that requires brainstorming for new product ideas, and if the extra expense is not prohibitive.
gluon ·
I wanted to thank you all about this nice debat/answers in that thread.
Prototyping in SM and finishing in pure C++ can indeed be a nice way.
I'm afraid to be annoyed a bit in that process, by several parts like: recoding a module.
With Juce, there is a program called The Jucer
It provides a nice way to design your GUIs and to link.
So... I feel like if I HAVE TO dive deeply in c++ (deeper as I thought initially)
But it worth the time/cost I'm sure.
Probably, I'll begin with a little device I already create with max for live (=max5 hosted in Ableton Live) as the already existing prototype 🙂
I'll let you know for sure about what I will build.
If you wanted to collaborate, feel free to follow & contact me:
http://designthemedia.com & http://protofuse.net
all the best and keep the good feelings 😍
DigitalWhiteByte ·
Good project,
I think you already know, but I'll also point out,
if you need to create a software control vst, for cross-platform, for your controller,
you can take a look at open-source project called CTRLR, now has achieved a great development.
It uses Juce for graphics, C++ for the management, and support modules in LUA for the midi.
Some people use this kind of framework as a start-up, to achieve even with vst audio as well as midi.
gluon ·
DigitalWhiteByte wrote: Good project,
I think you already know, but I'll also point out,
if you need to create a software control vst, for cross-platform, for your controller,
you can take a look at open-source project called CTRLR, now has achieved a great development.
It uses Juce for graphics, C++ for the management, and support modules in LUA for the midi.
Some people use this kind of framework as a start-up, to achieve even with vst audio as well as midi.
Hi there and thanks for your feedbacks & ideas.
I didn't know this one.
I like the idea to use "only" one lib/framework. But I'll surely have a look at this one (CTRLR!)
I'm almost decided to use Juce C++ for my VST designs. More tweakable, more safe for me.
I'm a bad guy: I don't like to be limitated even a bit...
Feel free to post/go on http://forum.designthemedia.com (not a lot active but it will with the VSTi & fx, for sure
Best,
infuzion ·
DigitalWhiteByte wrote: ...for your controller,
you can take a look at open-source project called CTRLR, now has achieved a great development.
It uses Juce for graphics, C++ for the management, and support modules in LUA for the midi.
Some people use this kind of framework as a start-up, to achieve even with vst audio as well as midi.
Wow, sweet, now I can edit my Casio CZ-101! C++ is looking more & more tempting...
DigitalWhiteByte ·
infuzion wrote: Wow, sweet, now I can edit my Casio CZ-101! C++ is looking more & more tempting...
I'm sure he got rid of that one:
http://www.youtube.com/watch?v=N5RPPKO_ ... re=related
DigitalWhiteByte ·
to have consumed 😈
gluon ·
finally, still hesitating ... yes! I had to write it here.
:p
DigitalWhiteByte ·
I understand your hesitation, I long ago I bought the license in the hope that the draft Synthmaker, evolve in the right direction.
But now my plans are being stalled for a synth or any other conception of tone generator or controller, the midi is crucial, and unfortunately no longer has implemented the basic functions for a long time now.
The development seems to focus mainly on product Flowstone and Synthmaker takes a bit of renovation of reflection.
so if the question is, whether or how soon you will see a concrete version, I do not think in the short term .... in some other years, I hope.
gluon ·
🙂
what is your framework actually, if I can ask ..?
gluon ·
DigitalWhiteByte wrote: I understand your hesitation, I long ago I bought the license in the hope that the draft Synthmaker, evolve in the right direction.
But now my plans are being stalled for a synth or any other conception of tone generator or controller, the midi is crucial, and unfortunately no longer has implemented the basic functions for a long time now.
The development seems to focus mainly on product Flowstone and Synthmaker takes a bit of renovation of reflection.
so if the question is, whether or how soon you will see a concrete version, I do not think in the short term .... in some other years, I hope.
DigitalWhiteByte, just to be more aware, what are the unimplemented MIDI parts?
nix ·
The most telling omission is a means to trigger MIDI events with accuracy of timing, just to reiterate. I am not sure what else is missing.
gluon ·
nix wrote: The most telling omission is a means to trigger MIDI events with accuracy of timing, just to reiterate. I am not sure what else is missing.
ok. lack of accuracy is ... just ... terrible.
does it happen in any case ?
I mean, in standalone ? in hosted mode ?
I tested some rewire application standalone designed with max5 and used as rewire client with Ableton Live... the timing just ... SUCKS!
Hey Gluon,
I think the metro object is sucky timing.
The streams in MAX should be fine.
Try 'count~' and 'edge~' to trigger bangs maybe,
hope helps 🙂
The MIDI timing is part of the greater issue of green events. Damn.
I use MAX via MIDI as a workaround.
The problem in SM is down to the trigger on the MIDI event. You can only use a 100hz module to trigger it pretty much internally, and this 100hz doesn't have even interstices, it varies. It is calling a Windows timer.
It occurs both when SM is running and as an exported plug or app, just the same.
infuzion ·
An issue with SM is that there is no SDK, so if you wanted to home-brew your own sequencer, you can not. SynthEdit has a C++ SDK, & many use it to make their own modules. Used to be quite a good cottage industry for SE advanced users.
DigitalWhiteByte ·
gluon wrote: DigitalWhiteByte, just to be more aware, what are the unimplemented MIDI parts?
addition to that already mentioned,
other missing:
MTC Quarter Frame
Song Position Pointer
Song Select
Tune Request
MIDI Clock
MIDI Tick
MIDI Start
MIDI Stop
MIDI Continue
Active Sense
they seem to operate in midi-out, but not for the midi-in
with the current ticker 100 will not go very far, considered to generate a midi clock or a midi-tick, not a viable choice.
gluon ·
infuzion wrote: An issue with SM is that there is no SDK, so if you wanted to home-brew your own sequencer, you can not. SynthEdit has a C++ SDK, & many use it to make their own modules. Used to be quite a good cottage industry for SE advanced users.
Hi infuzion, I wanted to inform you and the others about this post I had as an answer to a post by me:
http://www.psymusic.co.uk/forum/threads ... st-1246547
Speakafreaka seems to workaround the tick issue.
If it would be possible, it would just be ... nice 🙂
trogluddite ·
Speakafreak is perfectly correct - you can write a sample accurate sequencer, and MIDI input is indeed received at whatever rate the host sends it.
However, SM's MIDI output components will currently only send a MIDI messgae when prompted by a green trigger, which SM can only generate at up to about 100Hz with extremely unpredictable jitter (green signals have a lower thread priority).
So accurate sequencing is possible for a sound generator which is incorporated within the SM plugin - but you cannot easily use SM to send MIDI to another plugin or MIDI output with accurate timing.
There are currently two workarounds that I know of...
1) Send regular MIDI pulses into a MIDI input on the SM plugin, and use these external timing signals to clock the MIDI output - this is what nix has been doing with his MAX/MSP 'ticker'
2) Encode the output MIDI messages into an audio stream, and then use an external plugin to convert the audio to real MIDI - I've been using this method in Reaper using a small JS script plugin.
For personal use, either of the workarounds can reliably give the results required - but IMHO, they are simply not suitable for commercial plugins due to their reliance on other software platforms, and the awkward signal routing needed.
I'm currently using SM to make a MIDI based looping system for live use, and while my Reaper/JS workaround works beautifully (accurate timing, no stuck/lost notes etc.), a stream (not green) path to the MIDI driver is the only component required to make it fully self-contained. However, representations from myself (and no doubt others) to implement this component as way around the green timing problem have thus far fallen on deaf ears.
But maybe an accurate MIDI output is something that you do not foresee a need for?...
gluon ·
trogluddite wrote: Speakafreak is perfectly correct - you can write a sample accurate sequencer, and MIDI input is indeed received at whatever rate the host sends it.
However, SM's MIDI output components will currently only send a MIDI messgae when prompted by a green trigger, which SM can only generate at up to about 100Hz with extremely unpredictable jitter (green signals have a lower thread priority).
it sucks, really.
trogluddite wrote: So accurate sequencing is possible for a sound generator which is incorporated within the SM plugin - but you cannot easily use SM to send MIDI to another plugin or MIDI output with accurate timing.
it is really annoying.
Do you know the Axon Audiodamage's plugin?
it is an alternative sequencer that works very fine and I'm often using it when I'm composing polyrythmics structures.
I use quite often the "MIDI Only" feature.
In that case, it outputs MIDI notes to anything else in the chain of devices.
I couldn't do that with SM, but I could use the builtin sound generator (which could be very enough!)
trogluddite wrote: There are currently two workarounds that I know of...
1) Send regular MIDI pulses into a MIDI input on the SM plugin, and use these external timing signals to clock the MIDI output - this is what nix has been doing with his MAX/MSP 'ticker'
2) Encode the output MIDI messages into an audio stream, and then use an external plugin to convert the audio to real MIDI - I've been using this method in Reaper using a small JS script plugin.
The Max5 trick can really kill some un-geeks users.
But it could work indeed.
I'll probably buy (FINALLLLLY) SM.
In the I'd need to output MIDI from the next generation mega alternative sequencer I will build, I would provide a Max5 standalone + Max for live device for Ableton Live users
trogluddite wrote: For personal use, either of the workarounds can reliably give the results required - but IMHO, they are simply not suitable for commercial plugins due to their reliance on other software platforms, and the awkward signal routing needed.
I'm currently using SM to make a MIDI based looping system for live use, and while my Reaper/JS workaround works beautifully (accurate timing, no stuck/lost notes etc.), a stream (not green) path to the MIDI driver is the only component required to make it fully self-contained. However, representations from myself (and no doubt others) to implement this component as way around the green timing problem have thus far fallen on deaf ears.
But maybe an accurate MIDI output is something that you do not foresee a need for?...
Answered before :p
thanks again for the feedback + words around that!
trogluddite ·
gluon wrote: Do you know the Axon Audiodamage's plugin?
I just looked it up and had a quick scan of the manual - interesting stuff, though naturally, my head instantly went into "I feel another SM project coming on" mode! 😉
My current MIDI looper project was inspired by similar ideas of using polyrhythms - regular sequencers all seem designed to encourage that same kind of predictable "tyranny of fours".
Much as I love programming plugins, I don't much care for 'programming' music - so I'm using a system of live loop recording where each 'track' has fully independent length, and several controller 'lanes' who's length can also be independent of the track length. It's essentially a MIDI version of my Soopa Doopa Loopa audio project (see here).
I'll post something up soon, though sadly it will currently only function in Reaper (to allow the use of the 'Audio-to-MIDI' JS script). As long as I can keep from getting sidelined, that is - sending multiple unequal length loops to the same monosynth is getting addictively distracting!
gluon ·
trogluddite wrote:
gluon wrote: Do you know the Axon Audiodamage's plugin?
I just looked it up and had a quick scan of the manual - interesting stuff, though naturally, my head instantly went into "I feel another SM project coming on" mode! 😉
My current MIDI looper project was inspired by similar ideas of using polyrhythms - regular sequencers all seem designed to encourage that same kind of predictable "tyranny of fours".
Much as I love programming plugins, I don't much care for 'programming' music - so I'm using a system of live loop recording where each 'track' has fully independent length, and several controller 'lanes' who's length can also be independent of the track length. It's essentially a MIDI version of my Soopa Doopa Loopa audio project (see here).
I'll post something up soon, though sadly it will currently only function in Reaper (to allow the use of the 'Audio-to-MIDI' JS script). As long as I can keep from getting sidelined, that is - sending multiple unequal length loops to the same monosynth is getting addictively distracting!
all of this sounds nice to me!
you can contact me [email removed] and we could share ideas & tests.
take care
trogluddite ·
🙂
Take care posting your e-mail on the forum, though - those pesky spam-bots get everywhere these days!!
gluon ·
gmail anti-spam works fine 🙂
gluon ·
another question.
can we "trust" ppq & bar position ?
I intend to design a machine containing a seq+synth.
so I need to trust the host sequencer position (only) because the other parts will be ok as far as I understood the other posts.
philter5 ·
gluon wrote: another question.
can we "trust" ppq & bar position ?
I intend to design a machine containing a seq+synth.
so I need to trust the host sequencer position (only) because the other parts will be ok as far as I understood the other posts.
it really depends on what your machine is doing....
if it it full of audio processing stuff the timing will be very bad.
nobody has ever finished a 100 % sample accurate sequencer with SM...
gluon ·
hello philter5,
It is annoying indeed.
Did you see Usine 5.7 ? It offers VST Export (for window only)
Btw I don't want to remake this whole thread. I already asked a lot.
I'm really interested to know more about next version, roadmap etc.
Not a lot of informations btw.
Particularly, I'd like to know how they would deal with this timing issues.
gluon ·
philter5 wrote:
gluon wrote: another question.
can we "trust" ppq & bar position ?
I intend to design a machine containing a seq+synth.
so I need to trust the host sequencer position (only) because the other parts will be ok as far as I understood the other posts.
it really depends on what your machine is doing....
if it it full of audio processing stuff the timing will be very bad.
nobody has ever finished a 100 % sample accurate sequencer with SM...
I read that : [old link]
I do not intend to build a standalone stuff but a machine including a seq+synth which would grab the tempo + position from the host.
Would you think it could work?
in that case, I'd use PPQ to trigger stuff.
I'd like to try but I don't own yet the pro version and with the free one, I'm limitated, of course
philter5 ·
i do only test my plugins with ableton live suite so i can´t tell you about the other hosts:
as mentioned before: the ppq/bar thing works, but it has it´s limits...
example: if you use the ppq to display simple messages / display a host synced step sequencer bar it works good.
a simple synth section with 1 osc and 1 amp envelope added: works, but not reAlly accurate
(i think this is also hardly related to the CPU power and the selected audio driver/audio hardware)
but the more you add stuff to your seq , the more often it will have sync issues. normally the sequencer drifts out of sync
when you do massive action on your plugin (example: control 3 knobs at the same time via MIDI in).
for a simple example of the ppq see here
[old link]
phil
gluon ·
I think I got it Phil.
The timing issues comes:
- when a lot of midi messages come into the midi input of the VST ?
- when the audio treatment/synthesis are high ?
Btw, too bad they seem not to want to fix that (I read post since 2007 about that!)
cannot access to the forum you linked.
philter5 ·
to keep it short: usually the sync drifts away if there are A LOT OF PROCESSES going on in your plugin .
BUT that is only my experience, perhaps some of our synthmaker gurus can prove me wrong....😕
but the best way is testing, testing AND again testing because it really depends on the plugin itself...
trogluddite ·
There should only be timing problems if you have to use the 'M2F' to sample the stream of PPQ data into a Green float signal (for triggering MIDI events etc.) - the triggers for the M2F will never be fast or accurate enough to grab the value with sufficient time resolution.
I have had great success using the PPQ to synchronise audio loops to host tempo. Note that I'm not simply using the PPQ or Bar Pos to reset an internal counter every once in a while - I am simply calculating PPQ modulus Loop-Length, and using that directly to provide the sample position within the loops. As far as I can tell, the pitch stability of the loops is just as good as when using an internally calculated ramp (though admittedly, I'm not as fussy about such things as many people - anything better than tape 'wow' usually does for me!)
The only proviso is that for very long songs, the precision of the value may fall away as the PPQ number gets too large, though I've yet to notice this in practice. Even then, an internally generated ramp reset each time the PPQ data crosses into a new integer ought to solve the problem for any reasonable song length.
As for MIDI input timing, again I've had no problems. I'm currently working on a MIDI looping plugin by using a little 'cheat' in Reaper. I encode the MIDI going into SM as a stream, process as a stream, then send it out as audio. I then use a little JS script plugin in Reaper to transform the encoded audio back to MIDI. This is working as accurately as my ears can hear, even with 8 MIDI loops all running, including pitch bend, aftertouch and several controllers per loop.
So, really all SM needs is a way to generate MIDI data directly from a stream, and we could build the perfect sequencer (without the 'cheats'!).
nix ·
I wouldn't use a ramp. It is inaccurate after a while. I found this recently modding a tempo synced volume gate.
Better to use a counter, as far as I'm aware the stream counters are sample accurate, and don't need to be reset w/- ppq either. There is a double precision one with loop function in Exo's sampler in the wiki.
Cheers
trogluddite ·
nix wrote: I wouldn't use a ramp. It is inaccurate after a while....
Better to use a counter
Oh yes, i never use the built in Ramp primitive - to me any counter that you eventually end up resetting to zero is a ramp, cos that's what the output looks like!
Still, it seems to me that the very idea of synchronisation is missed when we talk of ramps/counters.
The essence of sync is that everything marches in step - the absolute accuracy of the timing is not important.
Hence I prefer to use PPQ, rather than a ramp/counter calculated from the BPM value. If your ramp were for some reason more accurate than the hosts own time calculations, it would still lead to drift.
Since we have no control over the host's time calculations, we must follow the host - even if the host 'clock' is 'wrong', it's the one that all the other musical events in the song are following.
Using SMPTE code to synchronise MIDI sequences to audio from a tape machine was even worse - the inaccuracies in tape speed were much larger and were different every time you played it back, so the tape had to be the master; with the MIDI stuff shifted all over the place in time to keep it locked in step with the recordings.
nix ·
I'm thinking in the long term I may get 2 tb303s, a tr909 and tr808.
Syncing those will be interesting.
Do u know how it's done trog?
It is a bit OT, sorry Gluon
btw, sweet dreams trog!
trogluddite ·
nix wrote: I'm thinking in the long term I may get 2 tb303s, a tr909 and tr808.
Syncing those will be interesting.
Oh, I'm showing my age now! 😉 Good old analogue DIN Sync.
If you hunt around, you can get MIDI to DIN sync convertor boxes (Kenton used to make them IIRC), or even just generate audio pulses from your sequencer if your soundcard has powerful enough outputs.
nix ·
Thanks man,
Much appreciated.
gluon ·
mates, it is absolutely not OT.
I'm interested too !
By reading all of that, I feel there are a lot of possible tweaking, depending of course of the precise machine you build, and it makes me thinking SM could fit.
If someone read my all post, I look like a great hesitating man. I am, a bit.
But especially, VST plugins design isn't my main activity. I'm making music & teaching Ableton Live, so .. it means I cannot actually put my brain into that for 100% of my time.
But I will, quite soon.
I finished a big max5 project and I want to really dive in VST for the next months.
Usine 5.7 offers now a VST export for windows and WILL go to VST export for mac!
I'm curious about timing accuracy comparison 🙂
(so, still hesitating for buying SM ... ahah! the man hesitating!)
trogluddite ·
gluon wrote: I finished a big max5 project
Wow, that's impressive. Here in Bradford we have the UK national museum for film, TV, media etc. - but sadly the style of presentation is too old to impress the younger generation, so the kids don't get to access most of the amazing stuff they have in their archives there - the exhibits are mostly not interactive enough, e.g. read a paper catalogue then queue at a desk to ask them to play your film clips etc.
They should visit Marseilles to see how to bring the Museum into the 21st century!
gluon ·
YOU are welcome here 🙂
Max6 has been announced.
What a great framework.
Usine 5.7, you should test it too.
VST export seems VERY fine and it offers a real c++ sdk.
A specific developer version will be released.
Those guys are very nice & skillful !
nix ·
As far as I am aware of MIDI timing hz speed of these 3:
Usine- 1000hz accurate increments
MAX/msp- 22050hz sample accurate increments
SM-100hz innacurate interstices
I think I can improve the utility of my polyMIDI sequencer with Usine, but I don't get the lightning speed of MAX.
I have the professional Usine Gluon, so if you like we can share patches. I haven't built anything yet, just tried to get the quickest MIDI triggers.
64-bit windows will come before Mac in Usine
Cheers!
gluon ·
trogluddite wrote: There should only be timing problems if you have to use the 'M2F' to sample the stream of PPQ data into a Green float signal (for triggering MIDI events etc.) - the triggers for the M2F will never be fast or accurate enough to grab the value with sufficient time resolution.
I have had great success using the PPQ to synchronise audio loops to host tempo. Note that I'm not simply using the PPQ or Bar Pos to reset an internal counter every once in a while - I am simply calculating PPQ modulus Loop-Length, and using that directly to provide the sample position within the loops. As far as I can tell, the pitch stability of the loops is just as good as when using an internally calculated ramp (though admittedly, I'm not as fussy about such things as many people - anything better than tape 'wow' usually does for me!)
The only proviso is that for very long songs, the precision of the value may fall away as the PPQ number gets too large, though I've yet to notice this in practice. Even then, an internally generated ramp reset each time the PPQ data crosses into a new integer ought to solve the problem for any reasonable song length.
As for MIDI input timing, again I've had no problems. I'm currently working on a MIDI looping plugin by using a little 'cheat' in Reaper. I encode the MIDI going into SM as a stream, process as a stream, then send it out as audio. I then use a little JS script plugin in Reaper to transform the encoded audio back to MIDI. This is working as accurately as my ears can hear, even with 8 MIDI loops all running, including pitch bend, aftertouch and several controllers per loop.
So, really all SM needs is a way to generate MIDI data directly from a stream, and we could build the perfect sequencer (without the 'cheats'!).
In my case, I'm not sure I'd need PPQ---M2F (I didn't write I wouldn't need... just I don't know)
The host transport would be used to generate sequences creating my the VST and "played" (as sounds I mean) by the VST itself too.
I mean, Bar Position + tempo informations could be enough
As you wrote, testing testing testing!
but before, ... buying buying buying. (still didn't do that)
gluon ·
nix wrote: As far as I am aware of MIDI timing hz speed of these 3:
Usine- 1000hz accurate increments
MAX/msp- 22050hz sample accurate increments
SM-100hz innacurate interstices
I think I can improve the utility of my polyMIDI sequencer with Usine, but I don't get the lightning speed of MAX.
I have the professional Usine Gluon, so if you like we can share patches. I haven't built anything yet, just tried to get the quickest MIDI triggers.
64-bit windows will come before Mac in Usine
Cheers!
I didn't know about 1kHz for Usine.
The main word here is accurate, btw :p
Actually, Usine pack WELL VST dll but we cannot change the top panel which is, even if it could seem a little issue, very annoying in our case.
The dev version will be definitively THE solution with a lot of VST export options.
It would come soon, I guess (!)
gluon ·
By top panel & little tweak about the UI, here is a snapshot.
btw, EVERYTHING in a patch can be tweaked!
Here, I only paste an example provided with Usine, but you can use every graphics, parts, leds everything you want!
You can also design your own modules using the C++ SDK.
trogluddite ·
gluon wrote: The host transport would be used to generate sequences creating my the VST and "played" (as sounds I mean) by the VST itself too
Having sequencer + sound in the same plugin certainly makes accurate timing possible. The only limitation then is that you have to use mono (or mono4) streams for all of your audio processing. This means that you must have a fixed value for polyphony, and the CPU usage will be constant (it will not go down for silent voices). SM's dynamic poly voices are intimately tied to the use of MIDI - so they cannot be used accurately for internally generated events.
However, using the mono4 type data, you can get 4 voices for the same CPU as one, so it is not always so greedy. Then it is a matter of your philosophy of CPU usage!...
For me, the important thing is for the CPU to handle the full 'tutti' in the big chorus - if it can do that, then what's the use of the 'saved' CPU cycles during the quiet bits? - maybe so I can browse the internet during the boring parts? 😉 Also I prefer simple sounds playing complex structures rather than 1,000 oscillators per voice. So that is one side of the story - dynamic poly is not important to people like me.
But maybe you (or your customers) would feel differently about those subjects, or require the lowest CPU figures to be competitive with other commercial plugins...
gluon ·
trogluddite wrote:
gluon wrote: The host transport would be used to generate sequences creating my the VST and "played" (as sounds I mean) by the VST itself too
Having sequencer + sound in the same plugin certainly makes accurate timing possible. The only limitation then is that you have to use mono (or mono4) streams for all of your audio processing. This means that you must have a fixed value for polyphony, and the CPU usage will be constant (it will not go down for silent voices). SM's dynamic poly voices are intimately tied to the use of MIDI - so they cannot be used accurately for internally generated events.
However, using the mono4 type data, you can get 4 voices for the same CPU as one, so it is not always so greedy. Then it is a matter of your philosophy of CPU usage!...
For me, the important thing is for the CPU to handle the full 'tutti' in the big chorus - if it can do that, then what's the use of the 'saved' CPU cycles during the quiet bits? - maybe so I can browse the internet during the boring parts? 😉 Also I prefer simple sounds playing complex structures rather than 1,000 oscillators per voice. So that is one side of the story - dynamic poly is not important to people like me.
But maybe you (or your customers) would feel differently about those subjects, or require the lowest CPU figures to be competitive with other commercial plugins...
I think I got it.
actually, the first target is a sequencer with 6 sounds maxi at a time.
I could change my prototype to test it with a poly of 4.
Thanks for all these infos
This big thread contains a LOT of useful trick for SM ! !
Wrote something here? To have a post removed or your name hidden, write to [email protected].