Documentation component by D.Glodt (c)2000-2002 Appendix A: QMIDI

QMIDI Component

QMIDI is a  media component used to play midi sequences.

 

 

QMIDI Properties
Field Type R/W Default




Timer QTIMER RW
Control the fréquency of event OnChange. 
Lenght LONG R
Lenght of  midi sequence. 
State INTEGER R VD_CLOSE
State of sequencer,can be MD_PLAY,MD_STOP,MD_PAUSE. 
FileOpen BOOLEAN R False
True if  a midi file is open. 
CurrentFrame LONG RW
Position of midi sequence. 
Error STRING R
Text error if the OPEN méthod return FALSE
Volume INTEGER RW 0

QMIDI Methods
Method Type Description Params




Close SUB Close the midi file 0
Open FUNCTION(FileName as string) Open the midi file and return True if no error 1
Play SUB Play the midi sequence 0
Stop SUB Stop the midi sequence 0
Pause SUB Set the player in mode pause 0

QMIDI Events
Event Type Occurs when... Params




OnChange (position as long) Sequence position in mode play  1

QMIDI Examples

'**************************************************************************
'* application:player midi                                               *
'* auteur:D.Glodt                                                         *
'* date:7-4-2001                                                          *
'**************************************************************************
$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 MIDIICO as "midi.ico"

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=110
    Center
    BorderStyle=bsSingle
    icoHandle=MIDIICO
    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=60
        BevelOuter=bvNone
        CREATE BtPlay AS QCOOLBTN
            BMPHandle=PLAYBMP
            Left=8
            Top=6
            Width=28
            Height=28
            Flat=true
            Hint="Play"
            ShowHint=true
            GroupIndex=1
            OnClick=Play
        END CREATE
        CREATE BtStop AS QCOOLBTN
            BMPHandle=STOPBMP
            Left=46
            Top=6
            Width=28
            Height=28
            Down=true
            Flat=true
            Hint="Stop"
            ShowHint=true
            GroupIndex=1
            OnClick=Stop
        END CREATE
        CREATE BtPause AS QCOOLBTN
            BMPHandle=PAUSEBMP
            Left=84
            Top=6
            Width=28
            Height=28
            Flat=true
            GroupIndex=1
            Hint="Pause"
            ShowHint=true
            OnClick=Pause
        END CREATE
        CREATE TrackBar1 AS QTRACKBAR
            TickMarks=tmBoth
            TickStyle=tsNone
            Left=2
            Top=36
            LineSize=0
            Width=272
            Height=21
            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
   end if
  end if
End Sub

Sub Close
  midi.close
End Sub

Sub Play
  midi.play
End Sub

Sub Stop
  midi.stop
  TrackBar1.Position=0
End Sub

Sub Pause
  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