mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
update more stuff in readme
This commit is contained in:
parent
2b4c37e6a7
commit
859306983f
1 changed files with 86 additions and 52 deletions
138
README.md
138
README.md
|
|
@ -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,27 +111,21 @@ 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?
|
||||||
* [x] Sample browser
|
* [ ] Buffered rendering with e.g. needs_update (only needed if the release build becomes slow)
|
||||||
* [ ] Resample
|
* [x] Buffered sequencer
|
||||||
* [ ] Repitch
|
* [ ] Buffered chain view
|
||||||
* [ ] Sample editor
|
* transport/arranger/sequencer:
|
||||||
* [ ] Envelope
|
|
||||||
* [ ] Stretch sample to BPM
|
|
||||||
* [ ] Set BPM from sample
|
|
||||||
* [ ] Map MIDI note to sample
|
|
||||||
* [ ] Multisample
|
|
||||||
* Sequencer/Arranger:
|
|
||||||
* [x] Fix next/prev clip
|
* [x] Fix next/prev clip
|
||||||
* [ ] Move clip/track/scene
|
* [ ] Move clip/track/scene
|
||||||
* [ ] Set track gain
|
* [ ] Set track gain
|
||||||
|
|
@ -108,20 +133,29 @@ Ardour, and probably others. The main view consists of three sections:
|
||||||
* [ ] Offbeat of next clip starts during end of first
|
* [ ] Offbeat of next clip starts during end of first
|
||||||
* [ ] Pattern chain
|
* [ ] Pattern chain
|
||||||
* [ ] Actually sync
|
* [ ] Actually sync
|
||||||
* Chain:
|
* transport:
|
||||||
* [ ] Add device
|
* [x] Focus transport to set BPM/sync/quant with `.,`
|
||||||
* [ ] View and connect device ports in chain view
|
* [ ] Double/halve BPM with `xX`
|
||||||
* [ ] Open LV2 GUI
|
* save and load:
|
||||||
* [ ] Pin favorite FX parameters with `*`
|
* [ ] human readable format
|
||||||
* [ ] Parallel monitoring chain
|
* [ ] preserve formatting
|
||||||
* [ ] Support CLAP plugins
|
* synth/sampler/fx chain:
|
||||||
* [ ] Support VST2
|
* sampler:
|
||||||
* [ ] Support VST3
|
* [x] Sample browser
|
||||||
* Transport:
|
* [ ] Resample
|
||||||
* [x] Focus transport to set BPM/sync/quant with `.,`
|
* [ ] Repitch
|
||||||
* [ ] Double/halve BPM with `xX`
|
* [ ] Sample editor
|
||||||
* Rendering:
|
* [ ] Envelope
|
||||||
* [ ] LineBuffer for scroll?
|
* [ ] Stretch sample to BPM
|
||||||
* [ ] Buffered rendering with e.g. needs_update (only needed if the release build becomes slow)
|
* [ ] Set BPM from sample
|
||||||
* [x] Buffered sequencer
|
* [ ] Map MIDI note to sample
|
||||||
* [ ] Buffered chain view
|
* [ ] Multisample
|
||||||
|
* Chain:
|
||||||
|
* [ ] Add device
|
||||||
|
* [ ] View and connect device ports in chain view
|
||||||
|
* [ ] Open LV2 GUI
|
||||||
|
* [ ] Pin favorite FX parameters with `*`
|
||||||
|
* [ ] Parallel monitoring chain
|
||||||
|
* [ ] Support CLAP plugins
|
||||||
|
* [ ] Support VST2
|
||||||
|
* [ ] Support VST3
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue