Case Study: Web Distribution

A music college recording department moving from discs to downloads & streaming, without being burned at the stake.

First published January of 2015, updated June of 2016.

I believe this is a huge hurdle many music college recording departments are struggling with as most engineers aren’t familiar with software development, and internal web teams are not equipped to handle these larger web apps. The solution here will involve learning some amount of web development, but not nearly as much as some might think.

I run the recording department at the University of North Texas (UNT) College of Music, one of the largest enrolled music colleges in the nation. In 2013 we completed the final stage of a transition to distributing audio and video recordings online, and have never looked back.

Access has exploded with services like Youtube, Spotify, iTunes, and Pandora. With that freedom comes an increasing expectation that recordings are in the cloud, accessible from anywhere at anytime. Moving online solved those two problems with better automation, cost scaling, and decreased overhead.

Our system is about to pass 300,000 streams and downloads logged since we began the project in September 2013.

While most of the system requires a login there are some pages that do not. See the result:

Getting Started…

This didn’t happen overnight.

  • Fall 2009: Live streaming starts; DVD production stops.
  • Spring 2011: On-Demand video streaming launches for playback of live stream events only.
  • Spring 2012: Youtube channel gets regular updates.
  • Fall 2013: Downloads, streaming audio and online payments added. Discs no longer offered.

Short History of Video Production at UNT

The history of video production at UNT began with selecting 5 concerts a year for DVD productions. Sales were in the single digits, the overhead per copy was too high, and so the project was in deficit. In 2010 the video system was then repurposed for live streaming and was a huge success.

Duplication Requests with Streaming

To meet duplication requests I created an on-demand streaming system, with Wowza Streaming Engine and JW Player. The cost was minimal, required some development time from me, and on-campus bandwidth being free. However the archive is limited to active UNT members due to copyrights, and faculty permissions.

Having the highly viewed live streaming and on-demand (archive) sections close together was intentional for helping people learn where resources were.

Clear minimal site navigation helps train users were resources are.



First I had to address the legal implications of offering copies of copyrighted music. We had several meetings ironing out what was fair use, and developed releases and communication channels as the industry evolves with technology. Downloads to students was considered fair use (as educational), and what they do with it afterwards was not the fault of the university, however promotional use for the student should also be considered fair use.

Access Policies

Audio would be free and open to download to anyone logged in, dropping duplication fees. Video on-demand streaming would remain limited to students, and free since the technology was covered by live streaming. Student recital video is available for download only to that student, and all faculty, while their audio is available for streaming/download to anyone logged in. With input from ensemble directors we decided to charge for video downloads for ensembles to discourage the reposting to youtube while recouping costs.

For a typical concert options are:

  • Student/Faculty Streaming through the archive.
  • Student paid video Download, Faculty video downloads for ensembles.
  • Private access through Dropbox Pro for things like sessions.
  • Public streaming through Youtube of selected material.

I also had to address some common questions, like:

Can Mom and Dad watch it?
There is no clause in fair use or Title 17 allowing mom and dad to listen to copyrighted music for educational purposes. Ask your child for it.

I’m alumni, can I get a copy of a concert?
Since you no longer are a student, no. Again, Title 17 and the law say so.

I missed the live concert, where can I watch it?
We are not able to repost it due to rights and permissions, though if there was a specific piece I can try to get permission to post on youtube.

The Content Management System (CMS)

Publishing had to be easy like a Facebook status update, and highly extendable for better digital workload, so it has to work better than anything the university offers.

This is not simply a website, but a tool for how recordings are packaged, tracked, approved and accessed by people.

Typical entry for a concert. This shows the chapter marks, audio files, and some of the meta tags.

ExpressionEngine is a mature content management system for large, database-driven websites. It also has an extraordinary amount of flexibility, well-documented, and has had a great community of developers building add-ons. EE is a backend administration tool for inputing entries, and managing members, plus a templating engine for all types of outputs (HTML, JSON, XML…etc).

