At Mark of the Unicorn, my initial responsibility was maintaining their website. They were using an aging technology stack consisting of an old version of the Plone CMS which runs on the Zope object database. This website was not just a public facing source of information about the company, but also a proprietary customer management platform connected to a separate SQL database. I began the process of analyzing the codebase and figuring out a plan for moving forward. In the short term, I moved the company to Stripe credit card processing and utilized the UPS API to add shipping price calculation for shipments from the store and equipment repairs. I fixed a lot of really problematic and hard to find bugs in the system including an issue that was causing the object database file to balloon in size very quickly. After a good deal of investigation and failed upgrade attempts, I decided that the best course of action was to build a modern replacement for the site using proven technologies.
I began researching the technologies to be used in the replacement site and eventually decided on the Django platform. For the content part of the site, I decided to utilize DjangoCMS. The site you are reading right now is actually powered by it! DjangoCMS is an amazing content management platform and after trying out the alternatives such as Wordpress, Drupal, Joomla, Mezzanine and others... DjangoCMS was the best choice for MOTU. The ways in which it can be extended with plug-ins and the ease of creating and editing content quickly are what drew me to it. The question then remained of what to do about the customer management platform, and I eventually decided that the Oscar e-commerce platform was the way to go. Oscar is another platform that is very easy to modify and extend by design.
The descision to use these two products as the starting point for developing MOTU's new web platform was the first step in the process of modernizing the site. They were the best choice to keep the current business logic intact and not disrupt workflow. The new platform needed to:
I began work on the site by integrating DjangoCMS and Oscar into the same Django project, ensuring that Oscar's URLs wouldn't collide with anything created in the CMS. Once I had a project up and running, I began the task of writing a database conversion script that would take all of MOTU's customer data out of the legacy system and create Django users for them. This involved extending both the standard Django User model and Oscar's models . This script evolved over time, but it was the first step to building the skeleton of what the new platform would be. I then continued by beginning to extend views in the Oscar dashboard and creating a few of our own for the tech support and download systems as well as some other administrative functionality. We had many meetings with the tech support team to fine tune the administrative dashboard to their needs. The replacement site was eventually deployed on the 6th of July, 2019 and is in use today.
MOTU pro audio interfaces are unique. If you've ever used an audio interface from a popular brand such as Focusrite or PreSonus, you're probably used to the idea of connecting it to your computer with a USB or Thunderbolt cable and opening a program installed directly on that computer to control it. MOTU devices work a bit differently. Instead of the software that controls the interface living on the computer it's tethered to, it runs on the device itself. These devices have a small ARM based CPU inside that serves up a web based control application. Since they have network ports, the device can be connected to your home network and accessed on that network by anything that can run a modern web browser. The main functionality of these network ports is to use a technology called AVB to send and receive real-time audio over a network, but they double as a way to serve up the web app. You can also access the web app through a web server hosted by the audio driver if you don't want to connect it to your network. Technically, the device doesn't even need to be connected to a computer if you want to just use it as a mixer to run a live show. All you need is a wireless router connected to it and then a laptop / tablet to control it from and you're good to go.
The initial releases of these devices used an entirely custom written coffeescript app for the web frontend with a C++ based backend. It's been improved on over the years but one area it had always suffered in was touch interaction, especially on smaller devices. I was tasked with creating a new mixer interface for this web app that was touch friendly but still worked well enough on a desktop to control the massive array of parameters accessible in the mixer. It was decided that this was going to be a React based web app that would integrate into the existing software. There are lots of people all over the world that depend on these devices to do their jobs in the pro audio profession, and it was important that the change not be too disruptive and that the original functionality was retained. I worked closely with a graphic designer and over time was able to make his design a reality.
This project was a particularly big challenge in the responsive design department. The mixer has a configurable amount of channels, all the way up to 48 input and 22 output channels plus reverb. Every channel has real-time signal metering. The device can be controlled through multiple browser sessions, so UI elements in one browser need to react to changes being made to the device from another. The scale and labeling on the meters and faders needs to be precise so that engineers can make exactly the adjustments they need to every level. Not only does the app need to respond to all of these things that can change at any moment, it also needs to respond elegantly to changes in window size and device orientation. We were also interested in pushing backwards compatability as far as it would go, so users could potentially use any old android tablet or ipad they had lying around to control their interface.
I took inspiration from popular code editing software such as Sublime Text, Atom and Visual Studio Code and came up with the "minimap" that you see at the bottom of the mixer. In these text editors, there is generally a vertical minimap on the right hand side that replaces your scrollbar with a visual representation of the code you're working on to make it easier to scroll to specfic sections quickly. I took this concept and applied it to mixing, giving you a high level overview or "meter bridge" that doubles as a scrollbar. The idea is if there is an out of control signal that you need to address immediately, you can quickly glance down at the minimap and find out where it is. Then it's as simple as tapping that section and the mixer will scroll over to that location so you can make the adjustment.
Being an audio engineer / musician myself, I was personally invested in making this project a reality. I had a unique perspective on how the devices might be used, which helped in developing the software to handle all the situations it needed to be used in. I use these audio interfaces in my home studio, and it's great to be able to just text the musicians I'm working with a link they can open on their phones and give them access to their own personal headphone mix. It saves so much time not having to try and tweak everyone's mix before getting started when everyone can adjust on the fly for themselves. This was the second project that I took the reins on and brought to release. It's definitely my favorite piece of software to have made, and the most challenging from many points of view.