3.2 KiB
tek 
a music making program for 24-bit unicode terminals.
written in rust with ratatui on crossterm for jack and pipewire.
tek is available as source, statically linked binaries, and on the aur.
hmu on mastodon @unspeaker@mastodon.social
or matrix @unspeaker:matrix.org
this codebase produces the following binaries:
tek_sequenceris a single-track, multi-pattern MIDI sequencer with properly tempo-synced pattern switchtek_grooveboxconnects the sequencer to a sampler, so that you can sample while you sequencetek_arrangeris a multi-track sequencer based on a familiar clip launching UItek_transportis a JACK transport controllertek_sampleris a MIDI-controlled samplertek_pluginis an audio plugin host.tek_channelis a standalone channel striptek_mixeris an audio mixer.
some of these are currently work in progress.
the project roadmap is at https://codeberg.org/unspeaker/tek/milestones
getting started
- requirements: linux; jack or pipewire; 24-bit terminal (i use
kitty) - recommended: midi controller; samples in wav format; lv2 plugins.
arch linux
tek is available as a package in the AUR.
you can install it using an AUR helper (e.g. paru):
paru -S tek
downloads
see the releases page.
building from source
you'll need a Rust toolchain and various system libraries.
you can obtain the former using rustup and the latter using nix-shell.
there's a shell.nix provided with the project.
from there, use the commands in the Justfile, e.g.:
just arranger
note that tek > 0.2.0-rc.7 will require rust nightly
for the unstable features type_alias_impl_trait and
impl_trait_in_assoc_type. make some noise for lucky
rust rfc2515
if you want to see this buildable with stable/beta.
design goals
lightweight
- pop-up scratchpad for musical ideas
- low resource consumption, can stay open in background
- advanced toolset allows quickly expanding on compositions
flexible
- inspired by trackers and hardware sequencers
- able to record while playing!
programmable
- human-readable project format
- command architecture allows for scripting and remapping
Note
Your moral support means a lot to me. Feel free to contact me on Mastodon![^0]
Love, 🤫 (a rogue knowledge worker in a cyberpunk dystopia)
