Re: MIDI
> >TiMidity++ также можно прикрутить к ALSA и использовать вместо
> >синтезатора звуковой карты.
> >
> спасиба буду разбиратся а timidity я давно пользуюсь если надо
> mid в pcm конвертить. Просто ведь всетаки сбливе у него апаратное
> миди поетому для плея охото юзать его. И интегрировать это в
Лично мне синтез через Timidity нравится больше. Про это у меня тоже
есть рассказка, см. ниже. Никто не мешает использовать оба способа
одновременно и включать их по вкусу в разных приложениях.
> систему чтоб всякие muse работали и еще не охота чета алсовские
> дрова юзать, чета мне в свое время не понравилось отсутствие
> регулировки тембра в них так я на них и забил, хотя сейчас это
> вроде как уже есть.
Это давно есть.
Программный синтезатор для проигрывания MIDI-музыки TiMidity++
http://www.goice.co.jp/member/mo/timidity/
Для работы требуются ``патчи'' (.pat) с сэмплами для Gravis Ultrasound,
либо ``звуковые шрифты'' для карт Creative (в формате .sf2 или .sbk).
В Debian пакет с патчами называется timidity-patches. Другой набор
GUS-патчей (Eawpatches) можно найти здесь:
http://www.goice.co.jp/member/mo/timidity/
Звуковые шрифты загружаются так (следующую строку надо добавить в
конфигурационный файл):
------------------------Cut here--------------------------------------
soundfont <файл_шрифта> [order=0|1]
------------------------Cut here--------------------------------------
Если параметр `order' установлен в 0, то поиск требуемого сэмпла вначале
происходит в файле звукового шрифта, и если он не найден, то в патчах
GUS, а если в 1, то наоборот.
Можно указывать конфигурационный параметры в командной строке:
timidity -x "soundfont <файл_шрифта>" <файл.mid>
TiMidity++ может выступать в качестве клиента для секвенсера ALSA (при
установленных драйверах ALSA, само собой). Для этого надо запускать так:
timidity -iA -B2,8
В файле /proc/asound/seq/clients появится информация о клиенте TiMidity.
---------------------Start of /proc/asound/seq/clients---------------------------
Client info
cur clients : 5
peak clients : 5
max clients : 192
Client 0 : "System" [Kernel]
Port 0 : "Timer" (system:Rwe:Rwe-)
Port 1 : "Announce" (system:R-e:R-e-)
Connecting To: 63:0
Client 63 : "OSS sequencer" [Kernel]
Port 0 : "Receiver" (system:-we:-we-)
Connected From: 0:1
Output pool :
Pool size : 1024
Available cells : 1024
Cells in use : 0
Peak cells in use : 352
Alloc success : 11538
Alloc failures : 0
Alloc no-pool : 0
Client 64 : "External MIDI 0" [Kernel]
Port 0 : "MIDI 0-0" (device:RWe:RWeX)
Client 65 : "Emu10k1 WaveTable" [Kernel]
Port 0 : "Emu10k1 Port 0" (device:-We:-We-)
Port 1 : "Emu10k1 Port 1" (device:-We:-We-)
Port 2 : "Emu10k1 Port 2" (device:-We:-We-)
Port 3 : "Emu10k1 Port 3" (device:-We:-We-)
Client 128 : "Client-128" [User]
Port 0 : "TiMidity port 0" (device:-We:-We-)
Port 1 : "TiMidity port 1" (device:-We:-We-)
Input pool :
Pool size : 200
Available cells : 200
Cells in use : 0
Peak cells in use : 94
Alloc success : 591
Alloc failures : 0
Alloc no-pool : 0
---------------------End of /proc/asound/seq/clients----------------------------
Теперь можно слушать MIDI, например так:
pmidi -p128:0 <файл.mid>
Возможно также пользоваться программами, работающими с секвенсером OSS.
В файле /proc/asound/seq/oss можно узнать номер, назнвченный устройству
TiMidity:
-----------------------Start of /proc/asound/seq/oss----------------------------
OSS sequencer emulation version 0.1.8
ALSA client number 63
ALSA receiver port 0
Number of applications: 0
Number of synth devices: 1
synth 0: [Emu10k1]
type 0x1 : subtype 0x20 : voices 64
capabilities : ioctl enabled / load_patch enabled
Number of MIDI devices: 7
midi 0: [MIDI 0-0] ALSA port 64:0
capability read/write / opened none
midi 1: [Emu10k1 Port 0] ALSA port 65:0
capability write / opened none
midi 2: [Emu10k1 Port 1] ALSA port 65:1
capability write / opened none
midi 3: [Emu10k1 Port 2] ALSA port 65:2
capability write / opened none
midi 4: [Emu10k1 Port 3] ALSA port 65:3
capability write / opened none
midi 5: [TiMidity port 0] ALSA port 128:0
capability write / opened none
midi 6: [TiMidity port 1] ALSA port 128:1
capability write / opened none
------------------------End of /proc/asound/seq/oss-----------------------------
Команда
playmidi -e -D5 <файл.mid>
будет работать через TiMidity.
Музыкальный сервер для DOOM в этом случае запускается так:
musserv.bin -m -u 5
Эту команду можно поместить в скрипт `musserv' и указать на него в
параметре `musserver' конфигурационного файла (в случае lxdoom). Именно
так и сделано по умолчанию.
В Debian можно запускать TiMidity++ в этом режиме с помощью такого
скрипта:
-----------------------Start of /etc/init.d/timidity----------------------------
#! /bin/sh
#
# timidity Script for TiMidity ALSA sequencer client starting
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/timidity
NAME=timidity
DESC="TiMidity ALSA sequencer client"
ARGS="-iA -B2,8"
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --make-pidfile --pidfile
/var/run/$NAME.pid \
--background --exec $DAEMON -- $ARGS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
sh $0 stop
sh $0 start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
------------------------End of /etc/init.d/timidity-----------------------------
При этом следует запускать TiMidity от имени суперпользователя, для
того, чтобы программа могла установить себе наивысший приоритет. Иначе
возможны перерывы в проигрывании, например, при обращении к содержимому
/proc.
--
Andrey V. Kiselev
Scientific Research Center for Ecological Safety Russian Academy of Sciences
Office phone: +7 812 2307834 ICQ UIN 26871517
Reply to:
- References:
- MIDI
- From: "Sergey A. Sholokhov" <hun7er@sutd.ru>
- Re: MIDI
- From: Andrey Kiselev <dron@at1895.spb.edu>
- Re: MIDI
- From: "Sergey A. Sholokhov" <hun7er@sutd.ru>