JACK_MIDI_CLOCK(1)

πŸŽ€ JACK_MIDI_CLOCK πŸ’–

okay bestie, gather round, because we're talking about jack_midi_clock β€” aka the JACK MIDI Beat Clock Generator, aka the little guy who keeps your synths on beat. it's a User Commands situation (manual section 1, iykyk) and honestly? iconic. ✨


🌸 SYNOPSIS 🌸

jack_midi_clock [ OPTIONS ] [JACK-port]*

πŸ’… DESCRIPTION πŸ’…

jack_midi_clock is a JACK app that generates MCLK (MIDI clock) from the JACK transport. that's it, that's the whole vibe. it takes the transport and turns it into beat clock messages so everything downstream stays locked in. πŸ”₯


✨ OPTIONS ✨

  • -b <bpm>, --bpm <bpm> β€” sets the default BPM. this is your fallback, bestie: it kicks in when there's no jack timecode master available. πŸ’œ
  • -B, --force-bpm β€” straight-up ignores the jack timecode master. not me ghosting the timecode master πŸ’€
  • -d <sec>, --resync-delay <sec> β€” how many seconds to wait between the 'song-position' message and the 'continue' message. the pause that lets everyone catch up. 🫢
  • -J, --jitter-level <percent> β€” adds artificial jitter to the signal, from 0..20%. default: off (0). chaos mode, but make it rhythmic. 🌈
  • -P, --no-position β€” do not send song-position (0xf2) messages. silent on position, loud on everything else. πŸ™ˆ
  • -T, --no-transport β€” do not send start/stop/continue messages. transport updates? we don't know her. πŸ’…
  • -s, --strict-bpm β€” interprets tempo strictly as beats per minute. the default, for the record, is quarter-notes per minute. so this one changes the whole meaning of your BPM number, bestie, be careful. ⭐
  • -h, --help β€” displays this help and exits. classic. πŸŽ€
  • -V, --version β€” prints version information and exits. slay. πŸ‘‘

jack_midi_clock sends a MIDI beat clock message whenever the jack-transport is rolling. it also sends start, continue and stop MIDI realtime messages whenever the transport changes state β€” unless the -T option is used.

so for jack_midi_clock to actually send clock messages, a JACK timecode master has to be present and providing the tempo map (bar, beat, tick). alternatively, you can use the -b option to set a default BPM value. if you give a value larger than zero, it'll be used when there's no timecode master around. and combined with the -B option? it can be used to override and ignore the JACK timecode master entirely, and act only on transport state alone. main character energy fr fr. ✨

either way β€” and this part matters β€” jack_midi_clock will never act as timecode master itself. no cap.

note that song-position information is only sent if a timecode master is present and the -P option is not given.

to let external synths accurately sync to song-position, there's a two second delay between the 'song-position changed' message (which, psst, is not a MIDI realtime message) and the 'continue transport' message. that delay is configurable with the -d option, and it's only relevant if playback starts at a bar|beat|tick other than 1|1|0 β€” in which case a 'start' message gets sent immediately. πŸ¦‹

jack_midi_clock runs until it receives a HUP or INT signal, or until jackd is terminated. 😭

see also: jack_transport(1), jack_mclk_dump(1)


😀 REPORTING BUGS 😀

found a bug? tell Robin, he wants to know:


  • Copyright Β© GPL 2013 Robin Gareus <robin@gareus.org>
  • Copyright Β© GPL 2009 Gabriel M. Beddingfield <gabriel@teuton.org>

and that's the whole page, bestie 🫢 this was jack_midi_clock version v0.4.3, dated October 2016, living its truth in the JACK_MIDI_CLOCK(1) section. bye now, go sync something. πŸ’–βœ¨πŸŽ€