An open API service indexing awesome lists of open source software.

https://github.com/pd3v/line

tiny command-line midi sequencer and language for live coding music
https://github.com/pd3v/line

audio c-plusplus cli command-line-tool live-coding lua midi music sequencer

Last synced: 18 days ago
JSON representation

tiny command-line midi sequencer and language for live coding music

Awesome Lists containing this project

README

          

# line [![line build macOS](https://github.com/pd3v/line/actions/workflows/cmake.yml/badge.svg)](https://github.com/pd3v/line/actions/workflows/cmake.yml)
A tiny command-line midi sequencer for live coding. (**ableton link** compatible version)

+ Sends MIDI messages to a chosen MIDI channel. Default is 1.

+ 1 instrument or 1 CC

To some videos live coding with it [go here.](https://x.com/search?q=%23linelivecoding&src=hashtag_click&f=live)(on X)

7 instances of **line** running simultaneously. 1 synth. 6 cc.

7 instances of **line** running simultaneously. 1 for notes, 6 cc. (Using tmux to split macOS terminal into 7 terminals)

---
### MacOS ready-to-run builds

#### Up-to-date Mac/Intel and Linux builds

+ Download them from https://pd3v.github.io/downloads
+ Go to the **build** folder, type `./line` and press Enter

#### There's a Mac/Intel build ready

+ Just unzip **line_0.5.25_ablt_lnk_Mac_Intel_build.zip** file
+ Go to the **build** folder, type `./line` and press Enter

### What you need to build *line* yourself

+ **readline** library (should be already on your system, if not, you have to install it)
+ **jack** library (**only** for Linux. It is not installed by default. If the computer has no audio/music production sofware succefully used then a *jack* installation is needed)
+ **CMake**

### To clone this repo with *rtmidi* and *link* submodules included

`git clone --recursive https://github.com/pd3v/line.git`

#### Build and run *line* yourself

(CMake is necessary)

+ Go to *line*'s folder

In command-line, type each of the following + Enter:

1. `./build.sh`

2. `cd build`

3. `./line`

**Now run your favorite synth, sampler, DAW, or other MIDI receiver!**

## Manual

With *line* running, type:

**Send a MIDI message:**

4 1/4 midi notes

`45 46 47 48` or `a3 as3 b3 c4`

1/4 1/8 1/8 1/4 1/4 notes

`45 .34 35. 48 49` or `a3 .as2 b2. c4 cs4`

'-' for a silent note

`36 .37 38. 41 .- 46.`

C Major chord + C Major arpeggio. All 1/4

`(c3 e3 g3) g5 e6 c2`

d note with 0.5 of amplitude

`d3~.5`

C Minor chord with 0.7 of amplitude

`(c4 eb4 g4)~.7`

*Note: amplitude is 1.0, by default*

**Set a MIDI channel:**

channel 2

`ch2`

**Set bpm:**

120 bpm

`bpm120`

**Set a range of values (MIDI default):**

minimum is 100

`mi100`

maximum is 1000

`ma1000`

**Set overall relative amplitude:**

50% of previous overall amplitude

`am50`

**Concatenate phrase n times:**

concat phrase 4x

`*4`

**Set phrase duration n times:**

Increase phrase duration 8x

`/8`

**Mute and unmute:**

`m` and `um`

**Reverse:**

`r`

**Scramble:**

scrambles notes within each rhythmic part and rhythmic structure

`s`

**Extra scramble:**

scrambles notes across the phrases and rhythmic structure

`x`

**Amplitude Scramble and Extra Scramble:**

`sa` and `xa`

**Save phrase to a queue:**

place it on top of the queue; position 0

`sp`

replace phrase in position 3

`sp3`

**Load phrase:**

load postion 0 phrase; it will play next

`lp0` or `:0`

**List saved phrases**

`l`

**Save queued phrases to *.line* (= txt) file**

Will assume prompt text as file name

`sf`

Save file with *mysynth.line* name

`sfmysynth`

*Note: Will also save line instance parameters (prompt, channel, notes/cc, range of values)*

**Load *.line* file to line**

Load sampler.line

`lfsampler`

*Note: Will apply to line instance saved parameters*

**Switch between notes and cc modes:**

notes mode

`n`

cc mode on channel 2

`cc2`

**Set cc sync:**

In-sync or Out-sync

`i` or `o`

**Relabel prompt:**

from default **line>** to **_my_synth>**, type:

`lbmy_synth`

**Exit:**

`ex`

**Display commands menu/extended menu:**

`ms` or `me`

**Set latency:** (ableton link's compatible *line* version only)

subtract 10 ms

`lt10`