'**************************************************************************
'* application:player midi                                               *
'* auteur:D.Glodt                                                         *
'* date:7-4-2001                                                          *
'**************************************************************************
$OPTION ICON "midi.ico"
$TYPECHECK ON
$Include "Rapidq.inc"
$include "Object\QMidi.inc"

$RESOURCE PLAYBMP as "play.bmp"
$RESOURCE STOPBMP as "Stop.bmp"
$RESOURCE PAUSEBMP as "Pause.bmp"
$RESOURCE SCREENBMP as "midiscreen.bmp"

Declare Sub Play
Declare Sub Stop
Declare Sub Pause
Declare Sub Open
Declare Sub Close
Declare Sub Quitter
Declare Sub TrackBarChange
Declare Sub PostimerOnTimer(Position as long)

Dim OpenDialog as QOpenDialog
OpenDialog.Filter="Fichier midi|*.mid"
OpenDialog.Caption= "Selectionner une séquence"
Dim midi as QMidi
midi.OnChange=PostimerOnTimer
midi.timer.interval=200


CREATE Form AS QFORM
    Caption="Midi"
    Width=288
    Height=140
    Center
    BorderStyle=bsSingle
    DelBorderIcons 2
    OnClose=Quitter
    CREATE MENU AS QMAINMENU
      CREATE FileMenu AS QMENUITEM
        Caption="&Fichier"
        CREATE Item1 AS QMENUITEM
          Caption="&Ouvrir"
          OnClick=Open
        END CREATE
        CREATE Item2 AS QMENUITEM
          Caption="&Fermer"
          OnClick=Close
        END CREATE
        CREATE Item3 AS QMENUITEM
          Caption="-"
        END CREATE
        CREATE Item4 AS QMENUITEM
          Caption="&Quitter"
          OnClick=Quitter
        END CREATE
      END CREATE
    END CREATE
    CREATE Panel1 AS QPANEL
        Left=0
        Top=0
        Width=281
        Height=100
        BevelOuter=bvNone
        CREATE image as QIMAGE
          width=301
          height=160
          BmpHandle=SCREENBMP
        END CREATE
        CREATE BtPlay AS QCOOLBTN
            BMPHandle=PLAYBMP
            Left=8
            Top=26
            Width=28
            Height=28
            Flat=true
            Hint="Play"
            ShowHint=true
            GroupIndex=1
            Enabled=false
            OnClick=Play
        END CREATE
        CREATE BtStop AS QCOOLBTN
            BMPHandle=STOPBMP
            Left=46
            Top=26
            Width=28
            Height=28
            Down=true
            Flat=true
            Enabled=false
            Hint="Stop"
            ShowHint=true
            GroupIndex=1
            OnClick=Stop
        END CREATE
        CREATE BtPause AS QCOOLBTN
            BMPHandle=PAUSEBMP
            Left=84
            Top=26
            Width=28
            Height=28
            Flat=true
            GroupIndex=1
            Enabled=false
            Hint="Pause"
            ShowHint=true
            OnClick=Pause
        END CREATE
        CREATE TrackBar1 AS QTRACKBAR
            TickMarks=tmBoth
            TickStyle=tsNone
            Left=2
            Top=66
            LineSize=0
            Width=272
            Height=21
            Hint="Position"
            ShowHint=true
            Enabled=false
            OnChange=TrackBarChange
        END CREATE
    END CREATE
END CREATE

Form.ShowModal

Sub Open  
  If OpenDialog.Execute Then
   midi.close
   if midi.open(OpenDialog.FileName) then
     TrackBar1.Max=midi.lenght
     TrackBar1.Position=0
     btPlay.Enabled=true
     btStop.Enabled=true
     btPause.Enabled=true
     trackbar1.Enabled=true
   else
     showmessage midi.error
   end if
  end if
End Sub

Sub Close
  midi.close
  btPlay.Enabled=false
  btStop.Enabled=false
  btPause.Enabled=false
  trackbar1.Enabled=false
End Sub

Sub Play
  if midi.FileOpen=false then BtStop.Down=True
  midi.play
End Sub

Sub Stop
  midi.stop
  TrackBar1.Position=0
End Sub

Sub Pause
  if midi.FileOpen=false then BtStop.Down=True
  midi.pause
End Sub

Sub TrackBarChange
  midi.currentFrame=TrackBar1.Position
End Sub

Sub PostimerOnTimer(Position as long)
  TrackBar1.Position=Position
  If midi.state=MD_STOP then
    midi.stop
    TrackBar1.Position=0
    BtStop.Down=True
  end if
End Sub

Sub Quitter
  midi.close
  form.close
End Sub

