LINUX.ORG.RU

Проблемы с использованием midi клавиатуры

 , , , ,


0

1

Я довольно долгое время уже пользуюсь midi клавиатурой для написания песен и довольно внезапно у меня начались очень странные проблемы с ней. Клавиши то не нажимаются, то не отжимаются (нажимаю на клавишу, звук идёт, отжимаю, а он всё ещё идёт). Сама клавиатура полностью рабочая, проверял на ноутбуке (там всё работает как и должно) с тем же проводом, так что с ним тоже всё в порядке.

Для аудио я использую jack, недавно решил попробовать, может в alsa всё будет работать, но результат был одинаковый.

В чём может быть причина такой проблемы? И что с этим вообще можно сделать?


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

Насколько я понял, вся миди система идёт от альсы. Джек просто идёт сверху над альсой, как и pipewire. Так что разницы не будет.

Я думаю, что проблема в a2j, потому что он как раз выдаёт ошибку какую-то. Но в чём тут конкретно проблема я не понял.

azim@pc:~$ a2j_control --ehw && a2j_control --start
--- enable export of hardware ports
Traceback (most recent call last):
  File "/usr/bin/a2j_control", line 203, in <module>
    A2JControl()
  File "/usr/bin/a2j_control", line 199, in __init__
    self.call_controller_function()
  File "/usr/bin/a2j_control", line 186, in call_controller_function
    self.controller_export_hardware_ports(True)
  File "/usr/bin/a2j_control", line 151, in controller_export_hardware_ports
    self.controller_interface.set_hw_export(True)
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 72, in __call__
    return self._proxy_method(*args, **keywords)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 141, in __call__
    return self._connection.call_blocking(self._named_service,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 634, in call_blocking
    reply_message = self.send_message_with_reply_and_block(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dbus.exceptions.DBusException: org.gna.home.a2jmidid.error.bridge_running: Bridge is started

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

Поискал эту ошибку, тут https://github.com/jackaudio/a2jmidid/issues/12 пишут что-то про неё но я не понял решили или нет.

И не факт что это с залипанием клавиш связано.

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

Но ты принципиально не скажешь какой дистрибутив и какие версии ядра, джека, какие параметры джека и каким софтом ты играешь миди?

Может быть ядро. Пальцем в небо.

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

Я в тегах указал дистрибутив - devuan. Версия ядра - 5.10.0-25-rt. Всё остальное влиять так-то не должно. Программы для миди я тем более разные попробовал, всё одинаково, как и параметры джека, собственно говоря.

azim
() автор топика

Подключение по USB? В выводе dmesg никаких ошибок, касающихся USB, нет? А то, может, разъём болтается, или ещё что подобное.

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

В компе разные усб гнёзда могут давать разный результат. Или другое усб устройство перебивает. rtirq установлен? Чисто теоретически, увеличение буффера джека должно помочь. Залипания и пропуски - это не пришедшие сообщения.

Какие модули ядра загружены? дай вывод «lsmod | grep snd», snd_hrtimer имеется? И snd_seq? И в конфиге ядра включен CONFIG_HZ_1000?

И кстати. какой джек? Старый, или второй?

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

Разные разьёмы тоже пробовал и usb 3.0 и 2ю версию. Джек у меня второй.

вывод lsmod | grep snd

snd_seq_dummy          16384  2
snd_hrtimer            16384  1
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_seq                94208  8 snd_seq_midi,snd_seq_midi_event,snd_seq_dummy
snd_usb_audio         319488  7
snd_usbmidi_lib        45056  1 snd_usb_audio
snd_rawmidi            45056  6 snd_seq_midi,snd_usbmidi_lib
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
mc                     61440  1 snd_usb_audio
snd_hda_codec_realtek   167936  1
snd_hda_codec_generic    98304  1 snd_hda_codec_realtek
ledtrig_audio          16384  1 snd_hda_codec_generic
snd_hda_codec_hdmi     81920  1
snd_hda_intel          57344  0
snd_intel_dspcfg       28672  1 snd_hda_intel
soundwire_intel        45056  1 snd_intel_dspcfg
snd_soc_core          323584  1 soundwire_intel
snd_compress           32768  1 snd_soc_core
snd_hda_codec         176128  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core          110592  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              20480  2 snd_usb_audio,snd_hda_codec
snd_pcm_oss            65536  0
snd_mixer_oss          28672  1 snd_pcm_oss
snd_pcm               143360  11 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,soundwire_intel,snd_compress,snd_pcm_oss,snd_soc_core,snd_hda_core
snd_timer              45056  3 snd_seq,snd_hrtimer,snd_pcm
snd                   114688  26 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_pcm_oss,snd_soc_core,snd_pcm,snd_rawmidi,snd_mixer_oss
soundcore              16384  1 snd
usbcore               335872  7 xhci_hcd,ehci_pci,snd_usb_audio,usbhid,snd_usbmidi_lib,ehci_hcd,xhci_pci

Касаемо увеличения буффера, у меня раньше и на 64 работал адекватно, вроде и на 32 как-то ковырялся даже. Щас использую на 128, но всё равно такие проблемы.

Касаемо rtirq, snd_hrtimer, snd_seq ничего незнаю, так что скорее всего не установлены. В конфиге ядра ничего сам не менял, так что всё должно быть по дефолту.

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

«a2jmidid is not needed»

интернеты пишут, что проблема в «a2jmidid -e»

без него должно все работать

кто где и когда его запускает - без понятия.

попробуй killall a2jmidid или sudo killall a2jmidid и потом уже a2j_control --start

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

Попробовал, midi устройства просто пропали из доступных.

Однако после этого я попробовал запустить «a2hmidid -e» и получил вот это

JACK MIDI <-> ALSA sequencer MIDI bridge, version 9 built on Thu Jan  1 03:00:00 1970
Copyright 2006,2007 Dmitry S. Baikov
Copyright 2007,2008,2009,2011,2012 Nedko Arnaudov

Bridge starting...
Using JACK server 'default'
Hardware ports will be exported.
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
ERROR: a2j_jack_client_create: Cannot create jack client
ERROR: a2j_start: a2j_new() failed.

Ошибка не меняется в независимости от того, запущен у меня джек или нет.

azim
() автор топика
Ответ на: комментарий от olelookoe
azim@pc:~$ a2j_control --start
--- start
Traceback (most recent call last):
  File "/usr/bin/a2j_control", line 203, in <module>
    A2JControl()
  File "/usr/bin/a2j_control", line 199, in __init__
    self.call_controller_function()
  File "/usr/bin/a2j_control", line 166, in call_controller_function
    self.controller_start()
  File "/usr/bin/a2j_control", line 94, in controller_start
    self.controller_interface.start()
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 72, in __call__
    return self._proxy_method(*args, **keywords)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 141, in __call__
    return self._connection.call_blocking(self._named_service,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 634, in call_blocking
    reply_message = self.send_message_with_reply_and_block(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dbus.exceptions.DBusException: org.gna.home.a2jmidid.error.generic: a2j_start() failed.

Что интересно, если перед этим сделать killall a2jmidid, то ошибок никаких нет. Правда и сам миди при этом не работает.

azim
() автор топика
Ответ на: комментарий от olelookoe
azim@pc:~$ killall a2jmidid
azim@pc:~$ a2j_control --ehw && a2j_control --start
--- enable export of hardware ports
--- start
azim@pc:~$ a2j_control --status
--- status
Bridging enabled
Hardware exported
Allowing unique port names

Проверил щас, может заработает, но к сожалению нет, всё также.

azim
() автор топика
Ответ на: комментарий от olelookoe
azim@pc:~$ a2jmidid -e
JACK MIDI <-> ALSA sequencer MIDI bridge, version 9 built on Thu Jan  1 03:00:00 1970
Copyright 2006,2007 Dmitry S. Baikov
Copyright 2007,2008,2009,2011,2012 Nedko Arnaudov

Bridge starting...
Using JACK server 'default'
Hardware ports will be exported.
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
ERROR: a2j_jack_client_create: Cannot create jack client
ERROR: a2j_start: a2j_new() failed.
azim@pc:~$ cat /etc/security/limits.d/99-realtime.conf
cat: /etc/security/limits.d/99-realtime.conf: No such file or directory
azim
() автор топика
Ответ на: комментарий от azim

cat: /etc/security/limits.d/99-realtime.conf: No such file or directory

прикольно, а ядро реалтайм

тогда делаем так

sudo nano /etc/security/limits.d/99-realtime.conf

любимый редактор вместо nano по вкусу, если папок нет - создать

в файле написать

@realtime - rtprio 99
@realtime - memlock unlimited

сохранить, потом

sudo groupadd realtime
sudo usermod -a -G realtime yourUserID

заменить yourUserID на актуальный идентификатор юзера

перезагрузить

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

уверенность зашкаливает. ты совершенно исключаешь

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

и да, конечно, можно заранее посмотреть - есть ли такие папки, есть ли там какие-нибудь файлы или симлинки. а можно посмотреть и после того )

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

тогда /etc/security/limits.d/99-realtime.conf можно смело удалять

на всякий - встречал мнение, что reaper (или что там) после смены jack на jack2 надо переустанавливать.

похоже эта самая замена и произошла при апгрейде.

почему где-то гладко, а где-то с граблями - хз, никаких идей

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

и надо бы нажать “Configure” в поле Jack Status (Start Stop Force Start > Configure) и проверить настройки.

во вкладке Engine лишний раз убедиться в том, что выставлен режим Realtime, а во вкладке Driver глянуть что там подключено

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

конфиг ты не менял, а мейнтейнеры могли. в моей системе /proc.config.gz выглядит примерно так:

# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set
CONFIG_NO_HZ_FULL=y
CONFIG_CONTEXT_TRACKING_USER=y
# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100
# end of Timers subsystem
Миди не глючит.

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

И reaper я переустонавливал (обновлял так-то, но в рипере это происходит именно как переустановка), все настройки в cadence проверял, в driver подключена моя звуковая карта, какая должна быть.

azim
() автор топика