Developer's Log - December 31, 2019 Well well well, it's already been a year. I didn't make as much progress as I'd hoped to, but overall it isn't bad for a little fun side project. I'm pushing out a fix for a labelling error that occurs at the end of the year (when there are less than 24 hours remaining and/or less than 6 hours remaining). Also found some other end-of-year bugs that I tried to iron out, but I'm recovering from the flu, so I'm not really up to intensive debugging. I'll have to do a better job later on. ----- Developer's Log - December 18, 2019 Added a snippet to trigger proper "Dawn of a New Year" styling at the appropriate time. ----- Developer's Log - September 21, 2019 LA HD is great. I'm really appreciating how they handled the music and sound effects, with tons of nods and throwbacks to the original chiptunes. While I was waiting for my copy to arrive, I cranked out some styling from LoZ (the first game, not the entire series...). It's a bit different than anything I've done thus far, and I know if you resize the window to something weird it start to look off. But overall I'm pretty happy with it. It will definitely get some more polish as time goes on! ----- Developer's Log - September 19, 2019 Link's Awakening HD releases tomorrow! Are you excited? I am! Since I'll probably be busy with that for a few days, here's an update of a few various features I have been working on that I rushed to a ready- to-deploy state. I think they're good, but as always, there may be some minor bugs. * Twilight Princess styling * Lake Hylia in the Twilight Princess music set * Basic URL Parameter parsing, which enables... * ... Custom Countdown dates! I'll add a nice interface for it later, but now you can set the system to countdown to arbitrary dates. * Added a fix for an issue where the number of hours remaining was changing at the 30 minute mark instead of on the hour; this was happening because of the numbers being rounded up/down. Additionally, I'm getting a lot closer on being able to release TP Hyrule Field. I realized that the game engine "cheats" with how it loops the audio, so that explains why I've had such a hard time getting a good loop running. At least now I have an idea how to proceed instead of just banging my head against a brick wall. ----- Developer's Log - September 12, 2019 Added a boring update that, hopefully, users won't even be aware of. I setup a manner to inject HTML snippets into the main page; I did this so that the code for the main page can stay a bit smaller and more manageable. Plus, it makes things more modular, and that's (almost) always better. The downside is that it creates slightly more network calls to load the page content. I'll keep an eye on things, but I think the tradeoff will be worth it. ----- Developer's Log - September 4, 2019 Added the rest of the regular dungeons and a couple additional songs. I think this will probably be the end of Link's Awakening updates, at least for the time being. The remaining LA songs are either pretty minor, or are a bit spoilery. Also, the LA songlist is quite large at this point, and other games deserve some attention. Shame, because looping the LA songs is really quick and easy to do; some of the BOTW and TP songs I most want to do have the hardest loop-points. ----- Developer's Log - September 1, 2019 Well, here we are in the final third of the year. The last trimester. "Day 3", if you will. As such, the Clock Town theme has been advanced to the dark, frantic, and ominous Day 3 theme. ----- Developer's Log - August 29, 2019 As promised, here's a fast batch of Link's Awakening songs. The first 4 dungeons, and 3 other locations. Also, it looks like recent anti-autoplaying-ad components in chromium-based browsers may be interfering with audio playback. So, if songs start and then abruptly stop after 5-20 seconds or after one single loop, make sure you've allowed autoplaying audio/video for this site. ----- Developer's Log - August 27, 2019 Wow, where has the year gone? I got busy in "real life" and this project fell off my radar, apparently. I've put-off adding any Twilight Princess music because I had a big, fancy idea I wanted to use, but that is proving slightly harder to get working just right. Also, I wanted to focus on Link's Awakening music more with the remastered edition releasing in *checks a calendar* less than a month?!?!? Ouch. Ok, so here's what we're going to do. For today, here's a single TP song, and the promise that I'll get some more LA songs out ASAP. I guess I'll have to start specifying "Classic LA" vs the "Remaster LA" in the near future. Also, it looks like there are 126 days left in the year, which means the year is very, very close to being 2/3 over. So I suppose I need to advance the MM Clock Town theme to the dreaded Day 3! ----- Developer's Log - May 20, 2019 Added some more LA music (Caves) and improved the Link's Awakening-specific styling. ----- Developer's Log - May 13, 2019 Juggled the loading order of some stuff around to cut down on some slowness I was seeing. I'd noticed the page was taking longer and longer to populate the countdown timer; turns out it was loading all the music files, and THEN starting the calculations for the timer. Not ideal, and also not something I could really test on my machine, so I had to discover it on the live site. This also improves the chances of the Majora's Mask logo loading in time to be rendered when the browser cache is empty (it's still not perfect, but it's better now). With all the music, a page load with no cache is up to 14.52MB of data transferred. I need to begin my plan to have more of this be dyncamically loaded when the user switches the game selection. I could tell the browser to not preload the songs at all, but that increases delays when the user starts playing one, and delays are bad for timing-based things like leadIns and loops. I think only preloading the assets for the currently selected game (the default being Majora's Mask) will be a decent compromise for a long time. I'm already compressing the music files to the max amount that will not introduce noticeable artifacts or quality degredation, so smarter loading really is the only path forward for now. ----- Developer's Log - May 8, 2019 Bug resolved! Fixed an oversight with Current Time mode where leading-zeroes were not applied to single-digit numbers, resulting in times like 9:2:8 instead of 9:02:08. Also, re-skinned the Play Music button and added some very basic sound effects for LA Boss Mode. ----- Developer's Log - May 6, 2019 YES! It's been more difficult than I imagined, but I can now do leadIns that loop a limited/dynamic/variable number of times. I'm still fighting a bit with getting seamless loops and transitions on Chrome. But! Checkout Boss Mode when you've got Link's Awakening selected. There's a leadIn loop that plays 3 times (with 3 reps in the song file itself), a second leadIn (I need to come up with a better name for these), and then the looping mainSong. I've also realized the vast majority of my audio bugs are caused by switching songs that have been playing for very short periods of time (like, less than 10 seconds). So, you should try to avoid doing that. Seriously, don't do that. Things break badly, and I can only do so many preventative measures. This is big enough that I'm going to release these changes, which means that the changes from May 2 and May 3 will also finally go-live. I got things into a halfway decent state much faster than I had anticipated just a few days ago. Known bug introduced: sometimes the main loop will briefly have two concurrent instances playing in Chrome when first transitioning off of a leadIn song. I think it only really happens if you change songs during a Boss Mode, but I need to test it more. ----- Developer's Log - May 3, 2019 Added a live clock mode to display the current time instead of a countdown value. Known bug introduced: We really need a leading zero on single-digit values in the current time mode. ----- Developer's Log - May 2, 2019 This won't be pushed on May 2nd because it's not at 100% just yet, but I've been working on even more complicated audio looping scenarios: things like multiple leadIn songs and the predecessor to the eventual PLAYLIST musicSet type. I've been using the Link's Awakening Boss theme as my test bed because it has an alternate version (Level 7 - Eagle's Tower) that ends up having some neat additions at the start of the song that force me to get outside of the nice comfortable pattern I've already established. In short, I've succeeded in creating a lot of bugs. But, since I don't plan to deploy them anytime soon, you the user hopefully will never encounter them! $50 says I accidentally deploy them at some point, then have to rush to fix them because I won't have an easy rollback plan. Yeah, yeah, I'm actually a professional web developer, so I know the right way to do things; I'm just lazy and don't wanna! ----- Developer's Log - May 1, 2019 Today the year is one-third over. As such, I am "advancing" the Clock Town music to the Day 2 music. ----- Developer's Log - April 27, 2019 Still inspired by getting the Chrome audio issues fixed, I've gone ahead and built out some more small stuff. I've added an announcement box (which you've doubtlessly seen already) to help first time users realize there's more to the page than just the countdown clock. Later on, I'll add a way to dismiss this from loading everytime you reload the page, which will be a better experience than nagging users every single time they visit the page. I've also added a fair amount of music. Finished out the MM field songs with Great Bay and Ikana Canyon, added the Hinox theme to BotW Boss Mode, added a randomizer to BotW Boss Mode music selector so it will randomly choose between all available songs (currently, 75% chance Talus, 25% chance Hinox). Also added the LoZ and LA Overworlds, the Highlands from BotW, and the Color Dungeon from LA (which is just a slightly remixed version of the Dungeon theme from the original LoZ). Surprisingly, the NES version of Dungeon didn't loop quite so cleanly, so it will take a tiny bit of manipulation to get a clean loop; so did Ikana Canyon and Great Bay. It always surprises me which songs loop undetectably 'out of the box' (like Southern Swamp and Snowhead) and which ones require some additional work in the form of me tweaking them (like Great Bay and Ikana Canyon). I also moved the code where I declare what audio files make up a "song" out of the file for the music engine and into its own separate file. That'll make adding new songs and general maintenance just a tiny bit easier going forward. I realize we are rapidly approach the point where we've used a third of the days in the year (today is the 117th Day). I think I need to get 'Clock Town - Day 2' music setup to celebrate entering the second quadrimestre of 2019. Oh, I also tweaked the music engine a tiny bit, changing how it handles songs that have a specific lead-out, like the various boss musics and their accompanying "the boss has been defeated" jingles. Previously, I was reusing a piece of code that I had alternate plans for; I have simply split it properly, formalizing the idea that the lead-out functionality is not the same thing as Variety Songs, which I've alluded to previously. No practical impact from this, but it sets me up better for future development. ----- Developer's Log - April 26, 2019 Just music this time (well, and one icon). In honor of the remake coming out this year, I've added two songs from Link's Awakening! I've also added BOTW-specific Boss Mode music; this will be expanded on greatly in the future, but I think you can see where I'm planning to go with this (as I also mentioned in the April 7th update). But, basically, I want Boss Mode to play boss music from the specific game you have selected instead of always playing the (always fantastic) Majora's Mask boss music. ----- Developer's log - April 25, 2019 First attempt at improving the Chrome audio looping experience and lead-in transition, focused mainly on looping. Loops are a LOT better on my machine now; I hope they're better for you, too. MM Boss Music still had a noticeable distortion at the loop point, so I upped the 'buffer' to .075 seconds and that seems to have gotten things just about perfect. Technical details: I tried adding an event listener to the audio elements that listens for a change in the currentTime of the audio file, but that was firing like 5 times a second and still had a noticeable gap on even the simplest song (LoZ Death Mountain). So, I wrote basically the same functionality from scratch using the JS setInterval to poll. But! Most song loops are 30 second to 1 minute in length. In order to get a good, gapless playback, it had to poll close to every 10 milliseconds. That's a lot of wasted CPU cycles doing pointless polling when we're nowhere even close to the loop point. To address that, I use really fancy mathematics to dynamically adjust the polling rate to be more frequent (or is it "frantic"?) as we get further along in a playthrough of a single loop. Then, when the loop starts over, it resets back to a more-leisurely polling rate. By the way, the fancy math in-question is currently set as this: .25*1000*(liveMusicSet.songPlaying.duration - liveMusicSet.songPlaying.currentTime) *1000 because .duration and .currentTime return values in whole seconds, but setInterval needs milliseconds. The .25 ensures that our *next* poll will take place once a quarter of the *remaining time* on the current playthrough has elapsed. This dynamic polling rate (vs a static one) ensures that we're polling frequently enough for the .075 second buffer to be hit nicely and prevents us from overshooting it. ----- Developer's log - April 10, 2019 Added the Stables from BotW, a secret easter egg, and started stubbing-out the code for background images and for more/better sound effects handling. ----- Developer's log - April 7, 2019 Added Snowhead area music under Majora's Mask. Also... I've started cleaning up the UI a bit on the options panel. I have set it to where the songs are grouped under their respective game; eventually I want the user's choice of game to affect a lot more than just the available background music, but small steps! I also added a much-needed volume slider. ----- Developer's log - April 6, 2019 I am aware of the issue with Chrome where there is a noticeable gap/delay between loops of a song. This is a Chrome issue. I am working on a work-around (an alternate looping mechanism) just for Chrome. Use Firefox in the meantime. ----- Developer's log - April 3, 2019 Added Lost Woods from Breath of the Wild ----- Developer's log - March 28, 2019 Added a blink effect to the clock icon when the page first loads, to try to draw attention to it in a halfway subtle manner. My concern is that the clock icon is too small to be an effective attention grabber, which would mean that users may not realize there are actual options and stuff they can play with. May add a timed lightbox or something later. ----- Developer's log - March 24, 2019 Added some basic SEO stuff to make the search results for this site look a bit better. Hopefully. This also finally adds the phrase "countdown timer" to the page, which seems like an important keyword to include for people searching for this kind of thing. ----- Developer's log - March 22, 2019 I've decided to use different music for the initial release of the new feature. I hope someone enjoys the first iteration of Boss Mode, with Majora's Mask boss music! ----- Developer's log - March 21, 2019 I'm back on my third round of working on this project since it started on January 1st. I've nearly driven myself mad listening to a few songs over and over, trying to perfect the loop points so I can extract and create the music files the users will listen to on-loop, over and over. Especially the music for [REDACTED]; hopefully I can get that nailed down so I can release the corresponding feature that goes with it. Or maybe I'll choose a song that loops more-cleanly to release that with. While overall I'm fairly happy with my decision to rewrite the music system and allow for ultimately more complicated music, I'm also chasing intermittent bugs in the audio player system relating to audio not un-muting properly when you switch tracks and overlapping songs if a user switches the music in rapid succession. If I don't survive, tell my wife I said "hello."