# Virtual MIDI port



## Zare (Dec 26, 2021)

Is there any way to instantiate a virtual MIDI port, with or without sndiod.

I have working USB midi interface and MIDI controller with USB connection, both work fine with jack and jack_umidi. What I'm trying to do is to connect DosBox that has oss midi driver to jack bus, but there is simply no /dev device to connect it through.


----------



## Zare (Dec 26, 2021)

I'm willing to put development effort into MIDI and sequencer support for FreeBSD. I will connect with the multimedia mailing list but I'm also interested in experiences and efforts that people from this forum have done.

FreeBSD currently supports jack, and end-user applications concerned, jack is the only MIDI transport system that actually works. The entirety of MIDI IO is performed by jack, while physical USB devices can be connected through only FreeBSD native facility that's actually usable in 2021, the umidi driver. 

For end-user applications this means the "DAW" stack is missing the control protocol in the protocol suite. In order to connect the entire stack one must target jack API and leave OSS behind.

For instance, I've come to conclusion that for my workload, it's better to look at classic abandonware 16-bit PC applications, such as Voyetra Sequencer Gold. These applications were standard of the day, they have quite in features, professional documentation and keyboard driven. Stupid as it sounds, a SVGA application scaled up to desktop size might look better than some Linux toolkit UI program that didn't pay attention to DPI and things like that.

Right now I am looking to patch dosbox-staging to connect emulated MIDI to jack. 

Although this will give me the functionality I seek I find it quite stupid FreeBSD doesn't have a native OSS compatible MIDI facility (but elaborate and controllable with virtual device support and routing) and I'd rather concentrate my efforts in patching jack to use FreeBSD MIDI than patching dosbox to use jack because I only care about FreeBSD on the project level.


----------



## bsduck (Dec 26, 2021)

I can't really help but I'll definitely be interested in your work.


----------



## Zare (Dec 27, 2021)

I stated work on dosbox+jack, and implemented the initial functionality.

The tooling issues persist. There's not a single program alike MIDI-OX (25 year old Windows software) that can debug MIDI on the bus easily. I'm not sure whether sampler plugins I have (ZynAddSubFX) respond to multiple channels. The general purpose software synths like Bristol do not run (the Brighton GUI fails to load and mumbles something about ALSA buffers - while clearly being compiled without ALSA).

This is exactly what I fear about future of FreeBSD audio - heavy maintenance is needed over those Linux ports because we don't have ALSA.

Right now for testing,  I need a reliable way for full General MIDI synthesis over jack's bus, or a MIDI diagnostic utility for jack's bus. I can dump messages right out of the driver for tracing, but it's also about having a normal tooling and infrastructure. If we don't have a MIDI-OX for the most used MIDI API, we're still in 1995 as far as I'm concerned. I can also test dosbox patch on another OS, but that again does little for FreeBSD itself.

There are two modern maintained MIDI monitors that require ALSA, one Qt, one GTK, neither available for FreeBSD. I do not believe porting these is a valid goal. If I decide to take on a small project in entirety, this will be it.


----------



## jbo (Dec 27, 2021)

I have to second bsduck on this one. Please keep up the work


----------



## ayleid96 (Jan 5, 2022)

I have this same problem with wine, i could get other software to work with jack but wine doesn't support it... Warcraft 3, Morrowind and Oblivion doesn't work because of that MIDI problem, they cannot find devices in /dev in order to work.

EDIT: see THIS


----------



## hselasky@ (Jan 22, 2022)

Hi,

There is a port called audio/alsa-seq-server which can do this.

Then you can for example use a FIFO as interface for MIDI or a real MIDI device. Works with emulators/wine .

`mkfifo /midi`
`chmod 0777 /midi`

Else writing a native ALSA MIDI app is also possible.

Another possibility is to use cuse() (Character Device in User Space).

Hope this gets you inspired 

--HPS


----------



## hselasky@ (Feb 12, 2022)

Adding audio/a2jmidid .


----------

