tek/README.md

2.7 KiB

tek Please don't upload to GitHub

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.

Screenshot

this codebase produces the following binaries:

  • tek_sequencer is a single-track, multi-pattern MIDI sequencer with properly tempo-synced pattern switch
  • tek_groovebox connects the sequencer to a sampler, so that you can sample while you sequence
  • tek_arranger is a multi-track sequencer based on a familiar clip launching UI
  • tek_transport is a JACK transport controller
  • tek_sampler is a MIDI-controlled sampler
  • tek_plugin is an audio plugin host.
  • tek_channel is a standalone channel strip
  • tek_mixer is 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

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)