mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
95 lines
2.9 KiB
Markdown
95 lines
2.9 KiB
Markdown
> [!WARNING]
|
|
>
|
|
> As of 2024-09-10, I'm working hard to bring this project back
|
|
> to a usable state (as seen e.g. [here](https://mastodon.social/@unspeaker/112752419822653484)).
|
|
>
|
|
> I reached the limit of how much of the UI I can write imperatively,
|
|
> and started refactoring it in a more declarative style. I'm quite
|
|
> excited about the design of the internal TUI logic,
|
|
>
|
|
> Your moral support means a lot to me.
|
|
> Feel free to [contact me on Mastodon](https://mastodon.social/@unspeaker)!
|
|
>
|
|
> - the author ❤️
|
|
|
|
# tek
|
|
|
|
Tek is a MIDI sequencer, sampler, and plugin host for the Linux terminal.
|
|
|
|
See `demos/project.edn` for the initial contents of the session.
|
|
|
|
## Requirements
|
|
|
|
* Linux
|
|
* Rust toolchain
|
|
* JACK or Pipewire
|
|
|
|
### Recommended
|
|
|
|
* MIDI controller
|
|
* Samples at ~/Lab/Music/pak
|
|
* Odin2 LV2 ~/.lv2/Odin2.lv2
|
|
|
|
## 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:
|
|
|
|
* The **arranger view** corresponds to Ableton's Session and Arrangement views.
|
|
It allows you to put together a musical composition as a sequence of **phrases**,
|
|
playing simultaneously across multiple **tracks**.
|
|
* The **sequencer view** allows you to edit phrases, which consist of MIDI events.
|
|
* The **chain view** allows you to add **devices** to each track. Devices determine
|
|
how a given phrase will sound. Currently, there are two devices implemented:
|
|
**sampler** and **plugin**.
|
|
|
|
> [!NOTE]
|
|
> Use `Tab` to switch focus between views. Use `Enter` to exclusively focus the highlighted view,
|
|
> 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:
|
|
|
|
* Control:
|
|
* [ ] Customize key map
|
|
* [ ] MIDI map
|
|
* [ ] Scriptable
|
|
* [ ] Command panel
|
|
* [ ] Search panel
|
|
* Save project:
|
|
* [ ] Preserve EDN layout
|
|
* Samples:
|
|
* [x] Sample browser
|
|
* [ ] Resample
|
|
* [ ] Repitch
|
|
* [ ] Sample editor
|
|
* [ ] Envelope
|
|
* [ ] Stretch sample to BPM
|
|
* [ ] 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:
|
|
* [ ] 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
|
|
* 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
|