Pagina 1 di 1

Emulazione MIDI Sequencer con TiMidity

Inviato: sab 18 feb 2006, 4:01
da phobos3576
Visto che molti utenti hanno ancora dei problemi, ecco l'ennesimo tutorial per chi vuole sentire i MIDI su schede audio prive di sequencer; il tutorial fa riferimento, per comodità, alla Sound Blaster 128 PCI.

Prima di tutto il Kernel.
Da utenti root provate a dare un

Codice: Seleziona tutto

modprobe snd-seq-oss
Se ottenete un messaggio di errore, dovete ricompilare il kernel con il supporto ALSA, e l'emulazione del sequencer e di OSS; l'emulazione Sequencer permette di creare i dispositivi del tipo /dev/sequencer,

Le opzioni da utilizzare per il kernel sono le seguenti

Codice: Seleziona tutto

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
CONFIG_SND_VERBOSE_PRINTK=y
# CONFIG_SND_DEBUG is not set
CONFIG_SND_GENERIC_DRIVER=y

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
CONFIG_SND_SERIAL_U16550=m
CONFIG_SND_MPU401=m
Per caricare i moduli all'avvio di Linux, la funzione load_alsa_oss_modules()
nel file /etc/rc.d/rc.alsa deve essere configurata in questo modo (esempio per
la SB 128 PCI):

Codice: Seleziona tutto

# A function to load the ALSA OSS compat modules:
load_alsa_oss_modules() {
  if ! cat /proc/modules | grep -w snd-pcm-oss 1> /dev/null 2> /dev/null ; then
    echo "Loading OSS compatibility modules for ALSA."
    modprobe snd-ens1371
    modprobe snd-pcm-oss
    modprobe snd-mixer-oss
    modprobe snd-seq-oss
  fi
}
Installazione di TiMidity, delle fonti sonore e di timidity.cfg

Controllate se in /usr/share è presente la directory timidity
contenente le fonti sonore e il file timidity.cfg.

In caso contrario, scaricare il file timidity.tar.gz (14 Mb) da questo link: http://www.djcj.org/LAU/timidity.tar.gz
(in genere, questo file è già incorporato negli Slack Package di TiMidity).

Prima di tutto, il file timidity.tar.gz deve essere decompresso in /usr/share
in modo da ottenere /usr/share/timidity (che contiene le fonti sonore e il file
timidity.cfg).

Se TiMidity è già installato, provate a dare il seguente comando dalla console:

Codice: Seleziona tutto

timidity -iA -B3,9 -Os
Se ottenete un messaggio di errore, dovete reinstallare solamente
l'eseguibile /usr/bin/timidity.
In tal caso, dal sito ufficiale http://timidity.sourceforge.net/
scaricare TiMidity++-2.13.2.tar.bz2 (source code)

Decomprimiamo ora TiMidity++-2.13.2.tar.bz2 in una directory temporanea (ad
esempio, /root/Temp).
Apriamo una console e andiamo in /root/Temp/TiMidity++-2.13.2

Impartiamo i soliti comandi

Codice: Seleziona tutto

./configure --prefix=/usr --enable-audio=alsa --enable-alsaseq --enable-dynamic --enable-gtk
make
make install
(le opzioni fondamentali sono --prefix=/usr e --enable-alsaseq)

A questo punto possiamo abilitare il server TiMidity con il comando:

Codice: Seleziona tutto

timidity -iA -B3,9 -Os -EFresamp=l
(per il buffer size e il fragment size si possono provare altri valori - Il valore di EFresamp è una lettera "elle")

Dovrebbero comparire le seguenti informazioni:

Codice: Seleziona tutto

Requested buffer size 6144, fragment size 2048
ALSA pcm 'default' set buffer size 60208, period size 3760 bytes
TiMidity starting in ALSA server mode
Opening sequencer port: 128:0 128:1 128:2 128:3
Come si può notare, TiMidity ha aperto 4 porte MIDI!

Ora apriamo una applicazione MIDI come, ad esempio, KMidi.
Selezionando il menu Impostazioni - Impostazioni MIDI ... dovremmo trovare
delle porte del tipo TiMidity TiMidity port 0 - ALSA device.

Selezionando la porta 0 dovremmo ora essere in grado di sentire i file MIDI.

P.S.

Attenzione al parametro predefinito -EFresamp=g (Gauss resample algorithm);
sulle CPU meno potenti tale parametro può provocare una notevole distorsione
del suono!

Inviato: sab 18 feb 2006, 13:11
da touchstyle
Impeccabile. 8)

Copialo ed incollalo in un how-to ed entrerai a far parte dell'olimpo dei Sapienti.
Prima però mandalo a Lorys...
:wink:

Grazie,
Touch.

Inviato: sab 18 feb 2006, 23:30
da phobos3576
Ho scordato di scrivere che per eseguire TiMidyty come ALSA server daemon (in background), bisogna aggiungere l'opzione D al parametro i; ad esempio:

Codice: Seleziona tutto

timidity -iAD -B3,9 -Os -EFresamp=l

Inviato: sab 18 feb 2006, 23:39
da phobos3576
Se volete divertirvi con il karaoke su KMid potete scaricare dei brani dal
sito dello stesso sviluppatore di KMid:

http://perso.wanadoo.es/antlarr/midifiles.html

In particolare, ai programmatori consiglio di scaricare Another glitch in the call
(un altro intoppo nella chiamata di funzione) per farsi quattro risate.

Inviato: ven 31 mar 2006, 20:08
da IceSlack
umm per xmm-timidity?

non riesco a sentire i midi ma xmms li visualizza e li manda in play facnedo passare i secondi, con timidity va da dio..............

Inviato: sab 1 apr 2006, 10:00
da touchstyle
IceSlack ha scritto:umm per xmm-timidity?

non riesco a sentire i midi ma xmms li visualizza e li manda in play facnedo passare i secondi, con timidity va da dio..............
Hai provato a configurare il plugin?

Inviato: sab 1 apr 2006, 11:17
da IceSlack
umm gli ho dato il path di dove si trova la config e vabbe' stereo mono 44 mhz e basta non c'e' molto da configurare

Inviato: ven 15 giu 2007, 19:16
da tojo72
riesumo il topic (prima di sentirmi dire "fai una ricerca" ;) )

premesso che mi funziona tutto
premesso che ho proprio la Sound Blaster 128 PCI riportata nell'esempio
volevo chiedere questo:

ho un pc piuttosto antico (PIII 450mhz + 320MB di ram), sapreste darmi i parametri giusti per evitare che il suono salti???
per essere piu' chiaro, non e' che salta durante la riproduzione vera e propria, salta se mentre ascolto il midi apro o chiudo finestre o compio altri gesti innoqui come questo

Inviato: ven 15 giu 2007, 19:26
da gohanz
tojo72 ha scritto:riesumo il topic (prima di sentirmi dire "fai una ricerca" ;) )

premesso che mi funziona tutto
premesso che ho proprio la Sound Blaster 128 PCI riportata nell'esempio
volevo chiedere questo:

ho un pc piuttosto antico (PIII 450mhz + 320MB di ram), sapreste darmi i parametri giusti per evitare che il suono salti???
per essere piu' chiaro, non e' che salta durante la riproduzione vera e propria, salta se mentre ascolto il midi apro o chiudo finestre o compio altri gesti innoqui come questo
Non credo che tu possa fare molto, anche sul mio pc con un AtlhonXp 1800 e 512 Mega, la cpu è occupata al 90% nella conversione midi > wav!
Ti occorre per forza di cosa una scheda sonora con sintesi midi in hardware

Inviato: ven 15 giu 2007, 19:30
da tojo72
beh qui spezzo una lancia a favore del "vecchio" win98!!!
sullo stesso pc i midi se li mangia come le noccioline ;)

va beh... grazie per la risposta :D