![[Guido Socher]](../../common/images/Guido-S.gif) 
original in en Guido Socher
en to nl Stefan Malomgré
Guido houdt niet alleen van Linux omdat het leuk is de eindeloze mogelijkheden ervan te ontdekken, maar ook omwille van de mensen die zich toeleggen op de vormgeving van het systeem.
Midi is een bestandsformaat dat geen gesampelde digitale klank bevat
 maar een beschrijving van hoe die klank moet worden geproduceerd. Je zou
 het kunnen vergelijken met een muziekpartituur, waarop iedere noot de
 symbolische voorstelling van een toon is. Midibestanden zijn daarom zeer
 licht in vergelijking met wav-bestanden.
 Om het midiformaat in geluid om te zetten heeft u een midisynthesizer
 nodig.  Dat is een stuk hardware of software dat gebruik maakt van digitale
 geluidsstalen (samples) van  een instrument  (bv. een piano) om klanken
 te genereren.  Deze geluidsstalen staan als "soundfont" bekend.
 In dit artikel bekijken we van naderbij hoe u Alsa (advanced linux sound
 architecture) als midi-synthesizer interface gebruikt.
![[Illustratie]](../../common/images/article259/miditux.gif) 
Tot enkele jaren geleden kon je in elke computerzaak bekende geluidskaarten
 verkrijgen zoals "Gravis UltraSound" of "SoundBlaster Gold". Beide kaarten
 hadden een geïntegreerde hardware-midisynthesizer. Helaas zijn
 deze kaarten niet meer te koop en zelfs al waren ze nog verkrijgbaar, ze zouden
 niet meer in de huidige computers passen omdat het om ISA-bus kaarten ging.
 De huidige computers gebruiken een PCI-busaansluiting en hebben vaak een
 on-board geluidskaart die geïntegreerd is in de chipset. Bijna geen van
 deze chipsets ondersteunt midisynthese. Als u een blik werpt op 
 de lijst van  geluidskaarten die door Alsa worden ondersteund  zal
 u zich ongetwijfeld  afvragen welke kaart de beste koop is. Helaas is de
 keuze eenvoudiger dan op het eerste gezicht lijkt. Momenteel is er maar
 één kaart in de handel die midisynthese ondersteunt nl. Soundblaster
 Live.
 Indien u geen Soundblaster Live bezit kan u midisynthese uitvoeren met
 behulp van software emulatoren en ik zal uitleggen hoe dat in zijn werk
 gaat.
Alsa bevindt zich momenteel in een overgangsfase. De stabiele
 versie 0.5 geraakt langzamerhand wat gedateerd en de versie 0.9 zit
 nog in een ontwikkelingsstadium. Als u miditoepassingen wenst te gebruiken
 heeft u de versie 0.5 nodig omdat er voor de versie 0.9 nauwelijks toepassingen
 bestaan en de interfaces van 0.5 en 0.9 niet compatibel zijn. (Let wel:
 PCM gesampled geluid, wav-bestanden en toepassingen gebaseerd op gesampled
 geluid vormen voor de versie 0.9 geen probleem; ik heb het hier uitsluitend
 over midi.)
 De programmatpakketten voor de versie 0.5 zijn:
tar jxvf alsa-driver-0.5.12a.tar.bz2
cd alsa-driver-0.5.12a
./configure --with-sequencer=yes --with-oss=yes     --with-isapnp=no
make
make install
./snddevices
modprobe snd-card-emu10k1
modprobe snd-synth-emu10k1
modprobe snd-seq-midi
modprobe snd-pcm-oss
modprobe snd-mixer-oss
modprobe snd-seq-oss
![[alsamixer]](../../common/images/article259/alsamixer.gif) 
/usr/sbin/alsactl store
Ga vervolgens over tot hetafspelen van flute.wav
om een toon te horen. Is dit niet het geval ga dan naar /proc/asound en verifieer /proc/asound/devices en /proc/asound/oss-devices. Er zou normaal "mixer" en "digital audio" moeten staan ( mijn bestanden)./bin/sfxload /etc/midi/8MBGMSFX.SF2
Een uitstekend testprogramma is pmidi (zie verwijzingen). Het commandoPort Client name Port name
               64:0 External MIDI 0 MIDI 0-0
               65:0 Emu10k1 WaveTable Emu10k1 Port 0
               65:1 Emu10k1 WaveTable Emu10k1 Port 1
               65:2 Emu10k1 WaveTable Emu10k1 Port 2
               65:3 Emu10k1 WaveTable Emu10k1 Port 3
