LINUX.ORG.RU

Шел 2016 год. Я когда-нибудь услышу MIDI в LINUX?

 ,


0

1

Сегодня потребовалось прослушать несколько midi файлов в Linux Debian 8.2.

В системе давно установлен Rosegarden, в котором никогда звука не слышал. В системе есть timidity.

Запускаю timidity, проверяю что он висит как демон:

ps aux | grep timi
timidity  3482  0.0  0.1  20220  7288 ?        S    09:28   0:00 /usr/bin/timidity -Os -iAD


Запускаю Rosegarden, а звука нет.

Смотрю параметры Rosengarden. Пишет что MIDI доступен, звук доступен. В «подробнее» показывает выхлоп:

Rosegarden 14.02 - AlsaDriver [ALSA library version 1.0.27.2, module version 1.0.24, kernel version 3.2.0-4-686-pae]

JackDriver::initialiseAudio - JACK sample rate = 48000Hz, buffer size = 256
JackDriver::initialiseAudio - creating disk thread
JackDriver::initialiseAudio - found 2 JACK physical outputs
JackDriver::initialiseAudio - connecting from "rosegarden:master out L" to "system:playback_1"
JackDriver::initialiseAudio - connecting from "rosegarden:master out R" to "system:playback_2"
JackDriver::initialiseAudio - found 2 JACK physical inputs
JackDriver::initialiseAudio - connecting from "system:capture_1" to "rosegarden:record in 1 L"
JackDriver::initialiseAudio - connecting from "system:capture_2" to "rosegarden:record in 1 R"
JackDriver::initialiseAudio - initialised JACK audio subsystem

  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]

Using low-resolution system timer, sending a warning
    Current timer set to "system timer" with timer checks
    WARNING: using system timer with only 250Hz resolution!
AlsaDriver::initialiseMidi -  initialised MIDI subsystem

Using low-resolution system timer, sending a warning
    Current timer set to "system timer" with timer checks
    WARNING: using system timer with only 250Hz resolution!
AlsaDriver::setPlausibleConnection: connection like "" requested for device 0
AlsaDriver::setPlausibleConnection: fuzzy match 128:0 TiMidity port 0 (write) available with fitness 1
AlsaDriver::setRecordDevice - successfully subscribed device 1 as record port
AlsaDriver::setPlausibleConnection: connection like "" requested for device 1
AlsaDriver::setPlausibleConnection: fuzzy match 16:0 EMU10K1 MPU-401 (UART) (duplex) available with fitness 1

  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]


  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    130,0 - (JACK Rack, Control)			(DUPLEX) [ctype 1, ptype 1048577, cap 115]


  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]


  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]


  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]


  ALSA Client information:

    14,0 - (Midi Through, Midi Through Port-0)			(DUPLEX) [ctype 2, ptype 655362, cap 99]
    16,0 - (SB Live! 5.1, EMU10K1 MPU-401 (UART))			(DUPLEX) [ctype 2, ptype 589826, cap 127]
    17,0 - (Emu10k1 WaveTable, Emu10k1 Port 0)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,1 - (Emu10k1 WaveTable, Emu10k1 Port 1)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,2 - (Emu10k1 WaveTable, Emu10k1 Port 2)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    17,3 - (Emu10k1 WaveTable, Emu10k1 Port 3)		(WRITE ONLY) [ctype 2, ptype 327710, cap 66]
    128,0 - (TiMidity, TiMidity port 0)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,1 - (TiMidity, TiMidity port 1)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,2 - (TiMidity, TiMidity port 2)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]
    128,3 - (TiMidity, TiMidity port 3)		(WRITE ONLY) [ctype 1, ptype 2, cap 66]



Вроде все должно работать. Запускаю JACK Audio Connection Kit. В соединениях во вкладке MIDI ничего нет. Зато во вкладке ALSA есть и Rosegarden и устройства.

Соединяю выходы Rosegarden с Timidity - молчание. Соединяю выходы Rosegarden с EMU10K1 WaweTable - молчание.

Куда еще тыкать - не знаю.

Вопрос. Как услышать Midi в Linux из Rosegarden?

★★★★★
Ответ на: комментарий от lazyklimm

Ну вот у меня есть Dosbox, я запустил дюну2 и увидел, что есть не только Sound Blaster. Стал интересоваться «что это вообще?», так как, в отличие от 1997 года, интернет есть. Нашёл выпуск «16 бит тому назад - звук на ПК». Узнал что есть чудо-юдо Роланд, выдававший эталонный MIDI в первую половину 90-х.

Зашёл в Вики досбокса, узнал что надо наложить патч на Dosbox и доустановить программу Munt. А ещё записать файлы Wavetable роланда. Звук заработал, стало офигенно.

Вот теперь я хочу то же самое, но в системный медиаплеер.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 3)
Ответ на: комментарий от ZenitharChampion

И что есть чудо-юдо Роланд, выдававший эталонный MIDI в первую половину 90-х.

А, видимо речь про Sound Canvas. Ну как, прямо один в один не может, но я встречал банки, снятые с него. Плюс был(есть?) Virtual Sound Canvas под винду.

lazyklimm ★★★★★
()
Ответ на: комментарий от ZenitharChampion

и да, эталонным тот самый SС был только для бытового применения и только для 90х. Но для любителей ретрозвука - может быть да, интересен.

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Опять же, что значит явно не 10, возьми jack_iodelay и измерь, чо как бабка на кофейной гуще.

Я тебе и так скажу, ~65 мс на древнем p4, но это на встроенной AC97, когда SBLive не был вставлен. В моих записульках есть вот эта:

3134.987 frames     65.312 ms total roundtrip latency
   extra loopback latency: 36 frames
   use 18 for the backend arguments -I and -O


Будет ли латентность меньше при SBLive сказать не могу. Я его вставлял позже, чем делал этот замер. Особых причин на уменьшение латентности не вижу. Сколько из этого времени уходило на CPU сказать не могу, у меня не записано, к сожалению.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

ну короче, тебе в этом треде уже всё 10 раз сказали

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

true, true. Попробуйте вставить еще сказуемые и подлежащее.

t184256 ★★★★★
()
Ответ на: комментарий от lazyklimm

И что есть чудо-юдо Роланд, выдававший эталонный MIDI в первую половину 90-х.

А, видимо речь про Sound Canvas.

Скорее, про GUS Gravis Ultrasound System. В него роландовские патчи засовывали.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

В него роландовские патчи засовывали.

в него много чего засовывали. в любом случае, это ископаемое УГ из 90х.

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Решил еще раз с qsynth поковыряться.

Вопрос в следующем: в поле «устройство MIDI» должно что-нибудь писаться? У меня там пусто:

http://i.piccy.info/i9/9eb4e3e2e39f23db446337d7b3376978/1456779383/105718/825...

Я пытаюсь выбрать в поле «драйвер MIDI» вместо alsa_raw значение alsa_seq и jack. Но они не применяются. Появляется окошко что надо перегрузить qsynth, и на этом прога зависает. Снимаю процесс, запускаю заново - а там опять alsa_raw. То есть, на jack переключиться не могу, независимо от того, запущен jack-сервер или нет.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от lazyklimm

Я пробую запускать qsynth так, чтоб и основной и error-поток видеть:

/usr/bin/qsynth 2>&1


Но все чисто, даже когда зависает.

Перетыкал-перетыкал qsynth, в какой-то момент он не завис и применил настройки. Драйвер MIDI - jack, и звуковой драйвер - jack. Я обрадовался, подумал что через jack смогу завернуть звук qsynth на playback. Вот такие дефолтные соединения показывает Jack Connection Kit:

http://i.piccy.info/i9/3ac8bf95eae4ddca294f920e782a8b21/1456781169/187504/825...

http://i.piccy.info/i9/edbe3ef76d99d2e1c5644dd65d17e7b4/1456781193/167755/825...

http://i.piccy.info/i9/5374587a5be0e1096b8d652e6eff3379/1456781209/197064/825...

Но в ответ тишина.

Я не вижу тут MIDI-соединения между Rosegarden и QSynth. И не пойму, как его сделать.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

я же писал выше, rosegarden не умеет в jack midi. чтобы его заставить что-то играть, рекомендую использовать плагины. либо запускать qsynth c alsa мидидрайвером

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Кароче, вторая бессонная ночь с Linux. qsynth не работает. Точнее, запускается, но звука услышать не удалось ни через alsa, ни через jack.

В общем, нашел я банк размером 8Mb, с ним заработало аппаратное WaveTable MIDI.

http://www.alsa-project.org/~james/sound-fonts/8MBGMSFX.SF2

Вначале надо модуль ядра загрузить:

modprobe snd-emu10k1-synth


Потом гружу 8Мб банк:

asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2


И начинает работать WaveTable на карточке. И результат в разы лучше деревянного тимидити.

Но дальше опять началась жопа. Я подправил нужный MIDI файл в Rosegarden, и встал вопрос как его сохранить в виде wav файла.

