1
Fork 0
Dynamic and static MIDI bridging between JACK MIDI and ALSA sequencer graphs https://a2jmidid.ladish.org/
Go to file
Nedko Arnaudov 445fbb23f5 website/index.html: Extend Feedback section (codeberg.org) 2024-02-10 15:38:22 +02:00
.github/workflows ci/github: Ubuntu 18.04 deprecated 2023-05-04 19:20:45 +03:00
man Let the user bypass note on filtering when velocity is 0 2023-05-04 14:52:31 +03:00
siginfo@ba0ec23f8d Update siginfo git submodule to latest 2022-08-20 18:46:49 +03:00
waf-autooptions@cc16822604 Add waf-autooptions git submodule 2022-08-20 18:18:11 +03:00
waftoolchainflags@aefda455ab update waftoolchainflags submodule 2023-11-17 21:26:55 +02:00
website website/index.html: Extend Feedback section (codeberg.org) 2024-02-10 15:38:22 +02:00
.gitignore wscript: adjust for newer waf (incomplete) 2022-08-28 17:09:37 +03:00
.gitmodules .gitmodules: remove duplicate waf-autootions submodule path 2024-01-16 23:45:29 +02:00
AUTHORS.rst Feature/release cleanup (#4) 2019-09-24 00:34:12 +02:00
GNUmakefile CI: build ubuntu LTS 2022-08-28 17:23:30 +03:00
INSTALL.rst INSTALL.rst for waf & meson 2022-08-28 20:55:06 +03:00
LICENSE Feature/release cleanup (#4) 2019-09-24 00:34:12 +02:00
Makefile Revert "Feature/meson (#1)" and reintroduce waf and the regular Makefile 2022-08-20 17:27:48 +03:00
NEWS.rst a2jmidid.c: fix include of siginfo.h 2024-01-08 01:51:30 +02:00
README Revert README.rst back to README 2023-05-14 11:39:42 +03:00
a2j Fix typo in a comment 2010-08-21 16:18:19 +03:00
a2j_control a2j_control: apply python 2to3 2022-08-28 20:55:06 +03:00
a2jmidi_bridge.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
a2jmidid.c a2jmidid.c: fix include of siginfo.h 2024-01-08 01:51:30 +02:00
a2jmidid.h improved error handling in a2j_new; light coding style changes 2009-12-29 06:15:32 +02:00
conf.c Update copyright years (2009) 2009-05-07 21:33:55 +03:00
conf.h Fix bunch of warnings 2023-11-09 21:35:15 +02:00
config.h.in Reintroduce Feature/meson (#1) 2022-08-28 19:48:01 +03:00
dbus.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
dbus.h Fix bunch of warnings 2023-11-09 21:35:15 +02:00
dbus_iface_control.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
dbus_iface_control.h Fix bunch of warnings 2023-11-09 21:35:15 +02:00
dbus_iface_introspectable.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
dbus_internal.h return explicit dbus void replies 2009-12-07 02:34:42 +02:00
internals.txt * Remove obsolete info about semaphore 2008-07-30 12:28:08 +00:00
j2amidi_bridge.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
jack.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
jack.h improved error handling in a2j_new; light coding style changes 2009-12-29 06:15:32 +02:00
list.c list_sort() 2009-05-31 19:59:55 +03:00
list.h list_sort() 2009-05-31 19:59:55 +03:00
log.c Fix log text 2010-08-28 04:31:03 +03:00
log.h Fix bunch of warnings 2023-11-09 21:35:15 +02:00
meson.build Release a2jmidid-12 2024-01-08 00:21:10 +02:00
meson_options.txt Reintroduce Feature/meson (#1) 2022-08-28 19:48:01 +03:00
org.gna.home.a2jmidid.service.in Reintroduce Feature/meson (#1) 2022-08-28 19:48:01 +03:00
paths.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
paths.h Fix bunch of warnings 2023-11-09 21:35:15 +02:00
port.c Fix bunch of warnings 2023-11-09 21:35:15 +02:00
port.h Update copyright years (2009) 2009-05-07 21:33:55 +03:00
port_hash.c Update copyright years (2009) 2009-05-07 21:33:55 +03:00
port_hash.h Update copyright years (2009) 2009-05-07 21:33:55 +03:00
port_thread.c add debug log 2009-12-15 02:22:06 +02:00
port_thread.h Update copyright years (2009) 2009-05-07 21:33:55 +03:00
sigsegv.c Switch to siginfo, fix build on arm64 2022-08-20 18:36:46 +03:00
sigsegv.h Switch to siginfo, fix build on arm64 2022-08-20 18:36:46 +03:00
structs.h use port name buffer of actual max size; print warning on truncation 2010-04-04 23:16:18 +03:00
waf Upgrade waf to 2.0.26 2023-11-18 16:28:09 +02:00
wscript Release a2jmidid-12 2024-01-08 00:21:10 +02:00

README

= Overview =
Main goal of this project main is to ease usage of legacy, not
JACK-ified apps, in a JACK MIDI enabled system.

There are two ways to use legacy ALSA sequencer applications in JACK
MIDI system.

The first approach is to use automatic bridging. For every ALSA
sequencer port you get one JACK MIDI port. If ALSA sequencer port is
both input and output one, you get two JACK MIDI ports, one input and
output.

The second approach is to static bridges. You start application that
creates one ALSA sequencer port and one JACK MIDI port. Such bridge is
unidirectional.

First approach works almost always except when legacy ALSA sequencer
application does not create ports and/or wants existing port to exist
so it can capture from or playback to it. Such programs are using the
feature of ALSA sequencer framework that allows sending and receiving
MIDI events to/from port, without creating connection to it.

= a2jmidid =
a2jmidid is daemon that implements automatic bridging. For every ALSA
sequencer port you get one jack midi port. If ALSA sequencer port is
both input and output one, you get two JACK MIDI ports, one input and
output.

a2jmidid has two modes of operation, running bridge manually and
background D-Bus service.

To start a2jmidid in manual mode, just run it (and don't supply the
special "undocumented" dbus parameter). a2jmidid will start bridging,
and you will get output on stdout and stderr. You can stop the bridge
using ctrl-c.

Usually you want to bridge software ports and not bridge hardware
ports (they are handled by JACK itself). In case you want to force
a2jmidid to bridge hardware ports, you can use the export-hw option:

a2jmidid -e

or

a2jmidid --export-hw

In D-Bus service mode, a2jmidid works in background. When service
access is requested by some application (like a2j_control), dbus
session bus daemon activates the object by executing the service
executable. The object has methods for starting and stopping the
bridging. You can use a2j_control to do this:

a2j_control start
a2j_control stop

You can deactivate (that may cause later reactivation) the service
like this:

a2j_control exit

You can query the bridge status using this command:

a2j_control status

There also methods (and corresponding a2j_control commands) that can
be used to query mapping information.

a2jmidid implementation is based on jack-alsamidi-0.5 that is [almost]
same as jackd ALSA "seq" MIDI backend), both created by Dmitry
Baikov.

= a2jmidi_bridge =
a2jmidi_bridge is static bridge that creates one ALSA sequencer
playback port and one JACK MIDI capture port. MIDI events sent to ALSA
sequencer playback port can be read from the JACK MIDI capture port.

a2jmidi_bridge has optional argument that allows overriding name used
for JACK and ALSA client:

a2jmidi_bridge "my precious bridge"

a2jmidi_bridge implementation is based on alsaseq2jackmidi by Sean
Bolton.

= j2amidi_bridge =
j2amidi_bridge is static bridge that creates one JACK MIDI playback
port and one ALSA sequencer capture port. MIDI events sent to JACK
MIDI playback port can be read from the ALSA sequencer capture port.

j2amidi_bridge has optional argument that allows overriding name used
for JACK and ALSA client:

j2amidi_bridge "my precious bridge"

j2amidi_bridge implementation is based on jackmidi2alsaseq by Lars
Luthman.

= Contact info =
If someone wants to contribute please, contact me (Nedko Arnaudov), or
send patches, or request inclusion (Gna! a2jmidid project).

Packagers are more than welcome too.