update more stuff in readme

This commit is contained in:
🪞👃🪞 2024-10-25 01:25:46 +03:00
parent 2b4c37e6a7
commit 859306983f

118
README.md
View file

@ -1,3 +1,9 @@
# tek
a music making program for your terminal
## project status
> [!WARNING]
>
> As of 2024-10-25, I'm on track to releasing `tek 0.2.0` sometime in December 2024.
@ -16,24 +22,32 @@
>
> Love,
>
> the author
> (a rogue knowledge worker in a cyberpunk dystopia)
# tek
## what it does
Tek is a [MIDI](https://en.wikipedia.org/wiki/MIDI) sequencer, sampler, and plugin host
for the Linux terminal. It's written in [Rust](https://www.rust-lang.org/), and targets
[JACK](https://jackaudio.org/) (or [Pipewire](https://www.pipewire.org/)'s JACK implementation).
## design goals
### lightweight
My goal is to have a pop-up scratchpad for musical ideas that doesn't get in the way
of building upon them. Kind of like [Ableton](https://www.ableton.com/) — but for free systems,
and without all the bloat!
### flexible
Besides Ableton, I'm also inspired by the workflow of trackers and various old-school hardware
sequencers (of which I've broken several). I've found that every existing music-making tool
takes me about 80% of the way to the music I want to make. And so, after a decade of fucking
around, I've decided it's finally time to make good on my old dream to build the instrument
that will take me 100% there.
### programmable
A secondary goal is to make my music making environment extensible, programmable, and
interoperable; the intended project format is an
[S-expression](https://en.wikipedia.org/wiki/S-expression)-based notation
@ -42,27 +56,44 @@ interoperable; the intended project format is an
looking for an excuse to embed a
[Forth](https://en.wikipedia.org/wiki/Forth_(programming_language)) 😏)
You can follow my progress, my tragicomical struggles with maintaining
mental health as a rogue knowledge worker in a cyberpunk dystopia, and various
other trials'n'tribulations, on [Mastodon](https://mastodon.social/@unspeaker).
## getting started
---
See `demos/project.edn` for the initial contents of the session.
## Requirements
### requirements
* Linux
* Rust toolchain
* JACK or Pipewire
* a terminal (I use `kitty`)
### Recommended
### recommended
* MIDI controller
* Samples at ~/Lab/Music/pak
* Odin2 LV2 ~/.lv2/Odin2.lv2
* Samples
* LV2 plugins
## Overview
### downloads
> [!WARNING]
>
> Binaries are currently unavailable. Right now your only option is to build from source.
> In the future I plan to integrate Codeberg Actions.
### building from source
You need a Rust toolchain and various system libraries. You can obtain the former
using `rustup` and the latter using `nix-shell`. From there, use the commands in the
`Justfile`, e.g.:
```sh
just arranger
```
## usage
> [!WARNING]
>
> The following applies to `tek 0.1.0`. I will update it as part of the `0.2.0` release.
### Overview
Tek is inspired by "clip launching" workflows as exemplified by Ableton Live, Bitwig Studio,
Ardour, and probably others. The main view consists of three sections:
@ -80,17 +111,36 @@ Ardour, and probably others. The main view consists of three sections:
> and `Esc` to unfocus it. When a view is focused, use the `Arrow Keys` and `Enter` to navigate.
> Use `;` (semicolon) to open the command palette, which will list the remaining keybindings.
## TODO:
## todo
* Control:
* [ ] Customize key map
* [ ] MIDI map
* [ ] Scriptable
* [ ] Command panel
* [ ] Search panel
* Save project:
* [ ] Preserve EDN layout
* Samples:
* framework:
* command system:
* [ ] customize key map
* [ ] midi map
* [ ] scriptable
* [ ] command panel
* [ ] search panel
* rendering:
* [ ] LineBuffer for scroll?
* [ ] Buffered rendering with e.g. needs_update (only needed if the release build becomes slow)
* [x] Buffered sequencer
* [ ] Buffered chain view
* transport/arranger/sequencer:
* [x] Fix next/prev clip
* [ ] Move clip/track/scene
* [ ] Set track gain
* [ ] Play from one clip, record into another
* [ ] Offbeat of next clip starts during end of first
* [ ] Pattern chain
* [ ] Actually sync
* transport:
* [x] Focus transport to set BPM/sync/quant with `.,`
* [ ] Double/halve BPM with `xX`
* save and load:
* [ ] human readable format
* [ ] preserve formatting
* synth/sampler/fx chain:
* sampler:
* [x] Sample browser
* [ ] Resample
* [ ] Repitch
@ -100,15 +150,7 @@ Ardour, and probably others. The main view consists of three sections:
* [ ] Set BPM from sample
* [ ] Map MIDI note to sample
* [ ] Multisample
* Sequencer/Arranger:
* [x] Fix next/prev clip
* [ ] Move clip/track/scene
* [ ] Set track gain
* [ ] Play from one clip, record into another
* [ ] Offbeat of next clip starts during end of first
* [ ] Pattern chain
* [ ] Actually sync
* Chain:
* Chain:
* [ ] Add device
* [ ] View and connect device ports in chain view
* [ ] Open LV2 GUI
@ -117,11 +159,3 @@ Ardour, and probably others. The main view consists of three sections:
* [ ] Support CLAP plugins
* [ ] Support VST2
* [ ] Support VST3
* Transport:
* [x] Focus transport to set BPM/sync/quant with `.,`
* [ ] Double/halve BPM with `xX`
* Rendering:
* [ ] LineBuffer for scroll?
* [ ] Buffered rendering with e.g. needs_update (only needed if the release build becomes slow)
* [x] Buffered sequencer
* [ ] Buffered chain view