EpicOS for Multiplayer Piano
EpicOS is a command-based chat bot for Multiplayer Piano, originally created in 2015.
It responds to commands sent by users through the website's chat box.
EpicOS exists under several iterations, described below.
2015
- EpicOS (v1) - Cleaned: The original 2015 version, preserved in all its tacked-together-by-a-nine-year-old glory - cleaned up slightly for publication in 2024.
- EpicOS (v1) - Rewritten: A rewritten userscript version of EpicOS (v1), created in 2024.
- EpicOS (v2) - Cleaned: The second version of EpicOS, cleaned up for publication in 2025.
2020
- EpicOS (v10) - Unfinished Node.js Rewrite: An unfinished Node.js rewrite of EpicOS (v10).
2021
- EpicOS 2021: A Node.js version of EpicOS from 2021.
2023
- EpicOS 2023: A Node.js version of EpicOS from 2023.
Retrospective
EpicOS was my first major coding project, although I didn't think of it that way when I created it in 2015. It was a command-based chat bot for Multiplayer Piano, a platform that allows users to play piano together and send messages.
You could type in things like "/giveMeAMillionDollars" and the bot would deliver, albeit within its textual restrictions.
More realistically, you could type in something like "/help" and get a list of all sorts of other commands you could use. I never really had any plan for EpicOS beyond "keep adding more and more commands", so some of them were quite ridiculous in that they simply sent back a copypasta - a copyable message commonly posted in various places online.
Other - more interesting (albeit common) - commands included:
- a version of the infamous 8ball
- a joke telling command
- a trivia command
- a 'heads or tails' coin flipper
- an insult generator
- a version of rock, paper, scissors
- a Google command
- many more
As you might have inferred, EpicOS was quite a crude mismash. I wanted to make it after seeing somebody else's similar bot on the website - CasiOS. So, EpicOS had similar commands to theirs. I would look at other people's JavaScript code and figure out what I could jam together to get something semi-functional. This became the basis for the first version of EpicOS.
2015
Throughout 2015, I tinkered with EpicOS almost every day - finding out how I could bend code into desirable shapes. It was a client-side script, so all it took to run was my laptop and a web browser window. Eventually, I ran it in the Tor Browser, which let the bot connect from a different IP address. This allowed me to connect under my own IP address under a separate nickname from the bot.
After learning from other users about a 'backdoor' that bypassed the website's 20 user limit, I set EpicOS to always connect through that backdoor. This was a common practice in many other bots at the time.
2017
By 2017, EpicOS had gone through various periods of inactivity. I was not working on it as heavily as in 2015. Its inspiration, CasiOS, had already jumped ship.
Despite that, EpicOS was approaching 100 commands by late 2017, and received frequent usage. It had unintentionally sparked a trend of 'OS'-named bots, including PeriOS - a bot that automatically recorded what users played and indexed recordings for playback.
2018
2018 was the year the client-side script version of EpicOS was on its way out. It had been hosted often on my laptop and later my first desktop computer, but was receiving updates even less frequently than before. I had largely moved on to writing bots for Discord, such as what would would become Crystal FM. I was also working on NMPB++ for Multiplayer Piano, which split the notes of Ste-Art's NMPB into different clients to bypass notequota restrictions. This also marked the year I wrote my first website, as NMPB++ could be controlled by a very 90s looking web remote.
I had worked on multiple versions of EpicOS for Discord, but these were ultimately never finished as working every command into a Discord bot proved to be a tedious task at the time.
A two-way chat bridge to my Discord server at the time was briefly experimented with.
2020
A rewrite of EpicOS in Node.js was started, but was quickly shelved before a single command was written. This rewrite was started after I thought I lost the original bot. I later managed to recover it from a backup, so this version was scrapped.
2023
In November of 2023, I experimented with bots on the .net version of the website, including a Background Music bot that automatically joined popular, but quiet rooms and played music - stopping when interrupted. This received many complaints, so was changed to an opt-in system as per a site admins' request. Oops.
A HAL 9000 chat bot that made use of language models through Ollama and GPT4All was also created. My computer was slow to generate responses using these models, so I wrote a cache system to save the responses for inputs. This allowed common inputs to get quicker responses.
2024
A new Node.js version of EpicOS returned 24/7 on the .net version of the website in December of 2023. This version featured a built-in MIDI player and allowed users to upload their own MIDI files, much like the now-defunct NMPB. It was hosted on my Raspberry Pi 3 with a 32GB SD card.
Parts of the Background Music bot were used for EpicOS, allowing it to play MIDI files if rooms it served were quiet while the users were chatting.
One of my favourite features of this version of EpicOS was its physics-based cursor animation that 'danced' to the piano notes. It worked by calculating an average note from the last few seconds, and depending on how high or low new notes were compared that average, the cursor was either pushed left for lower notes or right for higher notes. This caused the effect of 'dancing', roughly within the right range of notes. It also lead some users to believe EpicOS was a real person, due to the fluid, almost human-like cursor movements.
Original versions of EpicOS simply had a meteor-like effect in which the cursor would repeatedly fall down a slant from the top of the screen, before jumping to the top again.
On the 8th of July 2024, I decided to shut the new EpicOS down after I felt it had run its course. I had been working on an update for the database that would switch it over from JSON to SQLite, but ultimately never finished this. EpicOS was last updated on the 12th of May, 2024, and I expect it to stay that way for the foreseeable future.
While EpicOS was no masterpiece, it taught me a lot about many things - even outside of coding, and has been a cornerstone learning experiencing of mine. Ultimately, I'm thankful for that person who made CasiOS and sent me on the path back in 2015 that brought me here.