Awesome
Signls
:notebook: User Manual • :tv: See it in action
Signls (pronounced signals) is a non-linear, generative midi sequencer designed for music composition and live performance. It's cross-platform (Linux, macOS et Windows) and it runs in the terminal (TUI).
It takes inspiration from Orca and Nodal.
Signls is still in development, but it is expected to be relatively stable.
Feel free to open an issue.
Installation
Download the last release for your platform.
Then:
# Extract files
mkdir -p signls && tar -zxvf signls_VERSION_PLATFORM.tar.gz -C signls
cd signls
# Run signls
./signls
Build it yourself
You'll need go 1.23 minimum. Although you should be able to build it for either linux, macOS or Windows, it has only been tested on linux.
# Linux
sudo apt-get install libasound2-dev
make GOLANG_OS=linux build
# macOS
make GOLANG_OS=darwin build
# Windows
make GOLANG_OS=windows build
# Raspberry Pi OS
sudo apt install libasound2-dev
make GOLANG_OS=linux GOLANG_ARCH=arm64 build
Usage
# Run signls
./signls
# Display current version
./signls --version
Hit ?
to see all keybindings. esc
to quit.
Some companion apps that receive MIDI for testing Signls:
- Webmidi synths
- Enfer (github) works only on linux
- QSynth
Keyboard mapping
Keys mapping is fully customizable. After running signls for the first time, a config.json
is created.
You can edit all the keys inside it.
You can select one of the default keyboard layouts available:
# QWERTY
./signls --keyboard qwerty
# AZERTY
./signls --keyboard azerty
# QWERTY MAC
./signls --keyboard qwerty-mac
# AZERTY MAC
./signls --keyboard azerty-mac
Default keyboard mapping
For qwerty keyboards, here's the default mapping:
space
play or stoptab
show bank1
...9
add nodes↑
↓
←
→
move cursorshift
+↑
↓
←
→
multiple selection (or modify alt parameter mode in edit mode)ctrl
+↑
↓
←
→
modify selected node direction (modify parameter or alt parameter value).
text edit mode for selected parameterbackspace
remove selected nodes (or grid in bank)enter
edit selected nodesm
toggle selected nodes muteM
mute/unmute all selected nodes/
trigger selected node-
=
modify tempo'
;
modify root note"
:
modify scalectrl
+c
x
v
copy, cut, paste selectionescape
exit parameter edit or bank selectionf2
edit midi configurationf10
fit grid to window?
show helpctrl
+q
quit
Bank management
Each time you start Signls, a json file (default: default.json
) containing 32 grid slots is loaded.
For selecting a different file, use the --bank
flag:
./signls --bank my-grids.json
Each time you change grid or quit the program, the current grid is saved to the file.
Acknowledgments
Signls uses a few awesome packages:
- gomidi/midi for all midi communication
- charmbracelet/bubbletea as the main TUI framework
- charmbracelet/lipgloss for making things beautiful