public Song(AudioUnit.AUGraph graph, int ioNode) { this.ins = new ArrangementInstruments(r, graph, ioNode); verse = new Section(r, ins); var verseNotes = Chord.Diminished7.GetNotes(verse.Progression.KeyTonic).ToList(); var verseKey = verse.Progression.KeyTonic; var chorusKey = PickRandom(verseNotes); while (chorusKey == verseKey) { chorusKey = PickRandom(verseNotes); } chorusKey += 12 * (r.Next(2) - 1); // Compensate for always going up on the scale var bridgeKey = PickRandom(verseNotes); while (bridgeKey == verseKey || bridgeKey == chorusKey) { bridgeKey = PickRandom(verseNotes); } bridgeKey += 12 * (r.Next(2) - 1); // Compensate for always going up on the scale chorus = new Section(r, ins, new ChordProgression(r, verse.Progression.Bpm, chorusKey, verse.Progression.EndVel, -1), verse.Melody.OctaveShift); bridge = new Section(r, ins, new ChordProgression(r, verse.Progression.Bpm, bridgeKey, chorus.Progression.EndVel, verse.Progression.EndVel), verse.Melody.OctaveShift); }
public Section(Random r, ArrangementInstruments ins, ChordProgression prog, int melodyOctave) { this.ins = ins; Progression = prog; Melody = new Melody(Progression, r, melodyOctave); Bassline = new Bassline(Progression, r); Percussion = new PercussionLine(Progression, r); }
public Section(Random r, ArrangementInstruments ins) : this(r, ins, new ChordProgression(r), Melody.PickOctave(r)) { }