pmidi -p 65:0 test.mid
en het midigeluid zou nu te horen moeten zijn.CFLAGS = -O3 -mpentium -march=pentium     -fomit-frame-pointer
    \
               -funroll-all-loops -malign-double -ffast-math
./configure --enable-ncurses --enable-xaw     --enable-spectrogram
    --enable-xaw=dynamic     --enable-audio=oss,alsa --enable-alsaseq
--prefix=/usr/local/timidity-2.11.3
               make
               make install
cd /usr
               find share/timidity -print | cpio -dump     /usr/local/timidity-2.11.3
/usr/local/timidity-2.11.3/bin/timidity -iA     -B2,8 -Os
    -EFreverb=0
               TiMidity starting in ALSA server mode
               set SCHED_FIFO
               Opening sequencer port: 128:0 128:1
              
Port Client name Port name
               128:0 Client-128 TiMidity port 0
               128:1 Client-128 TiMidity port 1
              
pmidi -p 128:0 test.mid
muziek produceren.alias char-major-116 snd
               alias char-major-14 soundcore
               alias snd-card-0 snd-card-emu10k1
               alias sound-slot-0 snd-card-0
               alias sound-service-0-0 snd-mixer-oss
               alias sound-service-0-1 snd-seq-oss
               alias sound-service-0-3 snd-pcm-oss
               alias sound-service-0-8 snd-seq-oss
               alias sound-service-0-12 snd-pcm-oss
               alias midi snd-synth-emu10k1
               below snd-seq-oss snd-synth-emu10k1
               post-install snd-synth-emu10k1 /bin/sfxload     /etc/midi/8MBGMSFX.SF2
    ; alsactl restore
               # uncomment to save volume settings at shutdown:
               #pre-remove snd-synth-emu10k1 alsactl store
              
alias char-major-116 snd
               alias char-major-14 soundcore
               alias snd-card-0 snd-card-via686a
               alias sound-slot-0 snd-card-0
               alias sound-service-0-0 snd-mixer-oss
               alias sound-service-0-3 snd-pcm-oss
               alias sound-service-0-12 snd-pcm-oss
               # restore original mixer:
               post-install snd-card-via686a alsactl restore
               # uncomment to save volume settings at shutdown:
               #pre-remove snd-synth-emu10k1 alsactl store
              
echo "starting timidity"
               timidiy=/usr/local/timidity-2.11.3/bin/timidity # do not
   forget    the "&" in the next line:
               $timidity -iA -B2,8 -Os -EFreverb=0 > /dev/null &
              
![[kmid]](../../common/images/article259/kmid_th.gif) In dit artikel hebben we het programma pmidi gebruikt om midibestanden
 af te spelen. KDE bevat het programma kmidkmid (niet te verwarren met kmidi)
 dat u met of zonder alsa-ondersteuning kan compileren.   Redhat heeft het
 uitsluitend voor OSS gecompileerd, terwijl Mandrake en Suse Alsa gebruiken.
  De Mandrakebestanden kunnen evenwel onder Redhat worden gebruikt.
         In dit artikel hebben we het programma pmidi gebruikt om midibestanden
 af te spelen. KDE bevat het programma kmidkmid (niet te verwarren met kmidi)
 dat u met of zonder alsa-ondersteuning kan compileren.   Redhat heeft het
 uitsluitend voor OSS gecompileerd, terwijl Mandrake en Suse Alsa gebruiken.
  De Mandrakebestanden kunnen evenwel onder Redhat worden gebruikt.