-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better MIDI support #1472
Comments
On 12/26/2014 10:17 PM, Amadeus Folego wrote:
Export to MIDI should be implemented as an export plugin. You don't need a MIDI controller for it. |
I know, I am talking about the other features, this is an example of a feature that does not need a virtual/real midi controller. So when this task is completed is is marked and we have a sense on how our MIDI support is evolving. |
Sounds good. Planned on using |
Working on a keyboard layer plugin and keyboard layer track GUI mockup for #1381. |
I'm finding midi import crashes LMMS on about 30% of the files I've tried on V1.10, V1.12, Win64 and Win32 versions. These files seem to play OK in Windows Media Player. Audacity imports them OK. Example: http://en.midimelody.ru/midi.php?str=%2Fb%2FBeck%2C%20Jeff%2FBeck%2C%20Jeff%20-%20Blue%20Wind.mid |
Probably because it contains some feature that LMMS doesn't support |
I haven't found exactly what causes the crash but it appears to be something with pitch bends. There is a lot of pitch bending in that tune (Jeff Beck's "Blue Wind") and when I filter all the pitch bends out of the midi file it imports correctly. I'll see if I can narrow it down to something more specific. |
This should be turned into a task list so its easier to mark fixed issues. |
Some ideas that have come up to my mind so far. If needed, I can open separate tickets for them.
Speaking of transport control, the Play/Stop/Record controls could also be made assignable to MIDI events, but this was already mentioned by others. |
What's the main blocker for midi pitch bend recording support? I was recording a solo via midi and was surprised that even though the pitch bends were correct during the recording, they were missing during later playback. If there's something I could contribute to help this make it into a near-term release I'd be happy to look into it! |
Hi @benwiley4000, I had a quick look at the problem, i.e. I have checked what happens if you play a note while recording and what happens if the pitch wheel is moved. Unfortunately it seems that there is no quick solution to your problem. In my opinion the main blocker is that MIDI is not a first class citizen in LMMS. So you have asked your question in the correct issue. ;) MIDI and audio streams in other DAWsMost other DAWs know at least the following two first class citizens:
If you record something (or import files) these DAWs will create containers which store or reference this data. The containers can be moved or copied around the timeline and tracks to build a song. If you record MIDI with a keyboard the container will still represent this information as a stream of MIDI events. And if you play back with the playhead over the container then the DAW will reproduce this stream of MIDI events and route it wherever it should go, e.g. to an instrument plugin. It's then up to the instrument plugin to interpret what to do with this data which allows for very flexible and different implementations. Because the data is still represented as MIDI events this also means that pitch bends would be played back without problems because they are simply events in that event stream. What happens in LMMS?Recording a noteLet's now see what happens in LMMS when you hit record in the piano roll and press a key on your keyboard. I have tested this with an instance of TripleOsc. A note is recorded as follows:
Moving the pitch bend wheelIf you move the pitch wheel this will also trigger A potential solution (how most other DAWs do it)Put differently: LMMS is very quick to translate the MIDI data into its own representation which is not able to handle all the nuances of a MIDI stream. In my opinion it also does too much interpretation outside of the instruments and plugins (compared to having the interpretation implemented in plugins/clients). The best solution would be to represent all non-audio data as MIDI internally (or at least in a form that encompasses all of MIDI) and to route it accordingly. This would also enable the usage of plugins which transform the MIDI stream (e.g. transpose it, make all notes of equal volume, etc.). With the current implementation I assume that such plugins are not supported. The fact that most plugin standards (VST2, VST3, LV2, etc.) differentiate between audio and MIDI is another indicator that it's a good idea for a DAW to be able to deal with streams of MIDI data internally. If MIDI was a first class citizen it would likely make importing MIDI data easier as well. You would "simply" read the MIDI data, perhaps transform it and then put it into the containers. And then play it back to your hearts content. |
@michaelgregorius what do you think some actionable steps could be? The "perfectly correct" way, and also, what would actionable steps be if I'm totally selfish and only want to get my feature implemented? 😜 I'm brand new to the code base but if there's a small task I could start with that would be great. |
Hi @benwiley4000, I guess even a "selfish" and perhaps even "hacked" implementation that only solves this single problem would be rather complex. The base problem can be described as "MIDI events are generated but only some of them are recorded so only a subset of the input events will be played back". So you'd have to solve the following problems:
As you can imagine the steps that need to be implemented for the "perfectly correct" way would be even more complex. Things that come to mind are:
Once this infrastructure was available I think many interesting and useful things could be implemented. For example:
By the way, if you want to get your feet wet with regards to coding in LMMS there are some issues which are tagged as "good first issue". Perhaps you can find something interesting there even if it doesn't scratch your current personal itch. 😉 |
Has functional MIDI-export been implemented at any time? Afair : Yes. I believe it has been working.
MIDI-export is broken in aspects of
in 1.2.1 #5287 Irrelevant: |
Hello ! Now to the point : MIDI sound banks ! So, if my opinion is accepted : "MIDI bank-selection (MSB) support #62" item would be really appreciated ;) Sadly it will be impossible for me to contribute, as my level in programming is too low ... wish I could help... |
I'm thinking of working on creating a midi out plugin similar to fl that will send midi data to specific channels of vestige instances |
Why a plugin (where would it go?) and why only to VeSTige? Native effects would benefit from receiving MIDI as well, and ideally you'd be able to send that MIDI from any track (e.g. if you already have an instrument playing the "control" MIDI) |
a plugin because it's the only way i'd imagine being able to send midi data to multiple midi channels of a same plugin at the same time I said vestige mostly because it's mostly vst that require multi midi input, no lmms instrument uses it since they just use a single channel |
LMMS on MacOS Ventura 13.3.1 crashes when any virtual MIDI port is created or disposed of. Also, unfortunately LMMS doesn't allow these virtual MIDI ports to be used so it's necessary to use a software like MIDI Pipe to route the messages from the virtual MIDI port to the IAC driver (which can be used in LMMS). |
This is only slightly tangential, but if this is ever fixed, do have a think around OSC as well. I imagine a "container" or whatever that encompassed MIDI can "easily" handle OSC, too, but who knows. Might anyway be worth thinking about both OSC and extended MIDI variants I guess. I was about to have a stab at adding OSC myself as an experiment, but Im not sure its worth it after reading this bug. |
This is a placeholder to consolidate MIDI related issues. If a new MIDI enhancement is reported on the tracker, close it out and mark it as a duplicate of this bug (and naturally add to this list as needed) (#1472)
Note: As opposed to our other placeholder bug reports, MIDI is slightly different as it is mostly feature-complete. Version-specific MIDI bugs should remain open and tracked on a per-version basis. Don't close out valid bug reports simply because they use the word "MIDI" in them, first make sure they aren't attributed to a specific build. 👍
Basic Functionality:
Enhanced Functionality:
.scl
files, retuning, etc) Microtonality #1387Bugs:
Related:
The text was updated successfully, but these errors were encountered: