Coder Social home page Coder Social logo

pd3v / line Goto Github PK

View Code? Open in Web Editor NEW
71.0 2.0 3.0 11.5 MB

tiny command-line midi sequencer and language for live coding

License: MIT License

C++ 78.76% CMake 5.42% Shell 2.14% Python 3.57% Lua 10.11%
music audio sequencer command-line-tool midi live-coding c-plusplus cli lua

line's Introduction

line line build macOS

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.(twitter)

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

There's a Mac/M1/M2 build ready

  • Go to Actions page > latest workflow run > section Artifacts, download and unzip the file
  • 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

  • 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

(CMake is necessary)

  • Go to line's folder

In command-line, type (1. as Admin) and 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

line's People

Contributors

overtinkering avatar pd3v avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

line's Issues

Update compilation instructions (rtmidi submodule)

I'm trying to build line on Ubuntu 22.04. I cloned the repository and ran ./build.sh which gave me the following error:

./build.sh
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:11 (add_subdirectory):
  The source directory

    /home/hellocatfood/Desktop/line/externals/rtmidi

  does not contain a CMakeLists.txt file.


-- Configuring incomplete, errors occurred!
See also "/home/hellocatfood/Desktop/line/build/CMakeFiles/CMakeOutput.log".
make: *** No targets specified and no makefile found. Stop.

I checked and have librtmidi-dev installed, but after looking at the source code in github noticed that rtmidi is listed as a submodule. When I clone the repository with git clone --recursive https://github.com/pd3v/line.git I was able to progress further. Can the readme be updated to add git clone --recursive https://github.com/pd3v/line.git and any other necessary dependencies?

Lpeg parsing lib is not loading

Adding these

local lpeg = require 'lpeg'
lpeg.locale(lpeg) 

to lineparsertest.lua will not parse the rest of the code in the file.

math.randomseed(os.time())

offset = 23

a = offset+(math.random()*100)%(90-offset)

I'm building lua and lpeg in the project.

Which version of lua to use?

I tried to build line on a raspberry pi 4 (with jack support) and could not pin down the version of lua that was required.

Can you please provide some guidance on this?

Provide a license

This looks like a nice little tool, excited to try it out :) However I couldn't find a mention of any license for the source code, would be great if you could add a file LICENSE or COPYING with a proper license text, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.