package mg.dot.feufaro.midi

import SharedScreenModel
import mg.dot.feufaro.FileRepository
import mg.dot.feufaro.viewmodel.MidiMarkers

expect class FMediaPlayer(filename: String, onFinished: () -> Unit) {
    fun play()
    fun pause()
    fun stop()
    fun getDuration(): Long
    fun getLoopState(): Triple<Long, Long, Boolean>
    fun toggleVoice(index: Int)
    fun getVoiceVolumes(): List<Float>
    fun changeInstru(noInstru: Int)
    fun getCurrentPosition(): Long
    fun seekTo(position: Long)
    fun seekToGrid(gridIndex: Int)
    fun setVolume(level: Float)
    fun setPointA()
    fun setPointB()
    fun clearLoop()
    fun setTempo(bpm: Float)
    fun getCurrentBPM(): Float
    fun updateVoiceVolume(voiceIndex: Int, newVolume: Float)
    fun requestSync(sharedScreenModel: SharedScreenModel)
    fun syncNavigationMonitor(sharedScreenModel: SharedScreenModel)
    fun release()
}