tek/README.md
2025-01-08 16:05:49 +01:00

93 lines
3.2 KiB
Markdown

# tek [![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page)
a music making program for [24-bit unicode terminals](https://sw.kovidgoyal.net/kitty/).
written in [rust](https://www.rust-lang.org/)
with [ratatui](https://ratatui.rs/) on [crossterm](https://docs.rs/crossterm/latest/crossterm/)
for [jack](https://jackaudio.org/) and [pipewire](https://www.pipewire.org/).
**tek** is available as [source](https://codeberg.org/unspeaker/tek#building-from-source),
[statically linked binaries](https://codeberg.org/unspeaker/tek/releases), and on the
[aur](https://codeberg.org/unspeaker/tek#arch-linux).
hmu on [**mastodon** `@unspeaker@mastodon.social`](https://mastodon.social/@unspeaker)
or [**matrix** `@unspeaker:matrix.org`](https://matrix.to/#/@unspeaker:matrix.org)
![Screenshot](https://codeberg.org/unspeaker/tek/releases/download/0.2.0-rc.7/Screenshot%20From%202025-01-02%2023-18-05.png)
```
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](https://codeberg.org/unspeaker/tek) is available as a package in the AUR.
you can install it using an AUR helper (e.g. `paru`):
```sh
paru -S tek
```
### downloads
see the [releases page](https://codeberg.org/unspeaker/tek/releases).
### 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.:
```sh
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**](https://github.com/rust-lang/rust/issues/63063)
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.