Annotation of hatari/doc/alsa-midi.txt, revision 1.1.1.2

1.1       root        1: 
                      2: Getting (Linux) ALSA midi support to work with Hatari
                      3: =====================================================
                      4: 
                      5: If you don't have a real MIDI sequencer, use a software synthetizer.
                      6: For links to software referenced in this text, see end of the text.
                      7: Most of the distros should have in their repositories packages at
                      8: least for some of them though.
                      9: 
                     10: There are also some notes about midi networking.
                     11: 
                     12: 
                     13: Making MIDI soft-synthetizer to work with ALSA
                     14: -----------------------------------------------
                     15: 
                     16: Make Timidity into an ALSA output device with:
                     17:   timidity -Os -iA
                     18: (-O: output=alsa, -i: interface=alsa)
                     19: 
                     20: To make it use less CPU and be more responsive, use:
                     21:   timidity -Os -iA -B2,8 -EFreverb=0 -EFchorus=0
                     22: (-B: 2,8=set small buffers, -EFx=0: disable effects)
                     23: 
                     24: Make vkeybd (virtual midi keyboard app) into an ALSA input device with:
                     25:   vkeybd
                     26: 
                     27: View the resulting (software) ALSA input and output devices:
                     28:   aconnect -i -o
                     29: 
                     30: Then connect the vkeybd input to timidity output with:
                     31:   kaconnect
                     32: or if you don't have this UI program, just use 'aconnect' directly:
                     33:   aconnect <sender port> <receiver port>
                     34: 
                     35: Now you can use the virtual midi keyboard for testing the sound
                     36: synthesis.
                     37: 
                     38: 
                     39: Finally You can test how well midi files are played.
                     40: Check which ALSA port Timidity provides:
                     41:   aplaymidi -l
                     42: 
                     43: And use that port for playing a midi file:
                     44:   aplaymidi -p <port, e.g. 129:0> test.mid
                     45: (or use 'pmidi')
                     46: 
                     47: Note: Remember that you need to re-connect the (virtual) device
                     48: ports each time you restart them.
                     49: 
                     50: 
                     51: Using FluidSynth instead of Timidity
                     52: ------------------------------------
                     53: 
                     54: Instead of Timidity, you also use other soft-synthetizers,
                     55: like FluidSynth:
                     56:   fluidsynth --audio-driver=alsa --midi-driver=alsa_seq soundfont.sf2
                     57: 
                     58: You could play a bit with other options to get more performance,
                     59: sound volume etc:
                     60:   --reverb=no --chorus=no -o synth.polyphony=16 --gain=0.6
                     61: 
                     62: And if you don't like the FluidSynth shell, use:
                     63:   --no-shell --server
                     64: 
1.1.1.2 ! root       65: FYI: FluidSynth v1.0.7a (in Debian Etch & Ubuntu Hardy) has buffer
        !            66: overruns, but they're fixed in v1.0.8 (in Debian Lenny etc).
1.1       root       67: 
                     68: 
                     69: Making it all to work with Hatari
                     70: ---------------------------------
                     71: 
                     72: Hatari requires midi hardware devices to work, it doesn't support
                     73: ALSA directly.  To get the software synth ALSA devices to appear
                     74: as HW midi devices, run following as *root*:
                     75:   modprobe snd-virmidi
                     76: 
1.1.1.2 ! root       77: When you list your ALSA output devices with:
1.1       root       78:   aconnect -o
                     79: You should see in addition to Timidity also 4 virtual hardware
                     80: devices.
                     81: 
                     82: Then connect (either with aconnect or kaconnect) the first virtual
                     83: HW port to the same Timidity port where you connected the virtual
                     84: midi keyboard.
                     85: 
1.1.1.2 ! root       86: Check which number was assigned by ALSA to the new virtual midi card:
1.1       root       87:   cat /proc/asound/cards
                     88: 
                     89: And give to Hatari the corresponding ALSA midi device.  In my case
                     90: VirMidi was Card 1 and as the port used above was first one, I give
                     91: Hatari the following midi device:
                     92:   hatari --midi /dev/snd/midiC1D0
                     93: 
                     94: Note: I also needed --nosound option because Hatari wanted exclusive
                     95: access to the PCM (sound) device and Timidity was already connected
                     96: to it.  This may not be the case if you've compiled Hatari with another
                     97: / newer SDL_mixer library versions.
                     98: 
                     99: 
                    100: Sending the midi data over network
                    101: ----------------------------------
                    102: 
                    103: If you direct the data to stdout, you can use e.g. ssh to pipe
                    104: it over network:
                    105:   hatari --midi /dev/stdout --log /dev/stderr |\
                    106:     ssh [email protected] "cat>/dev/snd/midiC1D0"
                    107: 
                    108: Note that logging is re-directed to stderr so that it doesn't
                    109: mess the midi output.
                    110: 
                    111: Same can be done with socat so that the connections are bi-directional.
                    112: Once Hatari supports midi input, you can use socat like this to do
                    113: midi-networking between (emulated) Ataris:
                    114:   @remote.site:
                    115:     socat PIPE:redirect.pipe TCP4-LISTEN:www
                    116:     hatari --midi redirect.pipe --log stderr
                    117:   @local.site:
                    118:     socat PIPE:redirect.pipe TCP4:remote.site:www
                    119:     hatari --midi redirect.pipe --log stderr
                    120: 
                    121: 
                    122: Links
                    123: -----
                    124: 
                    125: Software:
                    126: 
                    127: Vkeybd:
                    128:   http://alsa.opensrc.org/Vkeybd
                    129: 
                    130: Patch (ALSA connecting) utilities:
                    131:   http://alsa.opensrc.org/AlsaMidiPatchbays    
                    132: 
                    133: FluidSynth:
                    134:   http://www.iiwu.org/fluidsynth/
                    135: 
                    136: Soundfonts:
                    137:   http://alsa.opensrc.org/SoundFontHandling
                    138: 
                    139: List of some soft-synthetizers:
                    140:   http://alsa.opensrc.org/SoftSynths
                    141: 
                    142: socat:
                    143:   http://www.dest-unreach.org/socat/
                    144: 
                    145: MidiMaze:
                    146:   http://en.wikipedia.org/wiki/MIDI_Maze
                    147: 
                    148: 
                    149: Overviews:
                    150: 
                    151: ALSA midi overview:
                    152:   http://alsa.opensrc.org/AlsaMidiOverview
                    153: 
                    154: Virtual midi hardware setup:
                    155:   http://www.tldp.org/HOWTO/MIDI-HOWTO-10.html
                    156: 
                    157: Timidity Howto:
                    158:   http://lau.linuxaudio.org/TiMidity-howto.html
                    159: 
                    160: Midi with ALSA (old):
                    161:   http://www.linuxfocus.org/English/September2002/article259.shtml
                    162: 
                    163: Midi on Linux:
                    164:   http://www.linuxjournal.com/article/7773

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.