You are not logged in.
Hi,
I am testing hatari emulator and its MIDI implementation.
The emulator uses input / outputs from /dev/snd/midiC*D* and not the logical alsa.
aplaymidi -l
Port Client name Port name
14:0 Midi Through Midi Through Port-0
This is not visible for hatari or I missed the entry in the file directory, if so where should I find it?
Using alsa, an input is visible here when connecting a physical device (Roland SC8820 in my particular case) but I am struggling to find a way to create a connection with virtual synth such as Munt or Qsynth.
I read the instruction here but was not so helping
https://hg.tuxfamily.org/mercurialroot/ … -linux.txt
any idea?
Thx
Last edited by kamelie1706 (2020-05-25 21:19:19)
Offline
As the instructions you linked to imply, you need to start the relevant virtual synth beforehand
Offline
Did that but no entry appears in /dev/snd...
Offline
... and load snd-virmidi which should create cards there (but if I'm reading that correctly it should be able to access the logical midi outs if it's compiled with portmidi/portaudio which the Arch package should be, but at least the in GUI possibilities really look quite bent on actual devices).
Last edited by V1del (2020-05-24 14:03:07)
Offline
Thx
I need to check if this module is loaded.
I believe the Hatari arch package is not compiled with port audio option. It returns an error when you try to launch it with —midi argument.
Last edited by kamelie1706 (2020-05-24 14:34:46)
Offline
So now I have virtual port set and visibile in /dev/snd
aconnect -l
client 0: 'System' [type=kernel]
0 'Timer '
Connecting To: 128:0
1 'Announce '
Connecting To: 128:0
client 14: 'Midi Through' [type=kernel]
0 'Midi Through Port-0'
client 16: 'Virtual Raw MIDI 0-0' [type=kernel,card=0]
0 'VirMIDI 0-0 '
client 17: 'Virtual Raw MIDI 0-1' [type=kernel,card=0]
0 'VirMIDI 0-1 '
client 18: 'Virtual Raw MIDI 0-2' [type=kernel,card=0]
0 'VirMIDI 0-2 '
client 19: 'Virtual Raw MIDI 0-3' [type=kernel,card=0]
0 'VirMIDI 0-3 '
client 128: 'PipeWire-System' [type=user,pid=1657]
0 'input '
Connected From: 0:1, 0:0
client 129: 'PipeWire-RT-Event' [type=user,pid=1657]
ls -l /dev/snd | grep midi
crw-rw----+ 1 root audio 116, 2 May 24 18:48 midiC0D0
crw-rw----+ 1 root audio 116, 3 May 24 18:48 midiC0D1
crw-rw----+ 1 root audio 116, 4 May 24 18:48 midiC0D2
crw-rw----+ 1 root audio 116, 5 May 24 18:48 midiC0D3
How do I connect now the dots between fluidsynth and those virtual ports in alsa?
Request opened for having hatari compiled with portMidi support
https://bugs.archlinux.org/task/66764
Last edited by kamelie1706 (2020-05-24 16:59:45)
Offline
I think I can go around the midi connection here
https://tldp.org/HOWTO/MIDI-HOWTO-10.html
In munt situation is different I realize now that there 2 other midi ports munt allows as input
/dev/midi
/dev/midi3
hatari can be set to write there but nothing arrives to munt
I will dig the tldp article as I am not sure to master the difference between alsa raw and alsa seq ...
For later ref this the current setup
cat /proc/asound/cards
0 [VirMIDI ]: VirMIDI - VirMIDI
Virtual MIDI Card 1
1 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xf6080000 irq 118
2 [Generic ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xf6800000 irq 120
3 [SC8820 ]: USB-Audio - SC-8820
Roland SC-8820 at usb-0000:02:00.0-6.7.4, full speed
cat /proc/asound/devices
1: : sequencer
2: [ 0- 0]: raw midi
3: [ 0- 1]: raw midi
4: [ 0- 2]: raw midi
5: [ 0- 3]: raw midi
6: [ 0] : control
7: [ 1- 3]: digital audio playback
8: [ 1- 7]: digital audio playback
9: [ 1- 8]: digital audio playback
10: [ 1- 9]: digital audio playback
11: [ 1-10]: digital audio playback
12: [ 1-11]: digital audio playback
13: [ 1- 0]: hardware dependent
14: [ 1] : control
15: [ 2- 0]: digital audio playback
16: [ 2- 0]: digital audio capture
17: [ 2- 1]: digital audio playback
18: [ 2- 2]: digital audio capture
19: [ 2- 0]: hardware dependent
20: [ 2] : control
21: [ 3- 0]: raw midi
22: [ 3] : control
33: : timer
aconnect -o
client 14: 'Midi Through' [type=noyau]
0 'Midi Through Port-0'
client 16: 'Virtual Raw MIDI 0-0' [type=noyau,card=0]
0 'VirMIDI 0-0 '
client 17: 'Virtual Raw MIDI 0-1' [type=noyau,card=0]
0 'VirMIDI 0-1 '
client 18: 'Virtual Raw MIDI 0-2' [type=noyau,card=0]
0 'VirMIDI 0-2 '
client 19: 'Virtual Raw MIDI 0-3' [type=noyau,card=0]
0 'VirMIDI 0-3 '
client 28: 'SC-8820' [type=noyau,card=3]
0 'SC-8820 Part A '
1 'SC-8820 Part B '
2 'SC-8820 MIDI '
client 130: 'Munt MT-32' [type=utilisateur,pid=5847]
0 'Standard '
.... end Voila:
- create connection between virtual port 16:0 to munt input 130:0 => aconnect 16:0 130:0
- setting hatari to use raw midi output to virtual midi card input /dev/snd/midiC0D0
- setting munt to output to pulseaudio
- pulseaudio connecting to bluetooth headset
Pipelines are there but sound is totally crap or huge latency ... for sure room for optimization!
Of course no issue when connecting to the physical SC8820...
Maybe no hope to get something stable without Jack? But then I loose a way to connect to my bluetooth headset?
Last edited by kamelie1706 (2020-05-25 21:08:46)
Offline
Nice to see you got software midi working, but building hatari yourself with portmidi support seems much simpler.
Use asp[1] to retrieve the official pkgbuild
Edit the PKGBUILD
change pkgname to hatari-portmidi (or similar)
add portmidi to makedepends array & as optdepend *
build package, install .
run hatari --midi true and verify everything works.
[1] https://wiki.archlinux.org/index.php/Ar … _using_Git
* it's possible portmidi should be a hard dependency and not an optional one, but makedepend & optdepend seems most logical choice.
Last edited by Lone_Wolf (2020-05-26 18:05:24)
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
(A works at time B) && (time C > time B ) ≠ (A works at time C)
Offline
Thx
I might try that!
Offline