use of com.xenoage.zong.io.selection.Cursor in project Zong by Xenoage.
the class TimeMapperTest method getScore.
/**
* Creates the following score (each space is a quarter note)
*
* measures:
* repetitions: voltas/signs: 1───┐2───┐ d.c. senza rep
* barlines: | |: | :| |1 ||
* part 0: staff 0: voice 0: |1 |1 |2 2 |1 |1 ||
* voice 1: | |442 |42 4|1 d |1 || //d = direction
* staff 1: voice 0: |2 44|1 | |1 |1 ||
* part 1: staff 2: voice 0: |1 |1 |2 2 | |2 2 ||
*
* play ranges: 0---------------
* 1---- 2---------
* 3--------- 4---------
*/
private Score getScore() {
val score = new Score();
new PartAdd(score, new Part("p0", null, 2, null), 0, null).execute();
new PartAdd(score, new Part("p1", null, 1, null), 1, null).execute();
new MeasureAdd(score, 5).execute();
// time, barlines, voltas and signs
score.getColumnHeader(0).setTime(new TimeSignature(TimeType.Companion.getTime_4_4()));
score.getColumnHeader(1).setStartBarline(Companion.barlineForwardRepeat(Regular));
score.getColumnHeader(2).setVolta(new Volta(1, range(1, 1), "1", true));
score.getColumnHeader(2).setEndBarline(Companion.barlineBackwardRepeat(Regular, 1));
score.getColumnHeader(3).setVolta(new Volta(1, range(2, 2), "2", true));
score.getColumnHeader(4).setNavigationOrigin(new DaCapo(false));
// staff 0, voice 0
val cursor = new Cursor(score, mp0, true);
cursor.write(e(1));
cursor.write(e(1));
cursor.write(e(2));
cursor.write(e(2));
cursor.write(e(1));
cursor.write(e(1));
// staff 0, voice 1
cursor.setMp(atElement(0, 1, 1, 0));
cursor.write(e(4));
cursor.write(e(4));
cursor.write(e(2));
cursor.write(e(4));
cursor.write(e(2));
cursor.write(e(4));
cursor.write(e(1));
cursor.write(e(1));
new MeasureElementWrite(new Dynamic(DynamicValue.f), score.getMeasure(atMeasure(0, 3)), Companion.get_1$2()).execute();
// staff 1, voice 0
cursor.setMp(atElement(1, 0, 0, 0));
cursor.write(e(2));
cursor.write(e(4));
cursor.write(e(4));
cursor.write(e(1));
cursor.setMp(atElement(1, 2, 0, 0));
cursor.write(e(1));
cursor.write(e(1));
// staff 2, voice 0
cursor.setMp(atElement(2, 0, 0, 0));
cursor.write(e(1));
cursor.write(e(1));
cursor.write(e(2));
cursor.write(e(2));
cursor.setMp(atElement(2, 4, 0, 0));
cursor.write(e(2));
cursor.write(e(2));
return score;
}
use of com.xenoage.zong.io.selection.Cursor in project Zong by Xenoage.
the class VoiceElementIteratorTest method createTestScore.
/**
* Test score with 4 staves and 4 measures. In staves 1 and 3, the measures 1 and 3 have each
* two voices with 4 quarter rests. The other measures have a single voice and
* a full rest.
*/
public static Score createTestScore() {
Score score = new Score();
Cursor cursor = new Cursor(score, MP.mp0, true);
for (int staff : range(4)) {
for (int measure : range(4)) {
if ((staff == 1 || staff == 3) && (measure == 1 || measure == 3)) {
// 2 voices with each 4 quarter notes
for (int voice : range(2)) {
cursor.setMp(atElement(staff, measure, voice, 0));
for (int i = 0; i < 4; i++) cursor.write(new Rest(Companion.fr(1, 4)));
}
} else {
// full rest
cursor.setMp(atElement(staff, measure, 0, 0));
cursor.write(new Rest(Companion.fr(1)));
}
}
}
return score;
}
use of com.xenoage.zong.io.selection.Cursor in project Zong by Xenoage.
the class MidiVelocityConverterTry method createTestScore.
public static Score createTestScore() {
Score ret = new Score();
Instrument instr = Instrument.Companion.getDefaultInstrument();
Part pianoPart = new Part("Test", "T", 1, ilist(instr));
new PartAdd(ret, pianoPart, 0, null).execute();
Cursor cursor = new Cursor(ret, mp0, true);
cursor.write((ColumnElement) new TraditionalKey(-3));
cursor.write((ColumnElement) new TimeSignature(Companion.timeType(3, 4)));
cursor.write(new Clef(ClefType.Companion.getClefTreble()));
Fraction f4 = Companion.fr(1, 4);
Chord attachC;
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.pp));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getA(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.ff));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.sfp));
/*
Chord chord;
Voice voice = measure.getVoices().get(0);
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.pp));
chord = voice.addNote(pi'A', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.ff));
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.sfp));
*/
cursor.setMp(mp0.withVoice(1));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getC(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.fff));
/*
voice = measure.addVoice();
chord = voice.addNote(pi'C', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.fff));
*/
cursor.setMp(mp0.withMeasure(1));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
// cursor.withScore(ScoreController.attachElement(cursor.getScore(), attachC, new Dynamic(DynamicsType.pp)));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getA(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.pp));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.pp));
cursor.setMp(cursor.getMP().withElement(0).withVoice(1));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getC(), 5)));
/*
measure = staff.getMeasures().get(1);
voice = measure.getVoices().get(0);
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
//chord.addDirection(new Dynamic(DynamicsType.pp));
chord = voice.addNote(pi'A', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.pp));
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.pp));
voice = measure.addVoice();
chord = voice.addNote(pi'C', 0, 5), fr(1, 4));
*/
cursor.setMp(mp0.withMeasure(2));
cursor.write(attachC = chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
attachC.addDirection(new Dynamic(DynamicValue.sfz));
cursor.write(chord(f4, Pitch.Companion.pi(Pitch.Companion.getA(), 4)));
// cursor = cursor.withScore(ScoreController.attachElement(cursor.getScore(), attachC, new Dynamic(DynamicsType.pp)));
cursor.write(chord(f4, Pitch.Companion.pi(Pitch.Companion.getG(), 4)));
// cursor = cursor.withScore(ScoreController.attachElement(cursor.getScore(), attachC, new Dynamic(DynamicsType.pp)));
cursor.setMp(mp0.withMeasure(2).withVoice(2));
cursor.write(chord(f4, Pitch.Companion.pi(Pitch.Companion.getC(), 5)));
/*
measure = staff.getMeasures().get(2);
voice = measure.getVoices().get(0);
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
chord.addDirection(new Dynamic(DynamicsType.sfz));
chord = voice.addNote(pi'A', 0, 4), fr(1, 4));
//chord.addDirection(new Dynamic(DynamicsType.pp));
chord = voice.addNote(pi'G', 0, 4), fr(1, 4));
//chord.addDirection(new Dynamic(DynamicsType.pp));
voice = measure.addVoice();
voice = measure.addVoice();
chord = voice.addNote(pi'C',0,5), fr(1,2));
*/
return cursor.getScore();
}
use of com.xenoage.zong.io.selection.Cursor in project Zong by Xenoage.
the class StrategyTest method getScore.
@Override
public Score getScore() {
// collect test material
List<Example> examples = getAllExamples();
// text style
FormattedTextStyle style = Companion.getDefaultStyle().withFont(new FontInfo("Arial", 6f, FontStyle.normal));
// one chord in each measure
Score score = ScoreFactory.create1Staff();
Cursor cursor = new Cursor(score, mp0, true);
cursor.write(new TimeSignature(TimeType.Companion.getTime_3_4()));
for (int i : range(examples)) {
Example example = examples.get(i);
cursor.setMp(atElement(0, i, 0, 0));
// write key
int fifths = ((TraditionalKey) example.getContext().getKey()).getFifths();
cursor.write((ColumnElement) new TraditionalKey(fifths));
// write example name (each 2nd example one line down for better reading)
String text = (i % 2 == 1 ? "\n" : "") + example.getName();
cursor.write((MeasureElement) new Words(styleText(text, style)));
// write chord with all accidentals from context (or a rest)
Map<Pitch, Integer> accs = example.getContext().getAccidentals();
if (accs.size() > 0) {
Pitch[] pitches = new Pitch[accs.size()];
int accIndex = 0;
for (Pitch acc : accs.keySet()) {
pitches[accIndex] = Companion.pi(acc.getStep(), accs.get(acc), acc.getOctave());
accIndex++;
}
Chord accsChords = ChordFactory.chord(pitches, Companion.get_1$4());
cursor.write(accsChords);
} else {
cursor.write(new Rest(Companion.get_1$4()));
}
// write a rest
cursor.write(new Rest(Companion.get_1$4()));
// write the tested chord
Chord testedChord = ChordFactory.chord(example.getPitches().toArray(new Pitch[0]), Companion.get_1$4());
cursor.write(testedChord);
}
return score;
}
use of com.xenoage.zong.io.selection.Cursor in project Zong by Xenoage.
the class ColumnElementIteratorTest method createTestScore.
/**
* Test score with 4 measures. The measures 1 and 3 have each
* a time signature, a middle barline at 1/4 and an end barline.
*/
public static Score createTestScore() {
Score score = new Score();
Cursor cursor = new Cursor(score, MP.mp0, true);
for (int measure : new int[] { 1, 3 }) {
cursor.setMp(mp(unknown, measure, 0, Companion.get_0(), 0));
cursor.write(new TimeSignature(Companion.getTime_4_4()));
cursor.setMp(mp(unknown, measure, unknown, Companion.fr(1, 4), 0));
cursor.write(Companion.barlineRegular());
ColumnHeader column = score.getColumnHeader(measure);
column.setEndBarline(Companion.barline(LightLight));
}
return score;
}
Aggregations