Code archives/Audio/Simple MIDI player

This code has been declared by its author to be Public Domain code.

Download source code

Simple MIDI player by EsseEmmeErre2013
Lord Year 2013, June 8th, Saturday
Hi there, here is my first implementation of a very simple MIDI file player by BlitzPlus; the code is compatible almost all with Blitz3D except for the MIDI file selection (is here where B+ come in action! :) ).
Enjoy for it! :)
Bye from EsseEmmeErre
AppTitle("MIDI Player by Stefano Maria Regattin")
MusicaMIDI$=RequestFile("Load a MIDI song...","MID")
;MIDI song path and name
Graphics(400,100,0,2)
;open a graphics window
AltezzaFinestra=FontHeight()*3
;evaluate the desired window height
EndGraphics()
;close the window
Graphics(400,AltezzaFinestra,0,2)
;reopen the window with the desired height
SetBuffer(BackBuffer())
;meaningless command
Posizione=Instr(MusicaMIDI$,"\")
;first find the device
Repeat
 NomeMusicaMIDI$=Right$(MusicaMIDI$,Len(MusicaMIDI$)-Posizione)
 Posizione=Instr(MusicaMIDI$,"\",Posizione+1)
Until Posizione=0
;loop to find the MIDI file name
If NomeMusicaMIDI$<>"" Then
;if a MIDI file has been selected
 Musica=PlayMusic(MusicaMIDI$)
;music handle
 FineDellaMusica=False
;end of music flag
 Repeat
  TastoPremuto=GetKey()
;check for a key pressed
  Text(0,0,"You are listening to "+NomeMusicaMIDI$):Flip()
  Text(0,0,"You are listening to "+NomeMusicaMIDI$):Flip()
  Text(0,FontHeight(),"Press SPACE to stop listening..."):Flip()
  Text(0,FontHeight(),"Press SPACE to stop listening..."):Flip()
;on window messages
  If TastoPremuto=32 Then FineDellaMusica=True
;if SPACE BAR is pressed leave the listening
  If ChannelPlaying(Musica)=False Then FineDellaMusica=True
;if the song is ended leave the listening
 Until FineDellaMusica=True
;listening loop end
 StopChannel(Musica)
;stop music
 Text(0,FontHeight()*2,"Listening ended, program is closing."):Flip()
 Text(0,FontHeight()*2,"Listening ended, program is closing."):Flip()
;ending message on window
Else
;if no MIDI file has been selected
 Text(0,0,"You have choosen no MIDI file, listening canceled."):Flip()
 Text(0,0,"You have choosen no MIDI file, listening canceled."):Flip()
;no MIDI file message on window
 Delay 1000
 Text(0,FontHeight(),"Program is closing, Bye."):Flip()
 Text(0,FontHeight(),"Program is closing, Bye."):Flip()
;no MIDI file message on window
;wait for a second
EndIf
Delay 1000
;wait for a second
EndGraphics()
;close the window
End

Comments

None.

Code Archives Forum