[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: