VIP The State of the #VIP Address

Discussion in 'Announcements Area' started by Cats777, Nov 26, 2019.

  1. Cats777 Thread Starter ┬─┬ノ( º _ ºノ)

    [IMG]
    This is a logo.

    My fellow Aersians. I have some grave news to share.

    Flash, the platform on which the VIP was built upon, has an official end of life date. At the end of 2020, Adobe is going to excise it like a cancer from the Internet for good. However, before this happens, the major browsers are going to cut pieces of it off of themselves until there's nothing left but sadness. So expect Flash to die sometime in early 2020, depending on your browser. What does this mean for vip.swf? Well, it just won't work anymore, sad to say.

    RIP, vip.swf 2008 - 2020. Good night, sweet prince. It's been fun. You had a good run. Time to eat a bun and stare at the sun... ;_; But wait! Our hardworking programmer known as Cats777 is working tirelessly and skillfully working to upgrade the VIP working to modern standards.

    This upgrade will come in 3 glorious phases.

    - Phase 1 -

    Phase 1 is to create a fully-functioning HTML5 version, of course! There are many like it, but this one will be mine, officially. Out of all the HTML5 versions currently available, I have decided to use this one as the base. Why? Because it's the only one I can use without needing a private server. It's also simple and easy to mold into whatever I want.

    However, it's still not a simple conversion. I have to make the HTML5 version compatible in almost every screen and browser. I have to make it a progressive web app and some other shit.

    Part 2

    The 2nd part of the 1st phase is to rebrand the VIP into something anyone new and old can identify immediately. "vip.aersia.net" isn't exactly an easy URL to memorize or spell, and even "aersia" is a difficult word to pronounce. Imagine gong up to your friends(>implying you have friends), and saying "Yo my n-, go to vip.aersia.net for some kick-ass video game music." To which your imaginary friend would reply: "Dawg, WTF is arrshaya? You smokin' too much of dat yayo!" You would probably reply back, "Shiieet, son, fuck off with that shit and just google vip.swf." And therein lies the problem. When you tell people to Google something instead of going directly to the site, you've already lost [the game].

    To make it easier for everyone, the VIP will be moving to its own domain: vipvgm.net. It is the Vidya Intarweb Playlist, and it has video game music. It's simple to pronounce and simple to spell out. There's also vipvgm.com, if that's more comfortable to type out, which redirects to the .net.

    I also made a new logo, something that screams, "VIDEO GAME MUSIC PLAYER!"

    This just in! Phase 1 is almost done! Here's a teaser. And another. Can you guess what the features are?

    - Phase 2 -

    Phase 2 involves adding accurate composer and arranger names to each track so people would know who worked super-hard creating all the earworms. This requires some research and might take a while. You may have noticed all the arbitrary renaming updates on the changelog. That's me doing research and finding out I've been naming everything wrong.

    Also, note that from now on, I will be using the umbrella term "arrangement" for works that I used to call "remixes". It turns out remixes and covers are different. VGMDB classifies them both as arrangements.

    - Phase 3 -

    Phase 3 of the upgrade will be the longest and hardest, but also the most optional. Therefore, it's the lastest. I will be trying to find all the original audio and reconverting them to a more modern AAC codec. "But Cats777," you might ask. "Aren't the audio files already AAC?" Why, yes. However! There's a technical flaw in the audio files.
    WARNING: Incoming nerd wall!

    New AAC encoder!

    If you didn't know, AAC has different profiles depending on how many bitrates(the currency for audio quality) you want. The only AAC profile that vip.swf is compatible with is AAC-LC, which is mainly for audio of high bitrates(i.e. not old VIP). Furthermore, I've been using the very obsolete Nero AAC codec, which hasn't been updated in a decade. This means the audio on the playlist right now is sub-optimal. You are not getting the full VIP quality experience! From now on, I intend on using Fraunhofer FDK AAC (libfdk_aac). It's the best AAC encoder on the market right now that's not Apple.

    On the case of Opus (open)
    Also, some of you may know that I have been a staunch supporter of Opus, but looking at it now, I'd rather have a format that's supported on all browsers. I'd also rather not add additional steps to the conversion process and waste bandwidth by providing two different formats.


    Increased bitrate!

    I'm also upgrading the sound quality to around 96kbps, which is the industry standard everywhere nowadays(actually, it's more like the bare minimum). This will consequently increase the file sizes! RIP, people with limited internets. And since this technically counts as a "high bitrate", AAC-LC is the profile to use by default, therefore making it compatible with vip.swf as well.

    Never before loudness normalization technology implementation!

    There's also this little thing called loudness normalization. It's when a track's volume is automatically set so that the user doesn't have to adjust it himself. Crazy, right? Back in the day, we didn't have all these newfangled doohickeys that promote laziness; but I digress.

    Currently, the loudness for each track is being normalized by ReplayGain by simply setting them to +3 dB (92 dB). Apparently, this is also what Spotify is doing.

    Stuff I will not be doing (open)
    In the future, I'll be using ffmpeg-normalize, a much more complex algorithm for normalization. It does so according to ITU-R BS.1770 definitions, measuring loudness in LUFS instead of dB. Without getting too technical, people say it's more accurate because it's based on human hearing. I'll take their word for it.

    After dozens of conversions and tests, these are the normalization settings I've decided to use:
    Loudness: -18 LUFS
    True Peak: -2 dBTP
    Loudness Range: 12 LU

    This is very close to what the BBC does, who in turn based their settings on the big-brained AES.

    My favorite feature of ffmpeg is its ability to reduce the loudness range(LRA) - the range between low and high loudness measured in LU. The LRA is especially noticeable in orchestral tracks. There are segments where they're really soft at first, then suddenly get blisteringly loud. For example, the "Meridian Child" orchestral arrangement in the playlist has a LRA of a whopping 20.4 LU (ffmpeg's maximum setting is just 20 LU). Yeah, we're gonna try to reduce that to a target of 12 LU. You're probably screaming, "Argh! Now everything's gonna be flat and soulless!" Don't picnic! Just because the target is so low, ffmpeg doesn't exactly set it as such for some reason. When I converted "Meridian Child" to the specifications that I set(-18 LUFS, -2 dbTP, 12 LU), the result was -17 LUFS, -1.7 dbTP, 19.7 LU. So don't worry about orchestral tracks getting soulless.

    Here are some comparison files: old & busted, new hotness. And here's the waveform comparison.

    For a playlist with such a wide variety of loudness throughout each track, I feel this conversion process is a necessary thing to do for the sake of our ears. Artistic intent be damned.

    Comparison with other companies' recommendations:
    -14 LUFS, -1 dBTP - YouTube, Spotify, TIDAL
    -14 LUFS, -2 dBTP, 11 LU - Alexa
    -16 LUFS, -1 dBTP - iTunes (Sound Check)
    -18 LUFS, -2 dBTP, 13 LU - BBC


    I've decided not to use loudnorm or any other volume normalization that alters the loudness range. I've noticed some tracks just sound plain weird because of it. Some parts of the audio sound worse and there's also a noticeable reduction in the soundstage, which is a big no-no for me.

    Another big no-no is when people form an opinion of a song by how it sounds on the playlist while sounding different everywhere else.

    And so, I will be sticking with ReplayGain for the time being, and preserve artistic intent.

    In summary (tl;dr)

    Flash is dead. Long live HTML5.
    New logo & website: vipvgm.net
    Composers will be named.
    Switching codec from Nero AAC to Fraunhofer FDK AAC and upping bitrate from ~82 kbps to ~96 kbps.
    Sticking with ReplayGain set to +3 dB gain (92 dB).

    To be honest, I've been trying to formulate and tabulate this post for months. As you can see, ideas and minds change over time. Let me know your thoughts on all this crap and thanks for listening! :D
    o100nome likes this.
  2. Radscale American Parmesan League

    It's great to hear about your reasoning for the changes! A new era for Aersia, awesome stuff for sure. I'm personally still a fan of the sub-domain approach, but I'm clearly biased, having shilled vip.aersia.net for the past 5 years if not more. :)

    Speaking of more technical stuff, on occasion:
    Are you deciding to change the roster.xml structure or their locations for the new player, outside of adding new metadata? It'd be great to know beforehand so other folks could make adjustments to their own players, if those are still going to be supported.
  3. Cats777 Thread Starter ┬─┬ノ( º _ ºノ)

    Haha, I knew that would be one of the first questions someone would ask, which I was planning on unveiling when I announce the open beta. But I guess now is as good a time as any.

    If I were to add composers to the XML and have them show up on vip.swf, it would lengthen the text for each track. If the track is an arrangement, the arranger would make the text even longer. I haven't touched a Flash editor in years to be able to make layout changes. So I've decided that once Flash goes the way of the dodo, so will the XML rosters. This is why I've already made the jump to JSON, which is what the HTML5 playlist is using.

    Here's the JSON for the VIP and Source. That's right, I've combined two playlists in an effort to reduce repetition. Why should I have a Source JSON when most of the track data are copied from the VIP JSON? Speaking of reducing repitition, I've also removed the URL and file extension from each track and put them in their own separate strings so they can be added programmatically, thus dramatically reducing the size of the JSON. Hell, even with the combined playlists and the added composers and IDs, the JSON still takes up less space than the XML. This is truly the future.

    The IDs are currently only used for generating the links when sharing the tracks. The JSON for Mellow and Exiled don't have IDs yet, because they can't be shared yet. The "new_id" value is simply just a reference for me and doesn't do anything in the code.

    I dropped the MOTD, because I pretty much only change it once a year.
  4. Radscale American Parmesan League

    Welp, I have to say it's kind of an update I really, really hoped for, particularly concerning the current state of Source and less overhead - even though I'd say that ease of JSON maintenance would be more important than an extra few Kbs that are normally loaded just on the first load and cached otherwise. Super happy about you adding IDs for the tracks in the playlist as well, as coming up with linking systems was bound to be a headache for anyone that attempted it before.

    Time to get hyped for the open beta :)
  5. o100nome Colby League

    so..... sadly flash will die soon..... but hopefully this project won't!

    I'm glad you're working to update to HTML5, the new changes will make thing better for sure.
    I can't help with the code and all, but I wish best of luck to you :thumbup: :)

Share This Page