update more stuff in readme

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

116
README.md
View file

@ -1,3 +1,9 @@
# tek
a music making program for your terminal
## project status
> [!WARNING] > [!WARNING]
> >
> As of 2024-10-25, I'm on track to releasing `tek 0.2.0` sometime in December 2024. > As of 2024-10-25, I'm on track to releasing `tek 0.2.0` sometime in December 2024.
@ -16,24 +22,32 @@
> >
> Love, > 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 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 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). [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 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, of building upon them. Kind of like [Ableton](https://www.ableton.com/) — but for free systems,
and without all the bloat! and without all the bloat!
### flexible
Besides Ableton, I'm also inspired by the workflow of trackers and various old-school hardware 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 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 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 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. that will take me 100% there.
### programmable
A secondary goal is to make my music making environment extensible, programmable, and A secondary goal is to make my music making environment extensible, programmable, and
interoperable; the intended project format is an interoperable; the intended project format is an
[S-expression](https://en.wikipedia.org/wiki/S-expression)-based notation [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 looking for an excuse to embed a
[Forth](https://en.wikipedia.org/wiki/Forth_(programming_language)) 😏) [Forth](https://en.wikipedia.org/wiki/Forth_(programming_language)) 😏)
You can follow my progress, my tragicomical struggles with maintaining ## getting started
mental health as a rogue knowledge worker in a cyberpunk dystopia, and various
other trials'n'tribulations, on [Mastodon](https://mastodon.social/@unspeaker).
--- ### requirements
See `demos/project.edn` for the initial contents of the session.
## Requirements
* Linux * Linux
* Rust toolchain
* JACK or Pipewire * JACK or Pipewire
* a terminal (I use `kitty`)
### Recommended ### recommended
* MIDI controller * MIDI controller
* Samples at ~/Lab/Music/pak * Samples
* Odin2 LV2 ~/.lv2/Odin2.lv2 * 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, 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: 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. > 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. > Use `;` (semicolon) to open the command palette, which will list the remaining keybindings.
## TODO: ## todo
* Control: * framework:
* [ ] Customize key map * command system:
* [ ] MIDI map * [ ] customize key map
* [ ] Scriptable * [ ] midi map
* [ ] Command panel * [ ] scriptable
* [ ] Search panel * [ ] command panel
* Save project: * [ ] search panel
* [ ] Preserve EDN layout * rendering:
* Samples: * [ ] 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 * [x] Sample browser
* [ ] Resample * [ ] Resample
* [ ] Repitch * [ ] Repitch
@ -100,14 +150,6 @@ Ardour, and probably others. The main view consists of three sections:
* [ ] Set BPM from sample * [ ] Set BPM from sample
* [ ] Map MIDI note to sample * [ ] Map MIDI note to sample
* [ ] Multisample * [ ] 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 * [ ] Add device
* [ ] View and connect device ports in chain view * [ ] View and connect device ports in chain view
@ -117,11 +159,3 @@ Ardour, and probably others. The main view consists of three sections:
* [ ] Support CLAP plugins * [ ] Support CLAP plugins
* [ ] Support VST2 * [ ] Support VST2
* [ ] Support VST3 * [ ] 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