A daw, in a terminal. Termdaw is a (or should become a) terminal, graph based programmable pipeline digital audio workstation that is friendly to automatization and algorithmic composition.
- Audio
- Render audio
- Any samplerate: will up or down sample from project rate
- 8, 16, 24 or 32 bit bitdepth
- Play back audio
- Render audio
- Terminal UX Workflow
- Controls: play, pause, stop
- Controls: set/get time, dash in time
- Controls: refresh, render
- View: Terminal logging, warnings, errors, colors
- Toml configuration
- Streaming Workflow
- Streaming mode (input through stdin)
- Structure
- Sample Bank
- Floww Bank
- Graph rendering structure
- Base Vertex, with:
- Gain
- Panning
- Input summation
- Vertex types
- Sum vertex
- Normalize vertex
- Sample loop vertex
- Envelope vertex
- Sample multi vertex
- Sample lerp vertex
- Lv2 fx vertex
- Lv2 midi instrument vertex
- Debug Sine synth vertex
- Simple synth vertex
- Wavetable synth vertex
- Band pass/cut vertex
- Floww
- Read from midi
- Read floww from floww description
- Read binary floww from stdin stream
- Read human readable floww from stdin stream
- Lua
- To configure the project (sample rate, etc)
- Load resources (samples and plugins)
- Construct graph
- Refreshable: remove old, add new, keep same
- Docs
- Config documentation
- Examples
- Multitype graph
- In/Out ports
- Type checker
- Stereo type
- Mono type
- Floww type
- Value type
- Value automation
- Lufs mastering tool
- Linear interpolation of floww notes
- Better scrolling through time handling of on/off notes
- Split vertex
- Active toggle on vertices
- Disable completely dry vertices
- Prune disabled vertices from the graph
- Multithreading
- Bounded normalization in absence of the lv2 feature
- Bounded normalization: lv2 plugin's output can have more gain than input, no way to know how much.
[project]
name = "Example Project"
[settings]
buffer_length = 1024
project_samplerate = 48000
main = "project.lua"
-- Our lua file, where we do all the work
set_length(3.0);
set_render_samplerate(44100);
set_render_bitdepth(16);
set_output_file("outp.wav");
load_sample("snare", "/home/cody/doc/samples/drumnbass/snare-1/snare-1-v-9.wav");
load_sample("kick", "/home/cody/doc/samples/drumnbass/kick/kick-v-9.wav");
add_sampleloop("one", 1.0, 0.0, "snare");
add_sampleloop("two", 1.0, 0.0, "kick");
add_normalize("sum", 1.0, 0.0);
connect("one", "sum");
connect("two", "sum");
set_output("sum");
Copyright (C) 2024 Cody Bloemhard
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.