Using hardware midi synthesizers

Having trouble with LMMS? Ask about it here.
Hi, everyone! I need some advice in using hardware synths with LMMS. Usually, I do everything in-the-box but there are cases when computer-generated sounds are not authentic enough so i MUST use some "real" thing. I normally do this by making a placeholder sound in software and when the song is near-complete i play the track out to midi and record the audio using Audacity. I can't work with midi I/O in real-time because the audio buffer is a lot longer than midi latency. Is it possible to set an artificial midi latency so that it gets in sync with audio? And the second question is how to make a midi-only or "dummy" track manually like the one LMMS creates if it cannot load an instrument?
dj-pixus wrote:
Fri Jan 24, 2020 4:06 pm
Is it possible to set an artificial midi latency so that it gets in sync with audio?
No, afaik there is no way for that.
LMMS is yet not geared for some of the advanced MIDI usages. There may be some tricks that can be done on the MIDI-keyboard, but those would be special for a specific keyboard.
MIDI-limitations are also a problem when it comes to the other thing you ask about
how to make a midi-only or "dummy" track manually like the one LMMS creates if it cannot load an instrument?
We dont have the same type of MIDI-stub, that i know exists in FLs, but how about an 'empty' AFP, where you route an other instrument through..?
Have you tried that?
There is big collection of suggested midi-improvements on gitHub. You could read that and figure out, if your need already are covered, if not you are most welcome to add there to the many request for improvements.
That is one of the powers of LMMS- Its is a user-driven project, and user-request are implemented over time.
dj-pixus wrote:
Fri Jan 24, 2020 4:06 pm
Hi, everyone! I need some advice in using hardware synths with LMMS. Usually, I do everything in-the-box but there are cases when computer-generated sounds are not authentic enough so i MUST use some "real" thing. I normally do this by making a placeholder sound in software and when the song is near-complete i play the track out to midi and record the audio using Audacity. I can't work with midi I/O in real-time because the audio buffer is a lot longer than midi latency. Is it possible to set an artificial midi latency so that it gets in sync with audio? And the second question is how to make a midi-only or "dummy" track manually like the one LMMS creates if it cannot load an instrument?
Hi Pixus,

I am using LMMS along with my "physical" synthesizers, connected via MIDI, I suppose this is what you want to achieve too.

About the latency, I have found that I was able to get something almost acceptable on Windows if I reduce the buffer size to the minimum (64 samples). I was expecting to get better results using WDM-KS, but for some unknown reasons, the software keeps failing when I want to use this kind of driver.
So for now, I use WASAPI interface layer, and this works not too bad. I just avoid to mix drums on hardware synths and drums on LMMS plugins, since the delay is clearly audible. But for sounds like strings, layers, pads, result is OK. And even for bass lines, the slight delay can lead to interesting results (depends on what you want to achieve)

For the "MIDI only" tracks, I found a simple and easy solution : I just use place a SF2 player without bank loaded. The engine then takes almost no CPU power (for 10 tracks used as "MIDI ONLY", I saw just something like 1 to 2% CPU load raise because of the unused SF2 engines). Apparently, SF2 player only takes CPU power in that case to fill audio buffers with silence, that's why there is just a small CPU load (also for mixing the buffer with silence). Not the best solution, as CPU is wasted for some silence mixing, but the side effect is acceptable

Benoit
Thank you for your replies. So it looks like the best method is to continue using empty SF2 players. It shouldn't be hard to implement however, because i can already make such a track by modifying the instrument type to "dummy" in the project file. Just wanted to know if there is a more "official" method.
About the latency thing: I use ALSA with direct hardware device, and the buffer size of 64 gives almost perfect sync with MIDI if using only 1-2 tracks, but introduces a lot of pops/lags with more. With 10 or more tracks the music transforms into a soup of NES explosion sounds :/
I will take a look at that suggestion list.