🦀 a colorful music making program for your linux terminal 🦀
Find a file
2025-01-08 16:37:08 +01:00
.forgejo/workflows ci: fix line counter 2025-01-05 11:41:45 +01:00
.old flatten workspace into 1 crate 2024-12-29 00:10:30 +01:00
bin unify cli 2025-01-08 16:05:49 +01:00
edn use Arc<str> where applicable; use konst split_at 2025-01-08 00:53:00 +01:00
examples clone EdnItem 2025-01-05 22:52:35 +01:00
input move edn_view into layout 2025-01-07 21:41:51 +01:00
output use Arc<str> where applicable; use konst split_at 2025-01-08 00:53:00 +01:00
rust-jack@d09788959f implement sync_lead and sync_follow flags for groovebox 2024-12-29 18:39:20 +01:00
src remove fixed height from arranger 2025-01-08 16:37:08 +01:00
suil flatten workspace into 1 crate 2024-12-29 00:10:30 +01:00
tui use Arc<str> where applicable; use konst split_at 2025-01-08 00:53:00 +01:00
.dockerignore fix and update ci config 2024-12-21 12:25:50 +01:00
.gitignore basic midi import example 2024-11-24 03:47:03 +01:00
.gitmodules fix ci; fix deps breakage from upgrade 2024-12-30 23:08:49 +01:00
.scratch.rs put phrase 2024-12-24 01:15:35 +01:00
architecture.svg move some docs to root 2024-12-30 21:56:52 +01:00
Cargo.lock move edn_view into layout 2025-01-07 21:41:51 +01:00
Cargo.toml unify cli 2025-01-08 16:05:49 +01:00
Justfile add arranger cell bgs and partially update Justfile 2025-01-08 16:31:50 +01:00
LICENSE update license 2024-10-15 09:16:48 +03:00
README.md unify cli 2025-01-08 16:05:49 +01:00
shell.nix remove VerticalArrangerGrid/Cursor 2024-10-18 16:03:03 +03:00

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.

hmu on mastodon @unspeaker@mastodon.social or matrix @unspeaker:matrix.org

Screenshot

Usage: tek [OPTIONS] <COMMAND>

Commands:
  clock      A standalone transport view
  sequencer  A MIDI sequencer
  sampler    A MIDI-controlled audio sampler
  groovebox  Sequencer and sampler together
  arranger   Multi-track MIDI sequencer
  mixer      TODO: A MIDI-controlled audio mixer
  track      TODO: A customizable channel strip
  plugin     TODO: An audio plugin host
  help       Print this message or the help of the given subcommand(s)

Options:
  -t, --name <NAME>  Name of JACK client
  -S, --sync-lead    Whether to attempt to become transport master
  -s, --sync-follow  Whether to sync to external transport master
  -b, --bpm <BPM>    Initial tempo in beats per minute
  -h, --help         Print help
  -V, --version      Print version

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

  • inspired by trackers and hardware sequencers, but with the critical feature that 90s samplers lack: able to resample, i.e. record while playing!

  • pop-up scratchpad for musical ideas. low resource consumption, can stay open in background. but flexible enough to allow expanding on compositions

  • human- and machine- readable project format simple representation for project data enable scripting and remapping.