EE needs add-ons to be super awesome like file management, tags, tables, entry sorting…etc. The ability to create custom forms was key, a built-in feature. Assets is serious file manager that could index the almost 800,000 items with include meta and upload large file sizes through the browser. Tags supply the majority of meta support such as composers, musicians, and location. Link Vault protects links and provides click logging. Those are just three of the 50 add-ons being used.

Access control is done through EE’s native member management. The account is automatically created with LDAP credentials and sorted into faculty/student/staff member groups. In the EE template it is simply a conditional if the current user is in that member group.

{if logged_in_member_group==”10"}
Hi Faculty! Here's a download link...

Two custom add-ons had to be written right away. One for LDAP access to UNT’s directory of students and faculty and sorting them into groups for permissions within templates. The second was using ffmpeg to convert uncompressed audio to compressed with meta like artwork for streaming and downloads. Other small helper add-ons like timecode conversion and creating xml files are easy to create and add.

Media Management:

All file management to the network drive is controlled through the Assets add-on. Each audio track is cut into pieces or movements and uploaded as separate files along with a PDF of the program. Video is usually one file, but could be split up.

File Management —File browser view.

Production Flow:

Entry statuses describe where the concert is in the post-production process, such as “waiting for review” or “pending audio.” Each field has instructions for student workers so no separate documentation to maintain.

When the entry goes live the site will generate the m4a compressed audio with meta and artwork from the entry. That saves duplicate work using something like iTunes to tag files.

Development Plan:

I am always trying to improve the way our clients access their recordings. I handle mostly front-end work, and I leave EE back-end work to add-on developers. With EE I can output data in any format, flip access in multiple ways, show and hide things by groups, or payment for products.

Change is constant, plan for it.

For example, when JW Player included adding chapter markers into their timeline via a separate WebVTT file, I created a new template with the required meta already stored in the database. Done. Status Board needed simple a few XML formatted templates. JSON for javascript sorting or pushing specific data like an ensemble’s concerts to other sites. Apple TV markup language is simply xml templates.

On-demand streaming archive. Chapter markers, real-time waveform that follows video…etc.
LEFT: ExpressionEngine template. RIGHT: Rendered output.

I would also suggest taking a look at Craft if EE does not meet your needs.

Online Payments:

Every recital payment is made with a credit card. No more cash handling or check deposits. I get a notification on my phone every time someone pays, and can push a refund while eating lunch. Financial Reporting simply logs in and accesses the data they need in the format they want. Receipts are automatically sent to various staff for approving recital bookings or delivering media. Since this is also tied into the archive I can charge for some types of media such as a video download, and it is all automated.

Online Payment form

However I went through three years to get a simplified checkout form. Stripe was the only gateway allowed because of their use of javascript, a script running in the browser so payment information never passes through campus servers. Best of all this qualifies for minimal auditing!

The system has generated over $52,000 in purchases in a 2 years, and I can’t remember the last time I deposited cash or check.

Educator Access

In 2016 I was given both legal and faculty permission to allow non-profit educators access to our streaming archive. Since ExpressionEngine already has a member management system it simply required a new group I called “Educators” that had or did not have access to certain buttons or templates.

{if logged_in_member_group == 11}Hello Educator!{/if}

To get people signed up they first fill out a very short form for us to verify their employment. On submitting this form I get a notification to review, then approve the new member. This puts them on a free subscription for 1–5 years (still haven’t decided) before being reviewed again.

Awesome front-end forms are key for good experiences.

Archive Design and Layout

Version 1.0 was short-lived, but I’m posting some screenshots to simply show where we were 4 years ago.

First Draft.

2016 is much different. Not only in visual design, but a strong focus in functionality.

Current design.

The site has expected navigation with calendars, searching, and ensemble/tag views.

There are two absolutely critical views, the landing view and event view.


The landing view is what a user sees after logging in. It is here we can make the experience personalized. It shows events you might be in, along with your favorites, and followed ensembles and tags. If you are an ensemble director you’ll see the recent ensemble recording. If you need to review a degree recital you will see those listed. The click-through rate on these is higher than any portion of the site and significantly reduced page surfing.

Different views for (L) faculty, (C) Student, and (R) Ensemble directors.


The event view shows an individual concert, and all the files related to that concert. For more on this page check out the writeup on our waveform-based player:


Jan — June 2016 audio-only stream and download stats.

Has it worked? The system has logged over 300,000 downloads & previews, and 100,000 video streams year to date.

Promoting success is extremely important with online systems.

Initial Benefits:

  • More watching and listening means more awareness to the work we do.
  • Less paperwork for expendables like discs, cases, paper, printers.
  • Quicker access to recordings.
  • 24/7 Self-serve gives us staff more time to focus on recording.
  • Easily develop more elaborate extensions like iOS, Apple TV.
Full-blown Apple TV app made within a week.


I take great joy in hearing how faculty embraced it. One faculty that drives about an hour to campus streams the recitals he has to grade through his iPhone using his car’s bluetooth stereo. Another enjoys not having to dedicate shelf space to cases, and finds the ease of finding material quicker online. For students this idea is second nature to them. Having files be free allows much needed accessibility to recordings for education.

CDs to Download/Streams for the last 3 years.

Do I still get disc requests? Not really. The few requests that I hear about are simply because they are not aware of the archive. Once I show them there’s few problems.

Policy from Stats

Some examples of how services were adjusted based on how members used the site.

Posting events quickly is important to be useful.

Live performances share similar trends as sporting events. Interest drops off significantly after a short amount of time. The trend also suggests event viewing drops significantly after the live event. Looking at the stats I decided to purge streaming video about 4 years after posting.

Example of a typical event views after posting.
Single Real Event — On Demand viewership for 3 months.

Evenings are heavy watch times.

Usage spikes more in the evenings, about 5pm to 1am. The average playtime is less than 10 minutes, and only half of an event’s audio is streamed, with less downloaded. Students and faculty go after specific things so markers in the video and cutting up concerts into tracks is important.

On-Demand Concurrent Bandwidth Is Low and Spread Out

This means using the same server for live and on-demand is not ideal. Even if the event was heavily watched, viewing is still spread out. It also means on-demand viewing isn’t going to break the internal network or require data center support. However we also do not send push notifications to bring a surge of incoming views.

VOD Viewers — RTMP (yellow), HLS (green), RTSP (black)
Peak bandwidth, by day.

Streaming is preferred over Downloads

At a 10 to 1 ratio, and increasing. Almost no zip downloads, and rarely

Half are on Mobile, above industry average

Only a quarter of our recording schedule is of ensembles yet they account for over half of the activity. Mobile and tablet usage continues to grow with about half mobile & tablet and half desktop with students. However JWPlayer published a stat that says more than 80% of their “mobile” views are at home or the office on high speed connections.

Every On-Demand viewer Seeks

Everyone who watched a video jumps around, so building good seeking and timeline functionality is very useful. I built three different ways to view the timeline within the video player: the build-in timeline with cue points, a chapter list that stays in-sync with the player, and a progress bar timeline of the audio waveform.

3 different seeking/timeline methods.

Other bits include:

  • iOS dominates views, but the lowest on minutes watched.
  • 3–5 days is the window most after-concert viewing will occur.
  • Majority of live viewers watched a 480p and 720p stream.
  • The larger the viewers screen size, the longer they watch.
  • On Demand video traffic is about half as much as Live streaming traffic.
  • The majority of faculty and students used online resources instead of discs with little to no help/complaints/instructions.

Further Thoughts

The university’s hosting service only allows one content system run in a limited way, so to get it right for the user I had to do quite a bit of learning to run our own server.

Wait… Why in the world would a recording engineer take on building a web app? I think a music college’s internal recording department is half recording and half distribution. Their job is to get sound and video to people. They definitely need to help in guidance, and training (and pay). The recording department should initiate the request to create, and manage the development of a system, but it should not be their responsibility to code the majority of development, maintain the majority of code, or administrate servers. They didn’t develop the technology for vinyl or CDs, but they distributed them.

I manage a recording department for a large music college. Audio, video gear, web streaming and web development.

I manage a recording department for a large music college. Audio, video gear, web streaming and web development.