private void AddFuries2ChirpsForInterlude2AndVerse3(Clytemnestra clytemnestra, Trk wind1, Palette chirpsPalette) { int[] chirpIndices = { 4, 6, 10, 0, 1, 3, 5, 7, 9, 11 }; int[] transpositions = { 2, 0, 4, 11, 5, 10, 6, 9, 7, 8 }; double[] velocityfactors = { 0.32, 0.3, 0.35, 0.45, 0.36, 0.43, 0.37, 0.42, 0.39, 0.4 }; IUniqueDef c3 = chirpsPalette.UniqueDurationDef(chirpIndices[3]); IUniqueDef c7 = chirpsPalette.UniqueDurationDef(chirpIndices[7]); int[] msPositions = { this[2].MsPositionReTrk, this[6].MsPositionReTrk, this[16].MsPositionReTrk, this[26].MsPositionReTrk, this[26].MsPositionReTrk + c3.MsDuration, clytemnestra[129].MsPositionReTrk, clytemnestra[143].MsPositionReTrk + 110, clytemnestra[156].MsPositionReTrk + 220, clytemnestra[156].MsPositionReTrk + 220 + c7.MsDuration, clytemnestra[168].MsPositionReTrk + 330, }; for(int i = 9; i >=0 ; --i) { MidiChordDef cheep = chirpsPalette.MidiChordDef(chirpIndices[i]); cheep.MsPositionReTrk = msPositions[i]; //cheep.MsDuration *= 2; cheep.AdjustVelocities(velocityfactors[i]); cheep.Transpose(transpositions[i]); InsertInRest(cheep); } AlignObjectAtIndex(50, 51, 52, clytemnestra[130].MsPositionReTrk); AlignObjectAtIndex(55, 56, 57, clytemnestra[159].MsPositionReTrk); AgglomerateRestOrChordAt(31); }
private void AddGrowlsToInterlude2AndVerse3(Clytemnestra clytemnestra, Palette growlsPalette) { int[] growlIndices = { 0,2,5,1 }; //int[] transpositions = { 0,0,0,0 }; //double[] velocityfactors = { 1,1,1,1 }; int[] msPositions = { this[24].MsPositionReTrk + 200, this[26].MsPositionReTrk + 200, this[30].MsPositionReTrk + 200, this[32].MsPositionReTrk + 200, }; int[] msDurations = { this[24].MsDuration / 2, this[26].MsDuration / 2, this[30].MsDuration / 2, this[32].MsDuration / 2 }; for(int i = 3; i >= 0; --i) { MidiChordDef growl = growlsPalette.UniqueDurationDef(growlIndices[i]) as MidiChordDef; Debug.Assert(growl != null); growl.MsPositionReTrk = msPositions[i]; growl.MsDuration = msDurations[i]; //growl.AdjustVelocities(velocityfactors[i]); //growl.Transpose(transpositions[i]); InsertInRest(growl); } AgglomerateRestOrChordAt(40); AlignObjectAtIndex(34, 35, 36, clytemnestra[140].MsPositionReTrk); AlignObjectAtIndex(35, 36, 37, clytemnestra[141].MsPositionReTrk); AlignObjectAtIndex(38, 39, 40, clytemnestra[162].MsPositionReTrk); }
private void GetSnores(int firstRestMsDuration, Clytemnestra clytemnestra, Trk wind1, Palette snoresPalette) { List<IUniqueDef> snores = new List<IUniqueDef>(); int msPosition = 0; IUniqueDef firstRest = new RestDef(msPosition, firstRestMsDuration); snores.Add(firstRest); msPosition += firstRestMsDuration; #region prelude + verse1 int[] transpositions1 = { 0, 0, 0, 0, 0, 1, 0 }; for(int i = 0; i < 7; ++i) { IUniqueDef snore = snoresPalette.UniqueDurationDef(i); snore.MsPositionReTrk = msPosition; msPosition += snore.MsDuration; MidiChordDef iumdd = snore as MidiChordDef; if(iumdd != null) { iumdd.Transpose(transpositions1[i]); iumdd.PitchWheelDeviation = 3; } snores.Add(snore); RestDef rest = new RestDef(msPosition, 2500); msPosition += rest.MsDuration; snores.Add(rest); } #endregion double factor; double msDuration; double restDuration; int[] transpositions2 = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 }; double[] factors = { 0.93, 0.865, 0.804, 0.748, 0.696, 0.647, 0.602, 0.56, 0.52, 0.484 }; for(int i = 0; i < 10; ++i) { IUniqueDef snore = snoresPalette.UniqueDurationDef(i / 2); snore.MsPositionReTrk = msPosition; factor = factors[i]; msDuration = snore.MsDuration * factor; snore.MsDuration = (int)msDuration; msPosition += snore.MsDuration; MidiChordDef iumdd = snore as MidiChordDef; if(iumdd != null) { iumdd.Transpose(transpositions2[i]); iumdd.PitchWheelDeviation = 20; } //iumdd.MidiVelocity = (byte)((double)snore.MidiVelocity * factor * factor); snores.Add(snore); restDuration = 2500 / factor; RestDef rest = new RestDef(msPosition, (int)restDuration); msPosition += rest.MsDuration; snores.Add(rest); } snores[snores.Count - 1].MsDuration = clytemnestra.EndMsPosition - snores[snores.Count - 1].MsPositionReTrk; this._uniqueDefs = snores; AdjustVelocitiesHairpin(13, Count, 0.25); #region alignments before Interlude3 AlignObjectAtIndex(7, 8, 9, clytemnestra[3].MsPositionReTrk); AlignObjectAtIndex(8, 9, 10, clytemnestra[7].MsPositionReTrk); AlignObjectAtIndex(9, 10, 11, clytemnestra[16].MsPositionReTrk); AlignObjectAtIndex(10, 11, 12, clytemnestra[24].MsPositionReTrk); AlignObjectAtIndex(11, 12, 13, clytemnestra[39].MsPositionReTrk); AlignObjectAtIndex(12, 13, 14, clytemnestra[42].MsPositionReTrk); AlignObjectAtIndex(14, 34, Count, wind1[38].MsPositionReTrk); // rest at start of Interlude3 #endregion RemoveScorePitchWheelCommands(0, 13); // pitchwheeldeviation is 20 for R2M }
private void WriteVoiceMidiDurationDefs1(TrkDef trkDef, Palette palette) { int bar1ChordMsSeparation = 1500; int msPosition = 0; for(int i = 0; i < palette.Count;++i) { IUniqueDef noteDef = palette.UniqueDurationDef(i); noteDef.MsPosition = msPosition; RestDef restDef = new RestDef(msPosition + noteDef.MsDuration, bar1ChordMsSeparation - noteDef.MsDuration); msPosition += bar1ChordMsSeparation; trkDef.UniqueDefs.Add(noteDef); trkDef.UniqueDefs.Add(restDef); } }
internal void GetBeforeInterlude3(Clytemnestra clytemnestra, TrkDef wind1, TrkDef furies2, Palette cheepsPalette) { int[] cheepIndices = { 4, 8, 2, 6, 10, 0, 1, 3, 5, 7, 9, 11 }; int[] transpositions = { 2, 1, 3, 0, 4, -3, 5, 10, 6, 9, 7, 8 }; double[] velocityfactors = { 0.32, 0.31, 0.34, 0.3, 0.35, 0.37, 0.36, 0.43, 0.37, 0.42, 0.39, 0.4 }; int[] msPositions = { furies2[8].MsPosition + 200, furies2[12].MsPosition + 100, furies2[24].MsPosition + 300, furies2[30].MsPosition + 400, furies2[40].MsPosition + 500, clytemnestra[122].MsPosition, clytemnestra[132].MsPosition + 110, clytemnestra[141].MsPosition + 220, clytemnestra[150].MsPosition + 330, clytemnestra[158].MsPosition + 440, clytemnestra[164].MsPosition + 550, clytemnestra[173].MsPosition, }; for(int i = 0; i < cheepsPalette.Count; ++i) { MidiChordDef cheep = cheepsPalette.UniqueDurationDef(cheepIndices[i]) as MidiChordDef; Debug.Assert(cheep != null); cheep.MsPosition = msPositions[i]; cheep.MsDuration *= 2; cheep.AdjustVelocities(velocityfactors[i]); cheep.Transpose(transpositions[i]); InsertInRest(cheep); } AlignObjectAtIndex(11, 12, 13, clytemnestra[123].MsPosition); AlignObjectAtIndex(21, 22, 23, clytemnestra[168].MsPosition); }
private List<IUniqueDef> GetTicksSequence(Palette ticksPalette) { List<IUniqueDef> ticksSequence = new List<IUniqueDef>(); int msPosition = 0; int[] transpositions = { 12, 14, 17 }; for(int i = 0; i < 3; ++i) { int[] contour = K.Contour(7, 4, 10 - i); for(int j = 6; j >= 0; --j) { IUniqueDef ticks = ticksPalette.UniqueDurationDef(contour[j] - 1); ticks.MsPositionReTrk = msPosition; msPosition += ticks.MsDuration; MidiChordDef iumdd = ticks as MidiChordDef; if(iumdd != null) { iumdd.Transpose(transpositions[i] + contour[j]); iumdd.AdjustVelocities(0.6); } ticksSequence.Add(ticks); } } return ticksSequence; }
private Trk GetFlutter1(Palette palette) { List<IUniqueDef> flutter1 = new List<IUniqueDef>(); int msPosition = 0; for(int i = 0; i < 7; ++i) { int[] contour = K.Contour(7, 11, 7); IUniqueDef flutter = palette.UniqueDurationDef(contour[i] - 1); flutter.MsPositionReTrk = msPosition; msPosition += flutter.MsDuration; flutter1.Add(flutter); if(i != 3 && i != 5) { RestDef rest = new RestDef(msPosition, flutter.MsDuration); msPosition += rest.MsDuration; flutter1.Add(rest); } } Trk furies3FlutterSequence1 = new Trk(this.MidiChannel, flutter1); return furies3FlutterSequence1; }
private void WriteVoiceMidiDurationDefs1(Trk trk, Palette palette) { trk.MsPositionReContainer = 0; int msPositionReFirstIUD = 0; int bar1ChordMsSeparation = 1500; for(int i = 0; i < palette.Count; ++i) { IUniqueDef durationDef = palette.UniqueDurationDef(i); durationDef.MsPositionReFirstUD = msPositionReFirstIUD; RestDef restDef = new RestDef(msPositionReFirstIUD + durationDef.MsDuration, bar1ChordMsSeparation - durationDef.MsDuration); msPositionReFirstIUD += bar1ChordMsSeparation; trk.UniqueDefs.Add(durationDef); trk.UniqueDefs.Add(restDef); } }