Opus v0.5 Release Notes6 min read

opus v0.5 logo

For those of you who don’t know, Opus v0.5 is my web development senior project. It is an open-source piano roll for web browsers, written mostly in Javascript. I will continue to maintain Opus after I graduate, and I will be including more features in future releases. Since it is open-source, feel free to fork the repo and submit pull requests.

Release Notes

I made Opus v0.5 with love, sweat, blood, tears, and Javascript. I wish I could have pushed it off a little longer to have some more features. Regardless, my class deadline was April 26th, 2018. Since this is the first “official” release, here is a brief introduction as to why and how Opus was born. I am so excited to share this project with you.

My digital audio workstation (DAW) of choice is definitely FL Studio, but when I upgraded my Macbook to High Sierra, it broke a lot of the links for the Mac beta version. This presented a problem – I was unable to work on music. The solution? Create a new midi workstation. I decided to craft the piano roll to my own personal workflow. Eventually, I hope to write more features to help people write better midi compositions.

If you find bugs or have suggestions, please either open a new issue or feel free to make a pull request. You can also read more about this in the README, or contact me directly.

What’s New

  • Well, everything, considering this is the first release.
  • Sign in with twitter
  • Create, save, update, and delete songs and their phrases
  • Piano roll workstation
  • Fairly basic profile page for sharing


  • Heroku server
  • AWS S3 file hosting (midis)
  • mLab document storage

Opus v0.5 – Class Report

This semester, I spent about 145 hours working on my senior project, Opus v0.5. The logged hours do not include the time I took to read documentation or explore the market. The course documented hours only include time spent coding or implementing design. Since the course also required an accurate timeline, I pushed regular commits to the public repository, in addition to posting to the Canvas discussions. I also used the editor plugin wakatime to keep track of how many hours were spent coding.

Personal Assessment

I am extremely proud of my work throughout the semester. Before this semester, I have never dealt with libraries outside of vanilla Javascript. However, it was fun to explore and learn and grow with these experiences. Most of my work was spent in designing the workflow and data structures of the project, accompanied by some prototype-esque implementation. Not only did I learn about libraries and various parsing techniques, but I also got a lot of practice with Git integration and best practices.

Data Structure

The user workflow was modeled after my own personal music-composition workflow. I create a phrase, add it to the timeline, then rinse, wash, and repeat until a song is created. Eventually, I would love to add new features that would help with the creative process, such as chord-progression and arpeggio generators. Unfortunately, 145 hours is not enough time to do as much as I would love for the finished product to offer. Regardless, this data is tied to the users’ accounts (pulling their data from the Twitter API), and can be continuously updated or manipulated.

I decided to use Twitter authentication for users to be able to access the workspace. This was mostly because Twitter has an actual team of security enforcers who do a fantastic job of keeping passwords and sensitive information secure. Since I am just one person, I do not want to necessarily be responsible for protecting too much user data. Twitter also happens to be where a lot of my target market promotes their music (as opposed to personal websites and blogs), so the integration is simple. I want to eventually be able to showcase all the artists’ work, but in Opus v0.5 there is only the option to view the artist’s “simple data”.

The users’ data is stored on two separate servers. I have one mLab database that stores text documents that outline the users, phrases, and songs. Actual Midi files are stored on my Amazon AWS S3 server, and in a future release will be pulled out on demand and downloaded to your own computers (so you can use it with your other favorite DAW).

Web Development

As far as libraries and frameworks go, I definitely learned a lot. This was the first semester I’ve really used a framework (VueJS). It was also the first time I’ve used libraries (InteractJS, AnimateCSS, etc). I had also never used Node or Express (my previous semester covered Python servers), so it was a lot of fun to get that up and running.

The site makes AJAX requests to my server to create/save/delete all of the songs and phrases. Since I’m running free servers/hosting on Heroku and, mLab, and Amazon AWS S3, more of the work load runs on the client. This makes it easier on load time for multiple people to be on the site at once.

I also attempted to make use of a “standard” development workflow. Again, I kept track of all of my commits and changes with github. I checked out a branch once when I was changing everything over from vanilla Javascript to Vue. However, I decided to just continue working on the master branch for the sake of transparency for the class. While working on upcoming features and versions, I will definitely be using branches.


Although I’ve had to take design classes for my degree, I don’t necessarily consider myself to be much of a designer. I spent a couple of hours working on the Opus v0.5 logo, going through about three iterations before coming up with the final look.

I also spent several hours working on the design of the workspace and the profiles page. If you make music, you can probably tell that I based a lot of the template off of FL Studio’s piano roll. It is the only feature that I really use to make music, so it is the main feature of my application. The timeline and piano roll ideas are not new, but this is the layout that works best for my personal workflow. Hopefully with future iterations, there will be more customization available for users.

Peer Review 1 – Thomas V.

Maryn is very clever and obviously a competent programmer. Out of all the projects I saw this semester, I would have to say Maryn’s was the most impressive. Having a little bit of experience experimenting with MIDI data in the browser I can speak to the technical complexity of her project. Judging from midterm and final presentations I could see that many of the design decisions were premeditated, which I think is a strong indicator of a valuable developer. I am excited to see her future work and future development on Opus!

Peer Review 2 – Tyler B.

Maryn’s senior project idea Opus really intrigues me. The time that she put into developing the backend really shows in the front end. Her designs are solid and look nice and with a few tweaks her project’s target audience could be expanded to include anybody who is interested in creating music not just those familiar with the workflow. I can’t wait to see where this project goes.

Leave a Reply

Your email address will not be published. Required fields are marked *