If you visit [http://www.midisite.co.uk/] you will see they claim to have links to some 800,000 free MIDi file to download. It somewhat amazing to me that the
busy Performing Rights people have not managed to block their distribution as they have done to a large extent with all MP3/WMA files. Unless you are one of the many now days who appear to be unable to appreciate any music unless it is produced by the electronic guitar, you should find many MID files to your liking, as they do of course use a variety of instrumental voices.
Unfortunately my Nero burning software like I suspect many others will not recognise MID files to create a Music CD as it does MP3, WMA, and WAV files etc. On my sound system it is possible to create a WAV or MP3 etc file by recording ANY sound currently coming from the speakers, providing I ensure the Stereo Mix is active in the Recording Menu. So all we need is a little program like below to play all the chosen MID files in a temporary directory, while using say the Freeware
Goldwave to create one large WAV file of say around 10 MIDis. Afterwards I use the Goldwave editor to break the file into separate tracks say ready for a Music CD or MP3 player etc. Beware the Recorder supplied with Windows has a very short recording time limit.
The program uses my method of creating an item$ array of all the MID files found in a selected Directory, then keeping track of each one played in the play$ array ready for storing in a file MIDlist.txt in the same directory. Notice how this file is created even if the program is aborted before all files have been played. Keeping a record of the files played is invaluable when editing the large Recording File, in case you do not quickly recognise a tune. You will notice how the options operate for deciding whether the tunes are to be played in alpha or random order.
The program will of course work just as well with LB.
'plays all the midi files in a directory for recording
as wav or mp3 files
nomainwin
dim dir$(10,3) : dim info$(1, 1)
dim item$(500) : dim play$(500) : mid$ = ""
WindowWidth = 800 : WindowHeight = 600
button #1, " Random ",[rand],ul,220,300
button #1, " Alpha ",[alph],ul,370, 300
button #1, "* Quit *",[quit],ul,520,300
open "Multi midi player" for graphics_nsb as #1
#1 "trapclose [quit]; color darkgreen; down"
#1 "font arial 18 bold; place 280 100"
#1 "\\Multi MIDi file recorder"
#1 "font Courier New 12 bold; place 150 180"
#1 "\This plays all the MIDi files copied into a
folder"
#1 "\for use with a sound editor to record all the
sound"
#1 "\on order to create WAV or MP3 files, and a
Music CD."
#1 "\The list of files played is saved in
MIDlist.txt"
#1 "\\Select the order which the files are to be
played."
alpha = 1 : wait
[rand]
alpha = 0
[alph]
DefaultDir$ = left$(DefaultDir$,2)+"\"
filedialog "Pick any MIDi ","*.*",File$
if File$ = "" then [quit]
close #1
open "Multi midi player" for graphics_nsb as #1
#1 "trapclose [quit]; cls; font fixedsys"
#1 "color black; place 20 20 ; down"
if File$ = "" then [quit]
File$ = upper$(File$)
type$ = "*.mid"
sFile$ = noPath$(File$)
plen = len(File$)-len(sFile$)
path$ = left$(File$,plen)
files path$, type$, dir$()
qtyFiles = val(dir$(0, 0))
if qtyFiles > 500 then
notice "list limited to 500"
goto [quit]
end if
xp = 20 : yp = 20
for x = 1 to qtyFiles
dir$(x, 1) = right$(" " + dir$(x, 1),
9)
ts$ = left$(dir$(x, 0) + " ", 50)
item$(x) = trim$(ts$)
#1 "place ";xp;" ";yp : #1 "\";x;"
";left$(item$(x),12)
xp = xp + 150 : if xp > 650 then xp = 20 : yp
= yp +20
next x : #1 "color blue; place 300 ";yp+20
max = qtyFiles : if alpha = 0 then goto [randplay]
for z = 1 to max
mid$ = path$ + item$(z) : play$(z)=mid$
gosub [playmid]
next z : mid$ = ""
[randplay]
for z = 1 to max ' PLAY EACH FILE
pick = int(rnd(1) * max) + 1
mid$ = path$ + item$(pick) : play$(z) =
item$(pick)
gosub [playmid]
for n = pick to max ' remove file from list
item$(n) = item$(n+1)
next n
max = max -1
next z
notice "ALL PLAYED" : goto [quit]
[playmid]
#1 "|";z;" ";item$(pick);" NOW PLAYING."
return
playmidi mid$, howLong
timer 1000, [checkPlay]
wait
[checkPlay]
if howLong = midipos( ) then
stopmidi
timer 0
return
end if
scan : goto [checkPlay]
[musicEnded]
if mid$ = "" then[quit]
stopmidi
timer 0
[quit]
store$=path$+"\"+"MIDlist.txt"
open store$ for output as #2
for n = 1 TO z
#2 play$(n)
next n
close #2
'if mid$ <> "" then stopmidi
timer 0
close #1
run$ = "notepad.exe "+store$
if z > 0 then run run$
end
function noPath$(t$)
while instr(t$, "\")
t$ = mid$(t$, 2)
wend
noPath$ = t$
end function