My next target is the actual MIDI file soundtrack pages.HamJamSpamalot wrote: ↑Tue Aug 07, 2018 11:27 am What will be the next post in the QuestStudios archive?
It's a looong time coming.
I've been working on the framework for those pages on and off for a long time.
I want not just to be able to provide the original QS midi zips for download, but also have them playable in the web browser, or even on a mobile/phone on-the-go. This presents several problems, the the main one being the playback of MT-32 music or MIDI music in general. "How to do it?" and "How to do it without it sounding like garbage?". I could just make recordings of everything, but that's bandwidth intensive, and time consuming. Thankfully, Tomas Pollak's Polywave AKA Muki.io solves this problem wonderfully with a great implementation of MUNT, a more than adequate Soundfont-based engine for GM, as well as being a great MIDI/chip-tune player in general! I've had a number of great and extensive chats with Tomas about the player, some of the playback quirks I ran into, as well as some feature suggestions.
On top of all that, I also wanted to have the website code handle all of this in a more easy to manage way. There is a long story of what I did to automate the parsing the original QS Zip file contents, to match all the track names to their actual file names, many of which did not quite match or had typos in them in some cases, as well as determine what type of synth is needed, and to determine if a patch bank file was needed in case of MT-32 MIDI's. Ultimately, I was able to create a workflow that accomplishes this and puts it all into JSON, which is what Polywave uses also. I actually extended Polywave's playlist JSON template for my own site so that I can include track names, synth information, patch banks, file locations/URLs, and other info into the site, without now having to actually make a ton of individual pages with tons of hyperlinks manually. I am pretty pleased with the result and the potential. Again the goal experience I had envisioned for the QSA was that it be something that allows me to browse and listen to any of the tunes I want from any device on any platform.
Here is a test page you can checkout: http://www.midimusicadventures.com/jsontest.php
Here is the entire source of that test page for reference:
Code: Select all
<h1>Larry, the Complete MIDI Soundtrack Collection!</h1>
<div style="text-align:center;"><p><a href="https://www.polywave.xyz"><img src="/wp-content/uploads/2017/05/polywave-logo2-white.png" alt="Polywave" style="padding:0px; border:2px solid black;" /></a><br />A browser-based player with MT-32 Emulation, AdLib Emulation, SoundFont playback, and much more!</p>
<iframe src="https://polywave.xyz/embed?remote=https://www.midimusicadventures.com/qs/midi-zips/larry.json" frameborder="0" allowfullscreen="true" width="500" height="264" style="border: 6px outset; border-color: grey black black grey;"></iframe></div>
<h3>MIDI ZIP Download Links</h3>
<?php
$url = "./qs/midi-zips/larry.json";
$contents = file_get_contents($url);
$contents = utf8_encode($contents);
$results = json_decode($contents);
if (json_last_error() === JSON_ERROR_NONE) {
//echo "<pre>", var_dump($results), "</pre>";
foreach ($results->tracks as $track) {
$trackPath = strtok($track->location,"/");
//echo $trackPath;
echo <<<HTML
<p><a href="/qs/midi-zips/$trackPath/{$track->download}">{$track->name}</a> - {$track->note1}</p>
HTML;
}
} else {
echo "Invalid JSON";
}
?>
Andrew