public SongStyle(SongComposer composer, Song song, MusicalScale musicalScale, float minimumNoteLength) { Composer = composer; Song = song; RunningTime = 0; MusicalScale = musicalScale; MinimumNoteLength = minimumNoteLength; ChordsTicksToHold = new int[4]; BassMelodicStyles = new BassMelodicStyle[4]; MelodicStyles = new MelodicStyle[4]; FirstDegrees = new int[4]; BassTimbres = new NoteTimbre[4]; ChordTimbres = new NoteTimbre[4]; MelodyTimbres = new NoteTimbre[4]; ChordTypes = new ChordType[4]; for (int i = 0; i < 4; i++) { ChordsTicksToHold[i] = -1; BassMelodicStyles[i] = BassMelodicStyle.None; MelodicStyles[i] = MelodicStyle.None; FirstDegrees[i] = -1; BassTimbres[i] = NoteTimbre.None; ChordTimbres[i] = NoteTimbre.None; MelodyTimbres[i] = NoteTimbre.None; ChordTypes[i] = ChordType.None; } LoadChords(); }
protected void AddChordToSong(float time, float volume, int degree, NoteTimbre timbre, ChordType chordType) { var chord = AllChords[chordType][degree]; // CHORDS START WITH VOICE 1 int voice = CHORD_VOICE; for (int i = 0; i < chord.Notes.Length; i++) { float v = volume; if (i == 0) { v = 0; } Composer .AddNoteToSong(Song, time, voice, v, chord.Notes[i], timbre, 0); voice++; } }
public MusicalNote(string name, int octave, NoteTimbre timbre) { Name = name; Octave = octave; Timbre = timbre; }
public MusicalNote Clone(NoteTimbre timbre) { return(new MusicalNote(Name, Octave, timbre)); }
public MusicalNote Clone(NoteTimbre timbre, int octaveChange) { return(new MusicalNote(Name, Octave + octaveChange, timbre)); }
public void AddNoteToSong(Song song, float time, int voiceNumber, float volume, MusicalNote note, NoteTimbre timbre, int octaveChange) { var songEvent = new SongEvent(time, voiceNumber, volume, note .Clone(timbre, octaveChange)); var voice = song.Voices[voiceNumber]; voice .Events .Add(songEvent); }