Lf259, aplicațiile folosesc alsa pentru a reda fișiere midi

Traducerea în limba rusă:
Kirill Pukhlyakov

Folosim alsa pentru a reda fișiere midi.

Midi este un format de fișier muzical care nu conține sunete, ci descrie modul în care se redă sunetul. Acest lucru poate fi comparat cu o foaie de muzică, în care fiecare notă este o reprezentare simbolică a sunetului. Fișierele Midi sunt de dimensiuni mici, în comparație, de exemplu, cu fișierele wav.







Pentru a converti un fișier midi într-un sunet, aveți nevoie de un sintetizator midi. Sintetizatorul poate fi atât la nivelul dispozitivului, cât și la nivelul software-ului - de fapt, este un set de sunete ale unui instrument (de exemplu, un pian) pentru a juca pe cel dorit. Aceste seturi de sunete sunt mai bine cunoscute ca "soundfont".

După ce ați citit nota, veți învăța cum să utilizați Alsa (arhitectura de sunet avansată linux) ca un sintetizator midi.
_________________ _________________ _________________

Pentru început.

Cu doar câțiva ani în urmă, cărți de sunet precum "Gravis UltraSound" sau "SoundBlaster Gold" au fost vândute în orice magazin de calculatoare. În aceste cărți, s-a realizat un sintetizator midi. Dar, din păcate, în prezent, aceste carduri nu cumpara, dar chiar dacă le obține în cazul în care - găsi vreodată - acestea sunt puțin probabil să se potrivească la noul computer, deoarece pentru munca lor nevoie de ISA autobuz, în timp ce utilizarea modernă PCI sau Un cip de sunet poate fi la bordul plăcii dvs. de bază. Dar cu greu aceste chips-uri realizează sintetizatorul midi. Uită-te la lista de carduri de sunet acceptate de alsa. De fapt, astăzi singura placă de sunet care realizează sintetizatorul midi, pe care o puteți cumpăra într-un magazin de calculatoare - este Soundblaster live.

Dacă nu aveți o astfel de carte - trebuie să vă simulați cu ajutorul software-ului, despre care vă voi spune.

Ce avem nevoie

În prezent, proiectul Alsa se află într-o fază de tranziție. Versiunea stabilă este de 0,5, iar noul 0.9 este în curs de dezvoltare. Dacă doriți să utilizați midi - aplicații cu ALSA - vă o mai bună utilizare versiunea 0.5, pentru că acum chiar și, probabil, nici o cerere pentru versiunea 0.9 și, de asemenea între versiunile interfețelor 0,5 și 0,9 compatibile (nota: referindu-se la problema versiunii 0.9, vreau să spun doar midi, fără fișiere wav, nici PCM nu au astfel de probleme).
Pentru versiunea 0.5, sunt necesare următoarele pachete.
  • alsa-driver-0.5.12a.tar.bz2
  • alsa-lib-0.5.10b.tar.bz2
  • alsa-utils-0.5.10.tar.bz2
Informații despre cum să compilați alsa veți găsi în alsa howto (vezi referințele). În general, este necesar să executați următoarea comandă.

tar jxvf alsa-driver-0.5.12a.tar.bz2
cd alsa-driver-0.5.12a
./ configure - cu-sequencer = da - cu-oss = da - cu-isapnp = nu
face
face instalare
./ snddevices

pentru driver și "./configure;make;make install" pentru orice altceva.

După instalare, puteți încărca modulele în kernel. Pentru un live soundblaster (= cip emu10k1), trebuie să faceți acest lucru.

modprobe snd-card-emu10k1
modprobe snd-synth-emu10k1
modprobe snd-seq-midi
modprobe snd-pcm-oss
modprobe snd-mixer-oss
modprobe snd-seq-oss

Pentru alte carduri, pur și simplu înlocuiți primele două linii cu module pentru cardul dvs. (de exemplu, snd-card-via686a pentru cardul încorporat bazat pe chipset-ul 686). Mandrake și Suse acceptă alsa și puteți, de asemenea, să recunoașteți cardul și să îl configurați cu aplicațiile incluse în distribuție (harddrake și yast2). Dacă nu cunoașteți chipsetul calculatorului, puteți încerca comanda "lspci -v" (lspci este inclus în pachetul pciutils).

Acum este momentul să verificați modul în care funcționează sunetul. Rulați programul
alsamixer
și apăsați "m" pentru a detona nivelul de master și pcm și apoi utilizați săgețile pentru a schimba nivelul. Apăsați Esc pentru a renunța la alsamixer când totul este bifat.







Pentru a salva setările în /etc/asound.conf, executați comanda

și auzi un sunet. Dacă nu există sunet, uitați-vă la fișierele / proc / asound / devices și / proc / asound / oss-devices. Ar trebui să existe "mixer" și "audio digital" (fișierele mele).

A fost un test pentru emularea și sunetul pcm oss. Apoi, voi explica cum să adăugați toate acestea în /etc/modules.conf, astfel încât să se facă totul automat, dar acum trebuie să facem munca midi.

O aplicație bună pentru testare este pmidi (a se vedea referințele). urmări
pmidi -l
Veți vedea următoarele pe ecran.

Nume port Nume port Nume port
64: 0 MIDI extern 0 MIDI 0-0
65: 0 Emu10k1 Portul WaveTable Emu10k1 0
65: 1 Portul Emu10k1 Emu10k1 WaveTable Emu10k1
65: 2 Emu10k1 Portul Emu10k1 WaveTable 2
65: 3 Emu10k1 Portul Emu10k1 WaveTable 3

