[bb] Simple MIDI player by EsseEmmeErre [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:39

Previous topic - Next topic

BlitzBot

Title : Simple MIDI player
Author : EsseEmmeErre
Posted : 1+ years ago

Description : 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


Code :
Code (blitzbasic) Select
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...