kosua20 / MIDIVisualizer

A small MIDI visualizer tool, using OpenGL
MIT License
1.02k stars 136 forks source link

"Connect to device..." crashes MIDIVisualizer #158

Open nicostaa opened 4 months ago

nicostaa commented 4 months ago

I found this crash when trying to connect my midi keyboard to MIDIVisualizer. I've attached the log. MIDIVisualizer.log The playback function of midi files works flawlessly, as well as all the other features I've tried. The only problem is that it simply crashes the program when clicking on "Connect to device...".

This crash occurs on the Steam Deck running SteamOS 3.5.19, MIDIVisualizer version 7.2, Ubuntu release of course. The gpu is an AMD called "Van Gogh" and overall the Steam Deck has 16gb of ram

OscarSouth commented 1 month ago

I've also been having crashes related to connecting to a device. It only happens when using an audio interface:

ALSA lib rawmidi_hw.c:352:(snd_rawmidi_hw_open) open /dev/snd/midiC1D0 failed: Device or resource busy

midi_in_raw_alsa::open_port: cannot open device.

terminate called after throwing an instance of 'libremidi::driver_error'
  what():  midi_in_raw_alsa::open_port: cannot open device.
Aborted (core dumped)

I worked around it by booting Jack with the audio interface turned off (using internal audio), connecting to the exposed alsa port and then turning on the interface, patching the internal alsa midi thru port to the audio interface out. I only need to send MIDI so this works ok for me., bit cryptic though

rickyturaz commented 1 week ago

EDITED - I just made it by:

  1. Manually compiling source code using CMake.
  2. Installing all needed dependencies, including libjack-dev - it makes CMake fill Jack path and libraries related parameters.
  3. Flagging LIBREMIDI_NO_ALSA parameter in CMake: it forces MIDIVisualizer to use Jack.

Thanks!


Hello, I'm running Linux and I need to split MIDI input from my MIDI digital keyboard, to both a synth (reproducing my piano playing through a SoundFont) and MIDIVisualizer, then I'll record the whole stuff using OBS Studio. I'm quite a Linux newbie so I'm learning how to. It seems MIDIVisualizer fully reserves the MIDI input: as soon as I've set Jack (using QjackCtl) to send input to synth (Qsynth), when I open MIDIVisualizer it crashes with the following error.

midi_in_raw_alsa::open_port: cannot open device.

terminate called after throwing an instance of 'libremidi::driver_error'
  what():  midi_in_raw_alsa::open_port: cannot open device.
Annullato (core dump creato)

Doing the opposite, MIDIVisualizer works smoothly but the synth doesn't receive any input. I've also tried to run MIDIVisualizer and create a virtual MIDI device (Jack), but I cannot find it then in Qjackctl to connect to. I'm using Ubuntu Studio 24.04.

Can you support me how to set this split? I think @OscarSouth you found the solution, but I didn't understand how to do that.

Many thanks in advance! :)

I've also been having crashes related to connecting to a device. It only happens when using an audio interface:

ALSA lib rawmidi_hw.c:352:(snd_rawmidi_hw_open) open /dev/snd/midiC1D0 failed: Device or resource busy

midi_in_raw_alsa::open_port: cannot open device.

terminate called after throwing an instance of 'libremidi::driver_error'
  what():  midi_in_raw_alsa::open_port: cannot open device.
Aborted (core dumped)

I worked around it by booting Jack with the audio interface turned off (using internal audio), connecting to the exposed alsa port and then turning on the interface, patching the internal alsa midi thru port to the audio interface out. I only need to send MIDI so this works ok for me., bit cryptic though