<?php
 
if (isset($_GET['download'])){ 
    $file = $_GET['download']; 
    $filename  = 'output.mid';
 
    require('midi.class.php');
 
    $midi = new Midi(); 
    $midi->downloadMidFile($file,$filename); 
}
 
$file=(isset($_FILES['mid_upload'])&&$_FILES['mid_upload']['tmp_name']!='')?$_FILES['mid_upload']['tmp_name']:'';//(isset($p['file'])?$p['file']:'');
 
?>
 
<html>
 
<head>
 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 
<title>CONVERSION</title>
 
<style>
 
body {font-family:arial;font-size:11px;margin:5px;}
 
input {font-family:arial;font-size:11px}
 
td {font-family:arial;font-size:11px}
 
</style>
 
</head>
 
<body>
 
 
<form enctype="multipart/form-data" action="convert.php" method="POST" onsubmit="if (this.mid_upload.value==''){alert('Please choose a mid-file to upload!');return false}">
 
<input type="hidden" name="MAX_FILE_SIZE" value="1048576"><!-- 1 MB -->
 
MIDI file (*.mid) to upload: <input type="file" name="mid_upload">
 
<br>
 
<input type="submit" value=" send ">
 
</form>
 
<?php
 
 
 
if ($file!=''){
 
    require('midi.class.php');
 
    $midi = new Midi();
 
    $midi->importMid($file);
 
    
 
    // SHOW OLD TYPE
 
    echo 'Old Midi-Type: '.$midi->type."<br>\n";    
 
    
 
    //CONVERT TO TYPE 0
 
    function cmp ($a, $b) {
 
        $ta = (int) strtok($a,' ');
 
        $tb = (int) strtok($b,' ');
 
    if ($ta == $tb) return 0;
 
    return ($ta < $tb) ? -1 : 1;
 
    }
 
 
    $newTrack=array();
 
    foreach ($midi->tracks as $track) {
 
        array_pop ($track);
 
        $newTrack=array_merge($newTrack,$track);
 
    }
 
    
 
    usort ($newTrack, "cmp");
 
    
 
    $endTime = strtok($newTrack[count($newTrack)-1], " ");
 
    $newTrack[]="$endTime Meta TrkEnd";
 
    
 
    $tb = $midi->getTimebase();
 
 
    $midi_new = new Midi();
 
    $txt = "MFile 0 1 $tb\nMTrk\n".implode("\n",$newTrack)."\nTrkEnd";
 
    $midi_new->importTxt($txt);
 
 
    // SHOW NEW TYPE
 
    echo 'New Midi-Type: '.$midi_new->type."<br>\n";    
 
    
 
    $save_dir = 'tmp/';
 
    srand((double)microtime()*1000000); 
    $file = $save_dir.rand().'.mid';
 
    $midi_new->saveMidFile($file); 
    $midi_new->playMidFile($file,1,1,0); //optional: 'wm','qt','bk'
 
    
 
?>
 
    <br><br><input type="button" name="download" value="Save converted SMF (*.mid)" onClick="self.location.href='convert.php?download=<?php echo urlencode($file)?>'">
 
<?php
 
}
 
?>
 
</body>
 
</html>
 
 |