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
- Host: GitHub
- URL: https://github.com/pd3v/line
- Owner: pd3v
- License: mit
- Created: 2019-08-12T16:11:56.000Z (over 6 years ago)
- Default Branch: ableton_link_compatible
- Last Pushed: 2024-09-11T12:35:16.000Z (about 1 year ago)
- Last Synced: 2024-09-11T19:09:56.370Z (about 1 year ago)
- Topics: audio, c-plusplus, cli, command-line-tool, live-coding, lua, midi, music, sequencer
- Language: C++
- Homepage:
- Size: 11.2 MB
- Stars: 75
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-tuis - line - line midi sequencer and language for live coding (Table of Contents)
- awesome-livecoding - line - A tiny command-line midi sequencer and language for live coding. (Languages)
- awesome-cli-apps-in-a-csv - line - Tiny command-line midi sequencer and language for live coding. (<a name="music"></a>Sound and music)
README
# line [](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)
.png)
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`