și veți auzi un sunet din fișierul dvs. midi. Se răcește!

Folosim TiMidity ca sintetizator de software

Acum puteți adăuga o varietate de interfețe grafice pentru timiditate, dar primul lucru de care avem nevoie - este opțiunea „--enable-alsaseq“, mai ales din moment ce nu ne împiedică să adăugați alte opțiuni, în special interfețe.

/ configure -enable-ncurses -enable-xaw -enable-spectrogram -enable-xaw = dinamic -enable-audio = oss, alsa -enable-alsaseq -prefix = / usr / local / timidity-2.11 .3
face
face instalare

Cu aceste manipulări, am setat timiditatea în /usr/local/timidity-2.11.3/bin, lăsând instalarea neatinsă. Am reinstalat timiditatea, pentru că nu am întâlnit o singură distribuție Linux până acum, în care interfața alsaseq ar fi instalată în mod implicit.
Pentru timiditate, aveți nevoie de sunet. Acum, ele sunt numite și fișiere instrumentale. Un set bun și complet de fișiere de instrumente este destul de mare (aproximativ 10 MB). Cel mai simplu mod de a le obține - setarea timiditatea ++ de pe CD-ul de distribuție și de a copia fișierele de acolo (de exemplu, timiditatea ++ - descărcare 2.11.3-1.i386.rpm pentru RedHat 7.3). Pentru a copia fișierele din / usr / share / timiditatea / instrumente în /usr/local/timidity-2.11.3/share/timidity/instruments urmează.

cd / usr
gasiti share / timidity -print cpio -dump /usr/local/timidity-2.11.3

Acum suntem gata să testăm rădăcina timidității:

/usr/local/timidity-2.11.3/bin/timidity -iA -B2,8 -Os -EFreverb = 0
TiMiditatea începe în modul server ALSA
setați SCHED_FIFO
Port de secvență de deschidere: 128: 0 128: 1

și apoi pmidi-l:

Nume port Nume port Nume port
128: 0 Port-TiMiditate Client-128 0
128: 1 Port-TiMiditate Client-128 1

Ops, acum avem 2 porturi cu sintetizator TiMidity.
acum

și ascultați fișierul midi.

/etc/modules.conf

Dacă aveți o placă de sunet viu, puteți adăuga aceste linii în fișierul /etc/modules.conf pentru a configura și încărca automat modulele.

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-emu10k1
alias sunet-slot-0 snd-card-0
alias sunet-service-0-0 snd-mixer-oss
alias sunet-service-0-1 snd-seq-oss
alias sunet-service-0-3 snd-pcm-oss
alias sunet-service-0-8 snd-seq-oss
alias sunet-service-0-12 snd-pcm-oss
alias midi snd-synth-emu10k1
sub snd-seq-oss snd-synth-emu10k1
post-instalare snd-synth-emu10k1 / bin / sfxload /etc/midi/8MBGMSFX.SF2; alsactl restaura
#depentru a salva setările de volum la închidere:
# pre-eliminați magazinul snd-synth-emu10k1 alsactl

Pentru carduri fără un sintetizator midi, de exemplu pentru built-in via686.

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-via686a
alias sunet-slot-0 snd-card-0
alias sunet-service-0-0 snd-mixer-oss
alias sunet-service-0-3 snd-pcm-oss
alias sunet-service-0-12 snd-pcm-oss
# restaura mixerul original:
post-instalare snd-card-via686a alsactl restabili
#depentru a salva setările de volum la închidere:
# pre-eliminați magazinul snd-synth-emu10k1 alsactl

Pentru timidiy de pornire propun să adăugați următoarea linie în fișierul /etc/init.d/alsasound (script-ul este instalat cu driverul, dar nu este activat). Pentru a activa, utilizați comanda chkconfig

ecou "timiditate de pornire"
timidiy = / usr / local / timiditate-2.11.3 / bin / timiditate # nu uita "" în următorul rând:
$ timiditate -iA -B2,8 -Os -EFreverb = 0> / dev / null

Utilizați alsa și midi

Există aplicații cum ar fi timiditatea (timiditatea - care lansează interfața gtk) sau kmidi (nu confundați cu kmid), care are un sintetic moale construit. În acest caz, nu aveți nevoie de un sintetizator midi, fie la nivel de dispozitiv, fie la nivel de kernel. Dar, în general, este de preferat să existe un singur Midi api, decât unul separat în fiecare aplicație.

În prezent, Alsa suferă modificări majore. Așa cum sa spus anterior - versiunea 0.9 nu funcționează cu multe aplicații, dar versiunea 0.5 nu este, de asemenea, fără probleme. În special, emularea de secvențe OSS (/ dev / sequencer) nu funcționează, operarea normală este posibilă numai cu carduri de sunet vechi, care sunt acum destul de greu de cumpărat. Poate că ceva se va schimba odată cu lansarea versiunii 0.9. Această notă vă va fi utilă în viitor - pentru versiunea 0.9, va trebui să fiți atenți la numele modulelor - poate că acestea se vor schimba și nu vor fi aceleași ca în versiunea 0.5. Dar ideea principală va fi aceeași.

Pagină de feedback







Trimiteți-le prietenilor: