AMIDI(1)

πŸ“¦
version 1.2.16 Β· 2 versions
, in alpine 3.24, arch rolling, centos-stream 10, centos-stream 9, fedora 43, fedora 44, nixpkgs unstable, ubuntu resolute, ubuntu stonking

✨ AMIDI(1) β€” General Commands Manual πŸ’–

Okay bestie, this is the manual page for amidi, the command-line tool that lets you read from and write to ALSA RawMIDI ports πŸŽ€ It's literally the ultimate tool for SysEx stuff πŸ¦‹

🌸 NAME

amidi β€” read from and write to ALSA RawMIDI ports ✨

πŸŽ€ SYNOPSIS

amidi [-p port] [-s file | -S data] [-r file] [-d] [-t seconds] [-a]

πŸ’… DESCRIPTION

So amidi is a command-line utility that lets you receive and send SysEx (system exclusive) data to and from external MIDI devices πŸ”₯ It can also send any other MIDI commands, periodt πŸ‘‘

Heads up though, amidi only handles files containing raw MIDI commands, with no timing information 🫢 It does not support Standard MIDI (.mid) files, but aplaymidi(1) and arecordmidi(1) do πŸ’œ

πŸ¦‹ OPTIONS

Use the -h, -V, -l, or -L options to display info ✨ Or use at least one of the -s, -r, -S, or -d options to decide what data to send or receive 🌈

  • -h, --help β€” Help! It prints a list of options πŸ™ˆ
  • -V, --version β€” Shows you the current version 🧚
  • -l, --list-devices β€” Prints a list of all hardware MIDI ports πŸ“
  • -x, --list-inactive β€” Use this together with the -l option πŸ’… It prints all MIDI ports, including inactive ones 🌸
  • -L, --list-rawmidis β€” Prints all RawMIDI definitions πŸ”₯ (super handy when you're debugging configuration files)
  • -p, --port=name β€” Sets the name of the ALSA RawMIDI port you want to use πŸ’– If you don't specify one, amidi uses the default port from the configuration file (which is port 0 on card 0, but that one may not even exist πŸ’€)
  • -s, --send=filename β€” Sends the contents of the file you specify to the MIDI port πŸŽ€ The file has to contain raw MIDI commands (like a .syx file) πŸ¦‹ For Standard MIDI (.mid) files, use aplaymidi(1) instead ✨
  • -r, --receive=filename β€” Writes data received from the MIDI port into the file you specify πŸ’œ The file will contain raw MIDI commands (like in a .syx file) 🫢 To record a Standard MIDI (.mid) file, use arecordmidi(1) 🌈

amidi will filter out any Active Sensing and Clock bytes (FEh, F8h) unless you've given the -a or -c options πŸ™ˆ

  • -S, --send-hex="..." β€” Sends the bytes you list as hexadecimal numbers to the MIDI port 🧚
  • -d, --dump β€” Prints data received from the MIDI port as hexadecimal bytes πŸ“ Active Sensing and Clock bytes (FEh, F8h) won't be shown, unless you've given the -a or -c options πŸ’…

This option is super useful for debugging πŸ”₯

  • -t, --timeout=seconds β€” Stops receiving data once no data has come in for the amount of time you specify 🌸

If you don't give this option, you have to press Ctrl+C (or kill amidi) to stop receiving data πŸ’€

  • -a, --active-sensing β€” Doesn't ignore Active Sensing bytes (FEh) when saving or printing received MIDI commands ✨
  • -c, --clock β€” Doesn't ignore Clock bytes (F8h) when saving or printing received MIDI commands πŸ¦‹
  • -i, --sysex-interval=mseconds β€” Adds a delay between each SysEx message sent to a device πŸ’– This is really useful when you're sending firmware updates via SysEx messages to a remote device 🫢

🧚 EXAMPLES

Okay, here are some examples that are giving everything 😭

amidi -p hw:0 -s my_settings.syx

This will send the MIDI commands in my_settings.syx to port hw:0 πŸ’œ

amidi -p hw:1,0,0 -s firmware.syx -i 100

This will send the MIDI commands in firmware.syx to port hw:1,0,0, with a 100 millisecond delay between each SysEx message ✨

amidi -S 'F0 43 10 4C 00 00 7E 00 F7'

This sends an XG Reset to the default port πŸ”₯

amidi -p hw:1,2 -S F0411042110C000000000074F7 -r dump.syx -t 1

This sends a "Parameter Dump Request" to a GS device, saves the received parameter data to the file dump.syx, and stops after the device has finished sending data (when no data has been received for one second) πŸ‘‘

amidi -p virtual -d

This creates a virtual RawMIDI port and prints all data sent to this port 🌈

πŸ“ FILES

  • /usr/share/alsa/alsa.conf β€” default rawmidi definitions πŸŽ€
  • /etc/asound.conf β€” system-wide rawmidi definitions 🌸
  • ~/.asoundrc β€” user specific rawmidi definitions πŸ’…

πŸ¦‹ SEE ALSO

πŸ‘‘ AUTHOR

Clemens Ladisch <clemens@ladisch.de> 🧚


Okay bestie, that's the whole tea on AMIDI(1)! 30 Aug 2016 πŸ“… ✨ Source: AMIDI(1) manual page, the general commands manual 🌸 You're literally the best for reading this far πŸ’–πŸ«Ά