Skip to content
/ signls Public

♾️ a non-linear, generative midi sequencer in the terminal

License

Notifications You must be signed in to change notification settings

emprcl/signls

Repository files navigation

Signls

GitHub release (latest SemVer) GitHub Workflow Status

📓 User Manual • 📺 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.

signls screenshot

Installation

Download the last release for your platform.

Then:

# Extract files
mkdir -p signls && tar -zxvf signls_VERSION_PLATFORM.tar.gz -C 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:

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 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 select midi device
  • 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:

./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: