packages feed

h-raylib-5.1.1.0: examples/basic-audio/src/Main.hs

{-# OPTIONS -Wall #-}

module Main where

import Control.Monad (unless, void)
import Raylib.Core (changeDirectory, clearBackground, getApplicationDirectory)
import Raylib.Core.Audio (closeAudioDevice, initAudioDevice, loadMusicStream, playMusicStream, updateMusicStream)
import Raylib.Core.Text (drawText)
import Raylib.Util (drawing, inGHCi, whileWindowOpen0, withWindow)
import Raylib.Util.Colors (lightGray, rayWhite)

musicPath :: String
musicPath = (if not inGHCi then "../../../../../../../../../../" else "./") ++ "examples/basic-audio/assets/mini1111.xm"

main :: IO ()
main = do
  withWindow
    650
    400
    "raylib [audio] example - basic audio"
    60
    ( \window -> do
        initAudioDevice
        unless inGHCi (void $ changeDirectory =<< getApplicationDirectory)

        music <- loadMusicStream musicPath window
        playMusicStream music

        whileWindowOpen0
          ( drawing
              ( do
                  clearBackground rayWhite
                  drawText "You should hear music playing!" 20 20 20 lightGray
              )
              >> updateMusicStream music
          )
          
        closeAudioDevice window
    )