Как я ни крутил, записать с вейвтейбла не получилось. Audacity записывает 0,2 секунды тишины и останавливается. Игрался с выбором устройства захвата - ни на одном сигнала нет. Audacity на некоторых устройствах вдруг начинало работать (то есть, не останавливалось после 0,2 сек), но писало тишину. У меня и раньше похожий глюк наблюдался, но он проявлялся время от времени, я отправлял разработчикам видео:

https://youtu.be/kKQf-09lBUo?t=267

Но тут у меня вечный глюк какой-то. Тогда я плюнул на audacity и попробовал записать тупо через arecord. Но и так не получилось, пишется тишина.

Тогда я вспомнил, что прога lo10k1 позволяла коммутировать даже несоединимые входа-выхода. Стал ей соединять, уж чтоб наверняка. Я точно знаю, как обозначаются микрофонный вход и выход карточки (IN(0) и OUT(0) соответственно). Попытался завернуть:

lo10k1 --conadd "IN(0)=OUT(0)"


Оказалось, что не так прокатывает. Решил соединить через обработку. Обработки-пустышки нет, взял для эксперимента хорус. Скомпилировал chorus.asm в chorus.emu10k1, грузанул его:

lo10k1 -a chorus.emu10k1


Далее выполнил:

lo10k1 --conadd "PIN(0)=IN(0)"
lo10k1 --conadd "POUT(0)=OUT(0)"


С микрофона обработка пошла, но мне то нужно брать исходник с выхода. Сбрасываю DSP и переделываю подачу:

lo10k1 --conadd "PIN(0)=OUT(0)"
lo10k1 --conadd "POUT(0)=IN(0)"


Вторая команда не прокатывает, говорит что так нельзя.

Не хочешь коммутироваться программно, давай тогда кабелем. Взял кабель миниджек-миниджек, сунул его в линейный выход и линейный вход. С линейного входа записать не удалось. Тогда сунул в микрофонный, пофигу что несогласовано, мне бы хоть что-то услышать. Запись пошла, но подобрать уровни невозможно. Либо будет пищать и трещать, либо будет очень тихо.

Все, больше выносить мозго линухом не стал. Подключил тупую CASIO-самоиграйку просто по миниджеку и записал звук на нее. Вытащил SD-карточку и скопировал в компьютер. Вот так записал MIDI в линухе.

Такого траходрома под виндой никогда небыло.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Такого траходрома под виндой никогда небыло.

у меня и в линуксе не было, лол

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Ну, если иначе у гражданина не получается, то пусть ходит с костылём :)

AP ★★★★★
()
Ответ на: комментарий от Xintrea

Из стартового поста видно, что ты ещё и JACK прикрутил зачем-то.

Я б его и не трогал, если б оно работало.

поставил бы чего другое, фотошоп там например через вайн

amorpher ★★★★★
()
Ответ на: комментарий от lazyklimm

не нужно же, в смысле jack же и самостоятельно может

Не может. При включении jack при проигрывании midi в Rosegarden почему-то пропадают некоторые инструменты. Я вообще не понимаю как это может быть связано. И еще слышно, что некоторые ноты запаздывают относительно общего ритма. Причем нагрузки на проц нет, там тормозить-то нечему.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Действительно, как он поможет через созданный им порт MIDI Through пропихнуть MIDI из Розосада в Кутэсинт?

AP ★★★★★
()
Ответ на: комментарий от Xintrea

Ты говоришь про невозможность использовать джек миди в кутэсинте.

AP ★★★★★
()
Ответ на: комментарий от Quickern

Вот что забавно: ровно такая же проблема у меня в свое время была в винде.

4.2, там из коробки играло, по крайней мере в 98й точно.Да и в 2000 тоже. В XP скорей всего тоже, но я не пробовал вроде.

anonymous
()

Если тебе нужно всего лишь послушать миди файлы обычные, то можно либо консольной програмкой wildmidi, либо в deadbeef (если поддержку не выкинули). Они просто берут и играют без лишней возни.

anonymous
()
Ответ на: комментарий от curufinwe

ты правда слушал тдс 5 от обычного ноута? он их раскачивает? сколько в них ом?

думаешь тдс 5м на 80 ом(изодинамика) можно номально слушать от обычного ноута?

anonymous
()
Ответ на: комментарий от anonymous

Не поверишь, но у меня как раз ТДС5 лежит. Конечно, звуковуха их не раскачивает. Но какое это отношение к теме имеет, и вообще к линуксу? Подключи ушной усилитель к звуковухе и слушай свой ТДС5.

curufinwe ★★★★★
()

так ты хочешь и ведро поконпелять и музычку послушать? а морда не треснет?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.