Newer
Older
music / app / src / main / java / com / lukas / music / song / Song.kt
package com.lukas.music.song

import com.lukas.music.instruments.Instrument
import com.lukas.music.song.note.Note

class Song(
    private val root: Note,
    private val chordProgression: ChordProgression,
) {
    private var beat = 0
    private var chord: Chord = chordProgression.step()

    fun step() {
        val chordNotes = chord.getNotes(root)
        for (voice in Instrument.voice) {
                voice.step(root, chordNotes)
        }
        beat++
        if (beat > 4) {
            beat -= 4
            chord = chordProgression.step()
        }
    }

    companion object {
        var currentSong = Song(
            Note.NOTES[69],
            ChordProgression(
                listOf(
                    Chord(0, ChordType.Major),
                    Chord(5, ChordType.Major),
                    Chord(2, ChordType.Minor),
                    Chord(7, ChordType.Major),
                )
            )
        )
    }
}