Live Music Coder M^2 OSC : Music Composer by Mathematics / Open Sound Control, for iPad
This application calculates note numbers and play their sounds in real-time operated by using command line style interface. It looks like Unix but also has new feature of our one-line-coding rule.
It supports Open Sound Control that can play external sounds too.
Try to play music by a sequence of numbers and formula instead of a score!
< Demo Movie >
We make an effort at simple and real-time operation. You can do all operations of the parameter change etc. while playing music in real-time.
[function]
define parameters
describe formula
start/stop sequencer
view data list
save/load/delete parameters
view current status
show help
[calculator]
1) user parameter
r1,r2 : array of note number
- note : 4 octave from 1 to 48, except for them are silence. 1tick = sixteen note.
- sound: sine wave which decreases envelope , no volume controller.
- tempo : 40 - 160 BPM
a0, b0, c0, d0 : 4 output sound channels. calculate each formula.
- simple example
define parameters:
r1=1 3 5 6
r2=13 15 17
a0=r1
b0=r2
->
output A track : C1 D1 E1 F1 C1 D1 E1 F1 C1 ……. repeated
output B track : C2 D2 E2 C2 D2 E2 C2 D2 E2 …….repeated
as sixteen note
2) operator
+, -, *, / , % ( add, subtract,multiply,divide,residue)
3) controller
?,:, !, <, =, >,| (if, else, not, smaller, equal, larger, separator)
4) embedded parameter
q : tick. increment this per sixteen note.
s : slider value (0~99)
x : random value (0~range) range:0~99
v1,v2,v3,v4 : store the value before separator(|) and branch(?,:), then reference in the expression.
(1|2|3|4| -> v1=1, v2=2, v3=3, v4=4)
a1~8, b1~8, c1~8, d1~8 : history of a0, b0, c0, d0 (a0->a1->a2->a3->a4->a5->a6->a7->a8)
5) formula samples
** First of all define the array (sequence) "r1/r2" of note number and then calculate them in the sound track (a0, b0, c0, d0).
r1=1 3 5 6 8 10
a0=r1+1 -> 2 4 6 7 9 11 ….
a0=r1?>5+12 -> 1 3 5 18 20 22 ….
(if r1>5 then r1+12)
a0=r1?>5+12:12|v3 -> 12 12 12 18 20 22 ….
(if r1>5 then r1+12 else 12)
a0=r1?>5|24:12|v4 -> 12 12 12 24 24 24 …..
(if r1>5 then 24 else 12)
----------
r2=1 0 1 1 2 0 2 2 (0: rest)
b0=r2
->
1 0 1 1 2 0 2 2 1 0 1 1 2 0 2 2 …
----------
a0=x
(simple random music)
[button]
start/stop : start/stop music
list/load/save/delete : list data file, load/save/delete data
status/view/help1/help2 : view current status, view selected data int the list, show help1/help2
clear : back cursor or clear-all-parameter
enter : execute command
r : define note number (switch r1/r2)
a : select (a0,1,2,3,4,5,6,7,8)
b : select (b0,1,2,3,4,5,6,7,8)
c : select (c0,1,2,3,4,5,6,7,8)
d : select (d0,1,2,3,4,5,6,7,8)
a0: describe formula of sound track 1 (left operand only)
b0: describe formula of sound track 2 (left operand only)
c0: describe formula of sound track 3 (left operand only)
d0: describe formula of sound track 4 (left operand only)
a1-8: reference history of output note number of track1 (right operand only)
b1-8: reference history of output note number of track2 (right operand only)
c1-8: reference history of output note number of track3 (right operand only)
d1-8: reference history of output note number of track4 (right operand only)
v : select (v1,2,3,4)
selector : switch octave
OSC : OSC setting