Returns a FoscIteration.
Iterates objects
| client | Gets client. |
| asCompileString |
| components | |
| leafPairs | |
| leaves | |
| logicalTies | |
| outOfRange | |
| pitchPairs | |
| pitches | |
| runs | |
| timeline | !!!TODO: protoype can not currently be FoscLogicalTie |
| timelineByLogicalTies | |
| verticalMoments |
Iterates notes.
a = FoscLeafMaker().(#[60,62,64,65,67,69], [1/8]);
b = [];
FoscIteration(a).components.do { |each| b = b.add(each.cs) };
b.join("\n");FoscNote('C4', 1/8)
FoscNote('D4', 1/8)
FoscNote('E4', 1/8)
FoscNote('F4', 1/8)
FoscNote('G4', 1/8)
FoscNote('A4', 1/8)Gets client.
Returns component or selection.
Example
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65], [1/4]));
FoscIteration(a).client;FoscStaff([ ], 'Staff', false)Example
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65], [1/4]));
FoscIteration(a[0..]).client;FoscSelection([ FoscNote(FoscPitch("C4"), FoscDuration(1, 4)), FoscNote(FoscPitch("D4"), FoscDuration(1, 4)), FoscNote(FoscPitch("E4"), FoscDuration(1, 4)), FoscNote(FoscPitch("F4"), FoscDuration(1, 4)) ])Example
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65,67,69], [1/8]));
b = [];
FoscIteration(a).components.do { |each| b = b.add(each.cs) };
b.join("\n");FoscStaff([ ], 'Staff', false)
FoscNote('C4', 1/8)
FoscNote('D4', 1/8)
FoscNote('E4', 1/8)
FoscNote('F4', 1/8)
FoscNote('G4', 1/8)
FoscNote('A4', 1/8)Example
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65,67,69], [1/8]));
b = [];
FoscIteration(a).components(prototype: FoscNote).do { |each| b = b.add(each.cs) };
b.join("\n");FoscNote('C4', 1/8)
FoscNote('D4', 1/8)
FoscNote('E4', 1/8)
FoscNote('F4', 1/8)
FoscNote('G4', 1/8)
FoscNote('A4', 1/8)Example
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65,67,69], [1/8]));
b = [];
FoscIteration(a).components(FoscNote, reverse: true).do { |each| b = b.add(each.cs) };
b.join("\n");FoscNote('A4', 1/8)
FoscNote('G4', 1/8)
FoscNote('F4', 1/8)
FoscNote('E4', 1/8)
FoscNote('D4', 1/8)
FoscNote('C4', 1/8)!!!TODO: is this method needed? can just do:
a = FoscStaff(FoscLeafMaker().(#[60,62,64,65,67,69], [1/8]));
o = [];
FoscIteration(a).leaves.doAdjacentPairs { |a, b| o = o.add([a.str, b.str]) };
o.join("\n");[ c'8, d'8 ]
[ d'8, e'8 ]
[ e'8, f'8 ]
[ f'8, g'8 ]
[ g'8, a'8 ]iterate all leaves
a = FoscLeafMaker().(#[60,62,nil,65,67,nil], [1/8]);
o = [];
FoscIteration(a).leaves.do { |each| o = o.add(each.cs) };
o.join("\n");FoscNote('C4', 1/8)
FoscNote('D4', 1/8)
FoscRest(1/8)
FoscNote('F4', 1/8)
FoscNote('G4', 1/8)
FoscRest(1/8)iterate pitched leaves
a = FoscLeafMaker().(#[60,62,nil,65,67,nil], [1/8]);
o = [];
FoscIteration(a).leaves(pitched: true).do { |each| o = o.add(each.cs) };
o.join("\n");FoscNote('C4', 1/8)
FoscNote('D4', 1/8)
FoscNote('F4', 1/8)
FoscNote('G4', 1/8)iterate non-pitched leaves
a = FoscLeafMaker().(#[60,62,nil,65,67,nil], [1/8]);
o = [];
FoscIteration(a).leaves(pitched: false).do { |each| o = o.add(each.cs) };
o.join("\n");FoscRest(1/8)
FoscRest(1/8)iterate all leaf pairs
a = FoscLeafMaker().(#[60,62,64,65,67], [1/8]);
o = [];
FoscIteration(a).leaves.doAdjacentPairs { |a, b| o = o.add([a.cs, b.cs]) };
o.join("\n");[ FoscNote('C4', 1/8), FoscNote('D4', 1/8) ]
[ FoscNote('D4', 1/8), FoscNote('E4', 1/8) ]
[ FoscNote('E4', 1/8), FoscNote('F4', 1/8) ]
[ FoscNote('F4', 1/8), FoscNote('G4', 1/8) ]Example
a = FoscStaff(FoscLeafMaker().(#[60,60,62,nil,64,64], [1/4,1/24,1/12,1/8,1/4,1/4]));
m = a.selectLeaves;
tie(m[0..1]);
tie(m[4..]);
a.show;
iterate all logicalTies
b = FoscIteration(a).logicalTies;
o = [];
b.all.do { |each| o = o.add(each.items.collect { |each| each.cs } ) };
o.join("\n");[ FoscNote('C4', 1/4), FoscNote('C4', 1/16) ]
[ FoscNote('D4', 1/8) ]
[ FoscRest(1/8) ]
[ FoscNote('E4', 1/4), FoscNote('E4', 1/4) ]iterate pitched logicalTies
FIXME output: ERROR: Message __items__ not understood.
b = FoscIteration(a).logicalTies(pitched: true);
o = [];
b.do { |each| o = o.add(each.items.collect { |each| each.cs } ) };
o.join("\n");iterate non-pitched logicalTies
b = FoscIteration(a).logicalTies(pitched: false);
o = [];
b.do { |each| o = o.add(each.items.collect { |each| each.cs } ) };
o.join("\n");[ FoscRest(1/8) ]iterate nontrivial logicalTies
FIXME output: ERROR: Message __items__ not understood.
b = FoscIteration(a).logicalTies(nontrivial: true);
b.do { |each| each.items.collect { |each| each.cs }.postln };iterate trivial logicalTies
FIXME output: ERROR: Message __items__ not understood.
b = FoscIteration(a).logicalTies(nontrivial: false);
b.do { |each| each.items.collect { |each| each.cs }.postln };iterate logicalTies in reverse order
FIXME output: ERROR: Message __items__ not understood.
b = FoscIteration(a).logicalTies(reverse: true);
b.do { |each| each.items.collect { |each| each.cs }.postln };Iterate pitches in selection.
a = FoscLeafMaker().(#[60,62,64,[61,63,65]], [1/8]);
o = [];
FoscIteration(a).pitches.do { |each| o = o.add(each.str) };
o.join("\n");c'
d'
e'
cs'
ef'
f'Iterate pitches in container.
a = FoscStaff(FoscLeafMaker().(#[60,62,64,[61,63,65]], [1/8]));
o = [];
FoscIteration(a).pitches.do { |each| o = o.add(each.str) };
o.join("\n");c'
d'
e'
cs'
ef'
f'!!!TODO: not supported in fosc
Iterate pitches in FoscPitchSet.
a = FoscPitchSet(#[60,62,64,65]);
o = [];
FoscIteration(a).pitches.do { |each| o = o.add(each.str) };
o.join("\n");!!!TODO: not supported in fosc
Iterate various types of object.
a = [FoscPitch("C#4"), FoscNote(72, 1/4), FoscChord(#[60,64,67], 1/4)];
o = [];
FoscIteration(a).pitches.do { |each| o = o.add(each.str) };
o.join("\n");!!!TODO: protoype can not currently be FoscLogicalTie
iterate all leaves
a = FoscStaff(FoscLeafMaker().((60..67), [1/8]));
b = FoscStaff(FoscLeafMaker().((60..63), [1/4]));
c = FoscScore([a, b]);
FoscIteration(c).timeline.do { |each, i| each.attach(FoscMarkup(i, 'above')) };
c.show;
iterate all leaves in reverse
a = FoscStaff(FoscLeafMaker().((60..67), [1/8]));
b = FoscStaff(FoscLeafMaker().((60..63), [1/4]));
c = FoscScore([a, b]);
FoscIteration(c).timeline(reverse: true).do { |each, i| each.attach(FoscMarkup(i, 'above')) };
c.show;
iterate pitched leaves
a = FoscStaff(FoscLeafMaker().([60,61,nil,63,nil,nil,65], [1/8]));
b = FoscStaff(FoscLeafMaker().((60..63), [1/4]));
c = FoscScore([a, b]);
FoscIteration(c).timeline(pitched: true).do { |each, i| each.attach(FoscMarkup(i, 'above')) };
c.show;
iterate non-pitched leaves
a = FoscStaff(FoscLeafMaker().(#[60,61,nil,63,nil,nil,65], [1/8]));
b = FoscStaff(FoscLeafMaker().((60..63), [1/4]));
c = FoscScore([a, b]);
FoscIteration(c).timeline(pitched: false).do { |each, i| each.attach(FoscMarkup(i, 'above')) };
c.show;
iterate logical ties
a = FoscStaff(FoscLeafMaker().((60..67), [5/32]));
b = FoscStaff(FoscLeafMaker().((60..63), [5/16]));
c = FoscScore([a, b]);
FoscIteration(c).timelineByLogicalTies.do { |each, i| each.head.attach(FoscMarkup(i, 'above')) };
c.show;
iterate pitched logical ties
a = FoscStaff(FoscLeafMaker().(#[60,61,nil,63,nil,nil,65], [5/32]));
b = FoscStaff(FoscLeafMaker().((60..63), [5/16]));
c = FoscScore([a, b]);
FoscIteration(c).timelineByLogicalTies(pitched: true)
.do { |each, i| each.head.attach(FoscMarkup(i, 'above')) };
c.show;