Beispiel #1
0
        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();
        }
Beispiel #2
0
        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++;
            }
        }
Beispiel #3
0
 public MusicalNote(string name, int octave, NoteTimbre timbre)
 {
     Name   = name;
     Octave = octave;
     Timbre = timbre;
 }
Beispiel #4
0
 public MusicalNote Clone(NoteTimbre timbre)
 {
     return(new MusicalNote(Name, Octave, timbre));
 }
Beispiel #5
0
 public MusicalNote Clone(NoteTimbre timbre, int octaveChange)
 {
     return(new MusicalNote(Name, Octave + octaveChange, timbre));
 }
Beispiel #6
0
        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);
        }