Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emprcl/signls
a non-linear, generative midi sequencer in the terminal :infinity:
https://github.com/emprcl/signls
bubbletea cli midi midi-controller music musicmaking sequencer sequencer-midi tui
Last synced: 3 days ago
JSON representation
a non-linear, generative midi sequencer in the terminal :infinity:
- Host: GitHub
- URL: https://github.com/emprcl/signls
- Owner: emprcl
- License: mit
- Created: 2024-05-30T20:55:46.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-12-30T18:50:33.000Z (about 2 months ago)
- Last Synced: 2024-12-30T19:36:13.101Z (about 2 months ago)
- Topics: bubbletea, cli, midi, midi-controller, music, musicmaking, sequencer, sequencer-midi, tui
- Language: Go
- Homepage: https://empr.cl/signls/
- Size: 3.22 MB
- Stars: 99
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Signls
 
:notebook: **[User Manual](https://empr.cl/signls/)** • :tv: **[See it in action](https://www.youtube.com/watch?v=N2jTlwaZbgk)**
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](https://100r.co/site/orca.html) and [Nodal](https://nodalmusic.com/).
**_Signls is still in development, but it is expected to be relatively stable._**
_Feel free to [open an issue](https://github.com/emprcl/signls/issues/new)._

## Installation
[Download the last release](https://github.com/emprcl/signls/releases) for your platform.
Then:
```sh
# 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](https://go.dev/dl/) minimum.
Although you should be able to build it for either **linux**, **macOS** or **Windows**, it has only been tested on **linux**.```sh
# 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
```sh
# 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](https://synth.playtronica.com/)
- [Enfer](https://neauoire.github.io/Enfer/) ([github](https://github.com/neauoire/Enfer)) _*works only on linux*_
- [QSynth](https://qsynth.sourceforge.io/)### 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:
```sh
# 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 **stop**
- `tab` **show bank**
- `1` ... `9` **add nodes**
- `↑` `↓` `←` `→` **move cursor**
- `shift`+`↑` `↓` `←` `→` **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 parameter**
- `backspace` **remove selected nodes (or grid in bank)**
- `enter` **edit selected nodes**
- `m` **toggle selected nodes mute**
- `M` **mute/unmute all selected nodes**
- `/` **trigger selected node**
- `-` `=` **modify tempo**
- `'` `;` **modify root note**
- `"` `:` **modify scale**
- `ctrl`+`c` `x` `v` **copy, cut, paste selection**
- `escape` **exit parameter edit or bank selection**
- `f2` **edit midi configuration**
- `f10` **fit grid to window**
- `?` **show help**
- `ctrl`+`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:
```sh
./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](https://gitlab.com/gomidi/midi) for all midi communication
- [charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) as the main TUI framework
- [charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) for making things beautiful