🦀 a colorful music making program for your linux terminal 🦀
Find a file
2025-04-04 02:11:40 +03:00
.forgejo/workflows try to fix ci 2025-03-04 01:39:58 +02:00
.old once again, why did i begin to refactor this 2025-01-18 00:13:36 +01:00
app try to disable failing test lines 2025-04-04 02:11:40 +03:00
cli wip: centralize dependencies 2025-03-14 23:54:53 +02:00
jack wip: centralize dependencies 2025-03-14 23:54:53 +02:00
midi midi: specify type 2025-04-04 01:53:57 +03:00
plugin tek_tui -> tengri 2025-03-15 17:44:02 +02:00
sampler extract has_sampler 2025-04-04 01:53:44 +03:00
suil flatten workspace into 1 crate 2024-12-29 00:10:30 +01:00
time tek_tui -> tengri 2025-03-15 17:44:02 +02:00
.dockerignore fix and update ci config 2024-12-21 12:25:50 +01:00
.gitignore fix just cov command 2025-01-27 16:08:32 +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 tengri 0.5.2: specify Map types/lifetimes 2025-04-04 01:54:20 +03:00
Cargo.toml tengri 0.5.2: specify Map types/lifetimes 2025-04-04 01:54:20 +03:00
Justfile ref -> rev; fix some warns; cov 33.46% 2025-03-04 01:15:30 +02:00
LICENSE add license 2025-03-24 03:18:18 +02:00
README.md add repology badge 2025-03-10 13:09:18 +02:00
shell.nix add thiserror to edn module; 38.57% total cov 2025-02-26 15:09:44 +02:00
tek.rs convert to workspace and update justfile 2025-01-09 22:19:28 +01: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

  • requirements: linux; jack or pipewire; 24-bit terminal (i use kitty)
  • recommended: midi controller; samples in wav format; lv2 plugins.
Usage: tek [OPTIONS] <COMMAND>

Commands:
  clock      A standalone transport clock
  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:
  -n, --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
  -t, --show-clock                   Whether to include a transport toolbar (default: true)
  -I, --midi-from <MIDI_FROM>        MIDI outs to connect to (multiple instances accepted)
  -i, --midi-from-re <MIDI_FROM_RE>  MIDI outs to connect to (multiple instances accepted)
  -O, --midi-to <MIDI_TO>            MIDI ins to connect to (multiple instances accepted)
  -o, --midi-to-re <MIDI_TO_RE>      MIDI ins to connect to (multiple instances accepted)
  -l, --left-from <LEFT_FROM>        Audio outs to connect to left input
  -r, --right-from <RIGHT_FROM>      Audio outs to connect to right input
  -L, --left-to <LEFT_TO>            Audio ins to connect from left output
  -R, --right-to <RIGHT_TO>          Audio ins to connect from right output
  -h, --help                         Print help
  -V, --version                      Print version

keymaps

  • arrows/wasd: navigate
  • tab: toggle editor
  • enter: write note
  • z: unlock zoom
  • - / =: zoom midi editor
  • space: play/pause
  • esc: options
  • f1: help/command list
  • f2: rename
  • f6: save
  • f9: load

installation

binary download

see the releases page.

from source with cargo

requires rust nightly.

cargo install --git https://codeberg.org/unspeaker/tek

from distro repositories

Packaging status

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

development

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.