2018 Update on Cello Expressions Projects

Cello Expressions has existed in its current form for nearly six years. After briefly serving as the website for my high school cello quartet, it has been the home of my various digital projects for most of its existence. As this site and its content reach a level of relative digital maturity, it’s time to update the status if its various projects. This post serves a similar purpose to a roadmap combined with an “annual report,” interpreted loosely and without any expectation of becoming annual (I’m in no rush to duplicate the effort that went into the last annual report that I prepared). Read on for insights into the recent work, current status, and future goals for this site and the projects that it hosts (including my WordPress themes and plugins).

Project Updates

Sheet Music Library

The Cello Expressions Sheet Music Library has seen significant growth since migrating to WordPress three years ago. The Sheet Music Library WordPress plugin offers significantly improved content structure, easing navigation and offering better access to audio, video, and imagery for each piece. With the navigational and SEO improvements from the redesign, the sheet music library remains the highest-trafficked portion of Cello Expressions by a large margin (averaging roughly 3,000 visitors monthly).

The Cello Expressions Sheet Music Library home page as of March, 2018.

There are now over 100 compositions and arrangements in the library. I intend to continue including original work only here, with the sheet music library plugin offering a venue for other composers to similarly share their work. A number of pieces are no longer directly available due to  copyright requirements. I do not want to spend time handling copyrights, as the free sheet music format is not easily compatible with requirements that various publishers have. Moving forward, I will generally only arrange pieces that are in the public domain. I will still provide (for free) sheet music for copyrighted pieces on a per-request basis, for groups that acquire the appropriate rights for their usage directly with publishers (by paying them and filling out their required paperwork).

Given the volume of traffic (and demand) for sheet music in the cello ensemble niche, I have considered the possibility of selling some music. This is not an immediate goal; however, building an integration between the sheet music library plugin and an ecommerce plugin (such as WooCommerce) would be beneficial to many, many self-publishing composers. As the plugin FAQ notes, the plugin is designed so that interested individuals or developers could build this integration without my involvement. If that still hasn’t happened in the next couple of years, and I decide to begin charging for some of my (new) sheet music, I may create this integration myself. Given the purpose, this would likely be as a commercial WordPress plugin.

The new “Audio on This Page” playlist widget in the Sheet Music Library.

In the near future, I plan to continue publishing new compositions or arrangements every six months or so. My focus will be on quality over quantity. In addition to reasonable and well-assessed difficulty levels, I want new additions to the library to be particularly well-suited for the medium of cello ensembles. Where possible, new arrangements will have at least a rough recording to accompany the sheet music. I don’t have many technical improvements planned for the library. However, I recently added an “Audio on This Page” feature to the sidebar. Borrowing behavior from the Featured Audio WordPress plugin, this widget automatically assembles an audio playlist of all of the sheet music (with audio) shown in a given view (by composer, genre, instrumentation, etc.).


I launched my Photography site in 2015 to explore my interests in architecture, construction, landscapes, and landscape architecture. Part photo-blog, part art-project, the site is driven by the immersive experience offered by the Lucidus WordPress theme.

Cello Expressions Photography home page as of March, 2018 (actually a video background, of the USC Village clock tower reflected in the central plaza fountain).

The content has evolved somewhat over time. Most of the content for the first two years became a detailed (and fully-captioned) visual account of the construction progress at USC Village. A few other pieces of content are scattered in with those posts, and have taken greater focus since I graduated from USC (and left Hathaway Dinwiddie Construction) in December 2016. The USC Village series accumulated a substantial following, as it should have, given that it was one of the only public sources of information for the project’s progress. The level of reader engagement through the open comments was encouraging. I’m hoping to continue encouraging viewership by becoming more regular in timing my posts; however, the format of the site does lend itself to, perhaps annual, perusal with an occasional deep dive.

Moving forward, I hope to share more of my work with KPFF through this site. As all of my current projects are under construction, certain particularly-interesting images, and a few more-detailed galleries, will make the cut, along with other relevant content. However, I do not anticipate curating regular, detailed progress posts on any particular projects in the future, similar to the USC Village series. Rather, the primary focus will be on interesting imagery of architecture and structures that I’m involved in, and that I encounter. The theme continues to be quality over quantity–only a small percentage of the photographs that I take make their way to the site, and I will attempt to balance the subject matter between the stated categories where possible.

Ultimately, my objective with Cello Expressions Photography is to provide a collection of visually-stimulating imagery regarding architecture, construction, landscapes, nature, textures, and more; as a stream of content with the ability for viewers to dig into any particularly-interesting elements. I am generally satisfied with the presentation of the content and technical process for managing it. Eventually, I want to build a “full-page galleries” WordPress plugin that provides a more immersive gallery-viewing experience, with some similarities to the Jetpack plugin’s Carousel feature. Otherwise, my focus will be on creating and curating the content (as it should be).


This blog acts as a catchall for text-heavy content related to my various digital projects. Much of the content has historically been related to WordPress. I do not write nearly often enough to warrant distinct blogs on each of the Cello Expressions sub-sites; hence the mixed subject matter. Hopefully, if you’re reading this, you care enough to skim or skip past any content that isn’t relevant to why you ended up here, and you may even find value in contextualizing the unique perspectives that my diverse interests provide.

Cello Expressions Blog as of March, 2017.

I have made an effort to document most of my major projects here, including a few links to substantial external work. This blog has accumulated a relatively large amount of content. I made the decision, years ago now, to remove some of the oldest, lowest-quality posts (primarily discussing updates to now-closed plugins); retaining the vast majority of the content here, I will do my best to keep a consistent quality standard. I generally aim to only publish content that is worthy of being published online and that provides additional value by being mentioned here, if it supplements another source. Moving forward, I anticipate a continuation of curated update-and-announcement-type posts. However, the primary focus will be on more substantial content. This post essentially documents my goals and expectations for my digital projects over the next several years, for example. Essays with multimedia supplements work particularly well in the traditional “blog” format; as evidenced by my favorite post:

Trust WordPress with Live Preview

I also hope to share more of my (non-professional) architectural work here. I recently published more of the work that I completed during my undergraduate architecture classes. This decision preceded the somewhat-random discovery that this example image from the live preview essay ranks top-five in a google image search for “mixed building floor plan.” I continue to be intrigued by the value that certain projects and ideas happen to provide to certain people looking for specific things. This is a testament to the out-of-the-box SEO power of WordPress, particularly for linked images, which I’ve witnessed in my contributions to sites ranging from USC ASCE to here.

Technically, this blog uses WordPress in the most out-of-the-box form of the Cello Expressions sites, and is resultingly low-maintenance. I recently, finally, added footer widgets to improve more-targeted navigation through what is now a reasonably large collection of posts. Notably, this includes a “Featured Posts” section, which will be used to organize what I see as the most important and highest-quality content that I publish here (using a WordPress menu). I also incorporated a more-comprehensive index of the Cello Expressions projects.

While I still like the artistic statement that the Figure/Ground theme makes, I recognize its functional limitations. Especially as I focus on longer-form and higher-quality content, readability and accessibility should become the primary focus of the design. I have already completed the concept design for the next graphical design for this blog. It will strive to make a similarly-bold artistic statement, but one that better lends itself to content consumption. Given my preference for focusing on content creation, and the disruption of WordPress’ ongoing “Gutenberg” project, a new design will likely launch sometime next year. Figure/Ground will have had an impressive five-year run here by that time, and will continue to be available on WordPress.org.

Halsey Themes

My WordPress themes are no longer part of celloexpressions.com, having moved to http://themes.halsey.co/ last year. However, they are still one of my digital projects. The move to a dedicated site is related to the decision to begin offering commercial themes. I still haven’t formally announced this project. One more theme is under development; once it is complete, there will be a good mix of target user types and I’m planning to market this project more broadly.

Halsey Themes home page as of March, 2018.

My themes focus on simplicity and usability. Prioritizing user-first, out-of-the-box design, their unique and opinionated designs provide visitors with unforgettable experiences. The themes implement core WordPress features along with efficient custom options so that user can get their site up and running, or switch an existing site to one of these themes, with minimal effort.

Starting with the free Figure/Ground blog theme, each theme features a unique design approach. Currently-complete themes include:

    • Lucidus: an innovative photography theme featuring huge, layered (parallax) featured images and stunning post formats
    • VisualizePerfect for pairing poetry with photographyillustrations with essays, or showcasing mixed-media works, Visualize features a clean and simple design showcasing an elegant two-column layout
    • Classic ArtisanA modern expression of a timeless design—with a traditional layout meeting bold typography, high contrast, and an elegant background, Classical Artisan is ideal for artistsdesignerscraftspeople, or small businesses
    • Linework: A clean small business theme, Linework is a dynamic, highly-customizable canvas for your content to shine
    • Figure/Ground: An eccentric free blogging theme featuring an animated background graphic and extensive customization options

Each of these themes is now available either free from WordPress.org or for purchase (licensed GPLv2 or later) on Creative Market. Check them out now if you’re interested. These are the types of design-focused themes that cannot be replaced by WordPress’ Gutenberg project. They allow your content to shine regardless of the editing experience and feature unique structural elements that cannot be duplicated with a block-based editor and a generic theme. As Gutenberg moves closer to inclusion in core, I plan to evaluate its integration with each of these themes as a measure of compatibility, contributing issues back to the core project. Look for a formal launch of Halsey Themes in six months or so.

WordPress Plugins

The Cello Expressions WordPress Plugins site largely exists for posterity, as all of its content is pulled directly from WordPress.org. Unfortunately, the “I Make Plugins” plugin that powers it has been partially broken for some time now. This site will likely continue to exist with minimal changes until https://profiles.wordpress.org/ becomes more useful as an index. It does run a fun interpretation of the Twenty Thirteen theme with the Thirteen Colors plugin.

Cello Expressions WordPress Plugins home page as of March 2018.

I currently have 25 plugins available on WordPress.org. A few are formally “abandoned” at this point, while a few others need some updates that I’m planning to make in the next few months. The majority of these plugins do not require regular or extensive maintenance and remain actively supported (indicated by bumps to the “tested up to” field in the readme). I try to answer questions in my plugins’ support forums every few months.

There are several more small plugins on my list to eventually build. Moving forward, my goal is to create plugins with little-to-no UI, and to publish as many plugins as possible that are built for a particular site. As with most of the plugins now in my library, it’s usually not much harder to build custom functionality in a generic way so that your work can be used by anyone needing that functionality, rather than restricting it to your project.

Pseudo-random Experiments

One of my earlier projects, pseudo-random experiments remains a good example of the type of work that I want to share with Cello Expressions. The various experiments hosted here have inspired WordPress themes and created graphics for Chase the Music concerts. I do not have any specific additions planned; however, any new experiments in a similar theme will be added as they’re created.

Pseudo-random Experiments home page as of March 2018.

Interactive Geometry Apps

While this project has not been active since 2013, it is the newest addition to the Cello Expressions site. Originally intended to be published as standalone mobile apps, these projects are pseudo-educational and present advanced geometric concepts in interactive and uniquely digital ways. Future updates are not likely; however, there is useful existing content here that will continue to be presented along with the active Cello Expressions projects.

Interactive Geometry Apps site as of March 2018.

Geometry of the Twisted Savonius Wind Turbine

This is my oldest project, and the only project that predates the Cello Expressions site. Documenting a high school research project, it continues to receive a small, regular stream of traffic. Given the specificity of the research and lack of other online sources offering information on this particular type of wind turbine, it remains an important resource to have an online home (some of the graphics have even made their way to Wikipedia).

Geometry of the Twisted Savonius Wind Turbine site in March 2018.

While the content here doesn’t necessarily fit with the other Cello Expressions content, hosting it on an archived site in this network is the best way to keep it in a stable, secure framework. The last updates were a conversion to WordPress in 2013, and the content was last updated in 2011. No further updates are planned, but the site will continue to remain publicly available.


After several different iterations in both design and structure, Cello Expressions is now in a reasonably stable and tenable state. Most of the sites run on a WordPress multisite network. These run a mix of custom and public WordPress themes and share a common administration interface. A few projects are on a basic HTML & CSS setup.

The WordPress sites each make use of a single post type. This suggests an alternative implementation where Cello Expressions could run on a single instance of WordPress, organized by post type, rather than several distinct WordPress sites. However, the current strategy facilitates unique graphical designs for each site. Given the diversity in content types and the unique themes and visual customizations provided for each, the multi-site approach has been relatively easy to maintain. In fact, while all of my other complex WordPress projects have used several post types within a single site, the multisite approach is worth considering more often. The “global” navigation bar and the few manual cross-site links would benefit from further iteration on this approach. For example: could the homepage be managed by a cross-site menu that renders dynamic multi-part content instead of being hard-coded?

The HTML & CSS projects are difficult to maintain–for example, the recent transition to SSL rendered them unusable for several months (all of Cello Expressions is now running on SSL (https://), after a series of transitional issues). However, these projects are generally simple, feature hard-coded scripts as content, and are rarely updated. For these reasons, it still seems to be best for these to stay out of WordPress

Other Goals

My extensive contributions to WordPress core are directly related to my goals with Cello Expressions. There is direct overlap in some of the more specific projects, such as default theme and feature plugin development. This blog has content related to WordPress core development. And, most of my contributions have directly improved my ability to publish my various projects online.

Moving forward, I plan to focus more on my own projects, here, than on WordPress core development. For a variety of reasons, I usually do not have enough influence for my contributions to create the level of impact that I’d like to have. I have also repeatedly had bad experiences with the way parts of the project are managed, and how decisions are made. Ultimately, the community seems much more receptive to my efforts as a plugin and theme developer.

As WordPress evolves, I expect to contribute opinions and (maybe) design much more than code. In fact, steps are being taken that will effectively prevent me from contributing code. Given that I now have much less time available for any digital projects, I’d rather focus on my own projects anyway. My perspective as someone that does not use WordPress professionally, and has no interest in doing so, remains generally underrepresented. I hope that other WordPress contributors respect and seek out this perspective more frequently, as it represents the silent majority of end users.

Overall, Cello Expressions has evolved into a stable home for a number of my projects. I might add more projects here in the future. I definitely want to generate more content within the project frameworks that are already established. Technical improvements will also come, albeit at a lower priority. Perhaps the biggest unknown is the level of interaction that my projects will see. Interest expressed via comments (or reviews, or direct messages) is likely to generate more focus on a particular project. That part is up to you.

Trust WordPress with Live Preview

When most of us walk into a building, we assume that it’s safe. We trust that it’s built to code and structurally sound. And we trust that the engineers and architects behind the building know what they’re doing.

If a room is too hot or cold, bright or dim, spacious and sprawling or tight and cramped, many people are uncomfortable and may even complain. Human comfort is the most important aspect of the design of physical space, yet it is nearly impossible comprehensively assess the experience of a space before it’s built.

The disconnect between designing a space and experiencing the end product is the biggest challenge in the building design industry. Digital products face similar challenges in bridging the gap between designing something and publishing it, but physical constraints pose fewer challenges here. WordPress has evolved to provide the potential to close this gap all the way to an end user managing content, by providing a framework for live previewing changes to a site before publishing them.

To fully understand the significance of live preview in the WordPress context, it is informative to consider examples of similar challenges and solutions in other industries. We’ll start with a few examples before returning to the topic of live preview and WordPress, and examining the importance of trust.

Previews in Structural Engineering

Most people trust structural engineers to design safe buildings and bridges. And engineers work diligently to consider every possible scenario that each structural element and connection may experience. But at the end of the day, most structural engineering problems are ultimately educated guesses.

In structural engineering, the governing equation is design < capacity. In other words, the load on the structure, from its own weight, the weight of its occupants, and environmental forces such as wind, snow, and earthquakes, must be less than the amount of load a given element can support. But both sides of these equations make numerous assumptions. Vertical loads are typically estimated as distributed area loads based on the design usage, while the capacity of a structural element is based on the expected properties of its material and shape. Demand loads are amplified and capacity reduced by safety factors to account for the potential uncertainties in both estimates; these factors of safety help engineers trust their designs despite these uncertainties.

In addition to making significant assumptions at every step of the design process, structural engineers are limited in their ability to preview the performance of a structure before it’s built. Small scale tests can be performed, and newer digital tools can apply known forces, such as historical earthquake data, to digital building models. But it’s impossible to know exactly what forces a structure may encounter throughout its lifetime, or how exactly the structural members will react. At best, structural engineers can be confident in their designs based on the relative safety factors between the estimated demand and capacity of a structure.

Animated gif showing a building frame bent in different vibration modes
Animated modal analysis demonstrating the potential (exaggerated) vibration modes of a building structure during earthquakes. Created with SAP 2000.

I have personal experience in the challenge of previewing the performance of structural designs via my work with concrete canoes. Last year, our team spent three months researching, developing a new design based on theoretical principles, and conducting tests and small scale experiments, to create a new structural design for our concrete canoe. We even built a full-size practice canoe with the new design and tested it in the water before finalizing the design. But despite hundreds of hours of work, our canoe failed during the race competition. We had not considered the ultimate failure mode in our evaluation of structural theory and small scale tests. And despite full scale testing with the practice canoe, this oversight combined with construction variances between the two canoes to result in the failure. Even building and testing a copy of a full structure does not guarantee that the final product will perform as intended, meaning that true previews of structural designs are not possible to create.

Two concrete canoes with three paddlers racing them in the water
USC’s colorful 2016 concrete canoe, That ’70s Canoe in competition at the American Society of Civil Engineers Pacific Southwest Conference, prior to the canoe’s structural failure.

Previewing Architectural Designs

As I mentioned earlier, architects face immense challenges in previewing the experience of the spaces they design. Working with consultants to design every aspect of a space from the shape, layout and dimensions, to the lighting, climate control, and finishes, architects typically draw two-dimensional representations of their designs so that they can be constructed. Technological advances have enabled three-dimensional modeling, from which two-dimensional construction documents are produced, along with more-fully-rendered images that convey the appearance of the finished product.

While construction drawings and renderings provide a visual preview of the appearance of a design, they do not offer a way to experience the space before it’s built. Full-scale mockups of smaller spaces can be built, but they can’t fully represent the context – views, natural lighting, etc. – of the final product. Walkthrough videos rendered from digital models and virtual reality experiences further the ability to visually preview designs, but lack comprehensive consideration of context and environmental comfort factors.

As building information modeling (BIM) evolves, the building design industry will continue to work toward an ability to preview designs as accurately as possible before they’re built. But the biggest challenge is the effort required to preview changes to a design. Current standard procedures for producing high-quality renderings can take weeks and thousands of dollars to produce updated images to reflect design adjustments. Changes can’t be previewed live, maintaining a disconnect between the design process and the finished product.

Live Previewing Music Compositions

Music composition and the design of aural space present similar challenges to the design of physical space. However, with music, every performance and recording will be different. Each group of musicians will interpret the music in their unique way, and the acoustics of the space they perform in will drastically influence their sound. These differences are actually welcomed by musicians, as every performance of a piece is unique.

Despite these challenges, composers have the closest thing to live preview of the examples I’m presenting here, via music notation software. Modern notation software, which typesets music much like Word does for text documents, typically has the ability to play music back after it’s written. Much of this already happens within a composer’s head, or as a piece is composed at the piano or another instrument; the playback functionality is a way to validate that everything comes together as it’s intended. A composer can change a note and immediately play back any part of the piece as needed to evaluate the impact of the change in context. Here’s an example of how this playback sounds, via a woodwind quintet I wrote last year:

Of course, this nearly-live preview is quite helpful but leaves a lot to be desired. Compare it to the following recording from a reading session. There are of course mistakes as it’s a first reading, not a performance. But the music really comes to life with the complex textures interwoven between the different instruments combined with the interpretations of the musicians:

With no two performances identical, the ability to fully preview a work before it’s first performed is limited. But composers can preview their work with a high degree of accuracy via digital playback, in an experience that’s almost live and ultimately does an excellent job facilitating the creative process. Live preview provides composers with instant validation that their ideas are correctly represented in a written piece, building trust that the work will be performed largely as intended.

Live Previewing Digital Publications

Working our way back to WordPress, let’s look at what’s possible with digital works. Many programs enable content to be created and previewed simultaneously by presenting an interface where content elements are directly editable. PowerPoints, PhotoShop projects, and even (to a high degree) Excel spreadsheets offer a preview of the final product as you build it. Other software for creating digital content has (sometimes necessary) disconnects between making changes and previewing the results – video and audio editing software, or things that can’t be immediately rendered such as sharelatex.com show how disruptive this can be to an end user.

Despite technological challenges, most publications intended to be distributed digitally should be able to be previewed live as they’re created. Considering a diverse array of content types on the web and elsewhere, this can certainly be challenging but is possible. Physical constraints such as the context of a particular building site, musicians’ unique interpretations of a piece, or fundamental uncertainty in the estimation of structural demands and load capacity do not apply to most digital works. In designing digital interfaces, software used to publish and distribute content should prioritize providing users with a live preview of changes as they’re made, at the expense of potential technical complexity, because live preview builds user trust in their work.

History of Live Preview with WordPress

As a platform whose goal is to democratize publishing, live preview is imperative to the usability of WordPress. Back in WordPress 3.4, a first attempt to incorporate this functionality was introduced with the theme customizer, Over time this evolved to support widgets (3.9), strategically expand in scope to become a framework for live-previewing any change to a site (4.0), support menu management (4.3), add selective refresh and device preview (4.5), and continue expanding its capabilities as a framework for live preview in 4.7. User trust is the core goal in providing live previews in WordPress.

The WordPress editor has also evolved to leverage live preview (as long as themes provide editor styles), with inline media/shortcode previews helping users trust that pasting a link on its own line creates an embed, for example. The biggest problem here is that the content is taken out of context, making it difficult to accurately preview the results. Opening a static preview in a separate window is the unfortunate current solution, creating an unnecessary disconnect between the writing and previewing processes. Bringing these together in a unified live preview experience would allow users to trust that their content will display perfectly, helping to stimulate their creative process as they publish content with WordPress.

Themes and plugins can extend the core frameworks for live preview that exist currently in WordPress. Implementing features like selective refresh in the customizer is critical for ensuring that the preview is as fast and preserves as much context as possible. Themes and plugins can also leverage live preview for managing dynamic portions of complex sites, extending menus or widgets to control the content featured on a page, for example. These implementations could eventually lead to improved core functionality for site management or even more direct site building with live preview.

Future Potential

As live preview becomes more integrated into the everyday workflow of publishing content with WordPress, users will become ever more confident in the publishing process. Trusting that the end product will match what you’re creating as you make it offers a faster workflow for everyone and improves the quality of content published with WordPress.

There are many ways to expand the scope of live preview in core, plugins, and themes. I see the most substantial potential in content editing – integrating it with the functionality currently in the “customizer” to offer a unified interface for live-preivewing most aspects of a site as users build content. This will surely take substantial effort from core contributors but if more volunteers continue stepping forward to contribute, we could conceivably see content editing with live preview in core within the next year.

Themes and plugins should also continue expanding their use of live preview as a mechanism for managing their functionality. Custom sites with complex frontends are great places to implement live preview – give your users confidence to manage their own content by letting them do so with the context of live preview.

In closing, I want to highlight that the customizer is WordPress’ framework for live-previewing any change to a site. With over four years of development to date, the customize API is already the easiest and most powerful way for developers to extend WordPress, and it’s getting even better with every release. And it supports live preview for any option. Let’s build on that framework, rethinking elements (such as the interface) that should be improved, to make WordPress better for everyone that uses it. With live preview, users can truly trust WordPress.

2015 Chase the Music Concert Videos

I finally got around to editing and posting the videos from last summer’s Chase the Music concert for Ayla & Jayden with the Boulder Cello Project. Here they are, including the world premiere of my composition Awe & Joy. Sheet music for all of the music from the concert is available for free on my sheet music library.

Special thanks to Clark Hodge of Chase the Music and Bill Shauck of the Boulder Cello Project for making this concert happen!

Featured Audio in WordPress

Featured images are native to WordPress core, allowing themes to represent posts and pages with images. But for many users, there are more important content formats than visuals. As a musician, I’ve explored different approaches to integrating WordPress’ audio functionality with post objects, most recently with the Sheet Music Library plugin.

I recently began exploring a new idea — a premium WordPress theme built specifically for musicians and musical groups — and I realized that WordPress needs a generic solution for the broad concept of associating audio files with posts. Post meta associated with specific custom post types or embedding audio directly in posts limits the opportunities for themes to display audio in unique ways and for plugins to create aggregated presentations of audio associated with different posts.

The Plugin

Screenshot of the featured audio option
Featured Audio metabox in the editor.

Seeking to introduce a broad solution to the challenges of deeply integrating audio with core WordPress functionality, I’m introducing the Featured Audio plugin. Featured audio is perfect for musicians, podcasters, and anyone who publishes audio content on their site frequently. It works with every theme out of the box by displaying WordPress’ native (mediaelement.js) audio player at the top of the_content. Themes that style the audio player already will offer a customized experience for site visitors using featured audio.

Screenshot of featured audio for the twent fifteen theme
Default featured audio display with the Twenty Fifteen theme.

I’d love to see more themes designed specifically to make audio a central component of sites’ content. If they all leverage this standardized featured audio plugin, users publishing audio content can get a wide variety of options for displaying their content and the content adapts seamlessly from theme to theme, just like publishers of visual content get with featured images.

The Importance of an API

To make featured audio as broadly extensible as possible, I spent a significant amount of time building public API functions into the plugin that facilitate custom implementations and integrations. Where it makes sense, these functions parallel the post_thumbnail/featured images API in WordPress core. However, the most notable difference is that theme support isn’t required. Taking a similar approach to the Featured Image in Content plugin (but also always showing the admin UI), the content is available regardless of theme support to allow a broader array of themes to be used. Theme support is used to indicate custom implementations, and turns off automatic front-end display of featured audio on a technical level.

A majority of sites probably don’t use audio at all, making the idea of featured audio probably inappropriate for WordPress core. But by building a core-like solution that themes and other plugins can extend, we can provide audio publishers with similar opportunities to publish freely with WordPress. And the development of themes and plugins that extend and customize the experience will further promote publishing audio with WordPress.

Infinite Possibilities

Once the base API is in place via the Featured Audio plugin, there are endless possibilities for themes and plugins to expand the potential of featured audio to offer tools for publishers. Plugins can expand the API to offer additional functions for custom theme display, or other tools such as widgets or shortcodes to aggregate featured audio across posts. The core playlist functionality is especially promising here.

Themes can do anything from moving where featured audio is displayed or adding it to archive views that don’t display the content to showcasing audio in unique and unexpected ways in the front-end UI. We’ve seen featured image headers, so why not featured audio headers, with the ability to set up a default audio file in the customizer. I’m excited to see what theme designers can come up with.

Screenshot of a featured audio playlist entitled "featured on this page"
Feadured Audio Playlist widget in the Twenty Fifteen theme.

To offer a glimpse of the possibilities, I’ve built a few advanced features into the plugin. The API includes arguments for the main the_featured_audio() function to display the title and/or album art (which WordPress automatically pulls from MP3 files that have it) alongside the audio player for easy display of additional information in themes. The plugin also adds a Featured Audio Playlist widget, which displays a playlist with all of the featured audio associated with posts on the current view, such as a blog index, archive, or taxonomy page. The playlist output is also available directly via an API function for custom display in themes outside of the widget context. For example, a playlist could be displayed alongside a taxonomy title and description at the top of a taxonomy archive. Playlists are great because they allow visitors to listen to more of your content without repeated manual interactions, and in this scenario they’re automatically created and organized on-the-fly based on the existing organizational structure of a WordPress site.

Content Ownership and Hosting

One of my personal goals with featured audio is to encourage publishers to host their own audio content directly in their WordPress site. Third-party services such as Soundcloud offer advantages in distribution but when it comes to displaying content on sites, I frequently get the impression that users don’t realize that they can host and publish their audio content directly. WordPress is about democratizing publishing, and part of that mission is to give users complete control over their content. With better resources for publishing audio directly in WordPress, fewer users will feel a need to turn to third-party services. Long term, it would be awesome to see third party social and aggregation sources for audio content pulling data out of WordPress sites rather than the other way around, as it is currently.

Next Steps

Now that the plugin is live on the repository, publishers can start using featured audio with the basic experience on any theme out of the box. But the really exciting opportunities come with plugins and themes that extend the basic experience, and it’s up to you to start designing and building those projects. I’m hoping to build a commercial musician-oriented theme that integrates with featured audio eventually, but the beauty of open source software is that anyone can create free or commercial products that build on this functionality. I’m excited to see what the community can do together to improve the experience of publishing audio content with WordPress.

2015 Boulder Cello Project/Chase the Music Collaboration Concert

This weekend I’m partnering with the Boulder Cello Project and Chase the Music to put on our 3rd annual concert for children in critical situations. This year’s concert is for a brother and sister and will feature a bold musical celebration of these two amazing kids.

My latest composition, Awe & Joy, scored for Flute, Horn, Percussion, and Cello Ensemble, will be premiered at the concert this Sunday, August 9, 2015 in Boulder, CO. The concert is free and we have plenty of room in the hall for guests. Details and RSVP here: https://www.eventbrite.com/e/concert-for-ayla-and-jayden-tickets-17769911283.

New Sheet Music Library: The Story

After nearly two years of planning, false starts, and development, I finally launched a new sheet music library. In this post, I’ll discuss the development and implementation process, design decisions, and how I created this project in a way that the source code will be available for anyone to use for free.


I started posting my cello ensemble compositions and arrangements online in early 2012, when I first set up celloexpressions.com as the website for my high school cello quartet, Cello Expressions. When I transitioned the site to be the home for my projects in August of that year, I created a series of separate WordPress installs for my different sites, moving the original site to the music subdirectory and building a new system to display sheet music in a more structured way. Because I had spent the summer developing Euclid’s Muse, basing the code off of a horribly-written BuddyPress plugin, I thought that the best approach would be to create a custom database table, querying it directly. I didn’t have the time to build a posting or editing UI, so I decided I would just make edits directly in the database with PHPMyAdmin. That worked for a few months, and in November 2012, I redesigned the site’s theme (poorly). But I would last post a new piece in January 2013. It was clear that I needed an entirely different system, and that I would probably need to migrate all of my existing content (now 60 pieces) manually.

Cello Expressions Sheet Music Library, from January 2013 to December 2014.
Cello Expressions Sheet Music Library, from January 2013 to December 2014.


My primary goal for the sheet music library is to make free music, primarily for cello-oriented ensembles, widely available and accessible. I also want to get my works out there for people to play.

But my goals for making the sheet music library easy to use were much harder to accomplish with the old system. All pieces needed to have PDF downloads, preferably with the ability to have separate score and parts PDFs. I needed to display previews of the PDFs in a browser-agnostic way, rather than hoping that it would work to put a PDF in an iframe. Pieces needed to have a way to upload and display recordings, both via MP3s and via YouTube videos. Pieces needed to have fields for composers, difficulties, genres, and instrumentations, and values should cross-link between different pieces. And most importantly, I needed everything to be searchable, both internally and via search engines.

A Plugin

One of my first decisions was to build the sheet music library functionality in a plugin. That way I could use an existing WordPress theme and redesign much more easily. Over time, additional benefits became clear – others could use this plugin as well. The Boulder Cello Project will be using it, plus an add-on plugin, to power their internal members site, where they post sheet music for their meetups for members to practice in advance. The plugin will be released on WordPress.org once the initial implementation for the Cello Expressions Sheet Music Library is complete.

Custom Post Type & Taxonomies

It also became clear that I should create a sheet music custom post type, with custom taxonomies providing relationships between pieces. Composers, instrumentations, difficulties, and genres are each custom taxonomies for the sheet_music post type. PDFs for the score and parts and audio file uploads would be stored as attachments, with the attachment post ids stored as post meta in sheet_music posts. YouTube videos are stored by their URLs as post meta as well.

PDFs to Images

The solution to displaying PDF previews in a reusable way ended up being surprisingly simple. By converting the first page of the score PDF to an image, the front-end and admin can display an image preview of the PDF pretty easily. Converting PDFs to images is actually pretty simple in most modern server environments with WordPress’ image editor.

Diving briefly into code, WP_Image_Editor’s ImageMagick implementation makes it incredibly easy to convert PDFs to Images:

 * When a PDF is uploaded, generate a thumbnail image and save it in the attachment meta.
add_filter( 'wp_generate_attachment_metadata', 'prefix_generate_pdf_thumbnail_metadata', 10, 2 );
function prefix_generate_pdf_thumbnail_metadata( $metadata, $attachment_id ) {
	$attachment = get_post( $attachment_id );
	if ( 'application/pdf' === get_post_mime_type( $attachment ) ) {
		// Create a png from the pdf.
		$file = get_attached_file( $attachment_id );
		$pdf = wp_get_image_editor( $file );
		if ( ! is_wp_error( $pdf ) ) { // Most likely cause for error is that ImageMagick is not available.
			$filename = $pdf->generate_filename( 'image', null, 'png' );
			$uploaded = $pdf->save( $filename, 'image/png' );
			if ( ! is_wp_error( $uploaded ) ) {
				$upload_dir = wp_upload_dir();
				update_post_meta( $attachment_id, 'pdf_thumbnail_url', $upload_dir['url'] . '/' . $uploaded['file'] );
	return $metadata;

Unfortunately, not all servers have ImageMagick installed. I don’t have it installed locally, and when I went to test on the celloexpressions.com server (hosted by GoDaddy for historical reasons), it wasn’t there. I contacted support and they said I had to upgrade to a newer account, which would involve manually migrating everything (or they could do it for a fee). I’d been wanting to get off of that server for a while anyway, so I took to opportunity to move everything onto one of my existing Bluehost accounts, cleaning up some old stuff that was living on celloexpressions.com in the process. Once I switched the domain over to the new server, everything worked exactly how I had wanted.

Realizing how straightforward it is to create images from PDFs in PHP, and how much room for improvement WordPress has with regards to PDF uploads (both in terms of administration and presentation), I’m going to propose some improvements there for core once I finish this project.

Media & Embeds

In addition to digging into the intricacies of WordPress’ handling of PDFs, I spent some time working on my JavaScript skills to implement previews of uploaded audio and linked videos in the admin. Since I knew I’d be using the plugin at large scale, it was important that the admin UI was as functional and efficient as possible. Audio and video previewing was implemented based on the media wpviews in the main editor. While the result is somewhat hacky and buggy, most of the integration relies on core functions rather than extensive custom logic, and I rarely encountered the bugs in my workflows.

On the front-end, wp_audio|video_shortcode( array( ‘src’ => $url ) ); gives browser-compatible HTML5 audio and video via MediaElement.js. That also gives us a skinned player for YouTube videos that matches the audio player, can be customized with CSS, and seems to reduce the volume of ads. WordPress 4.2 will also add support for skinned Vimeo embeds, and the sheet music library plugin won’t require any changes to support Vimeo and YouTube equally.

In a future update, I plan to explore the possibilities with creating a “collection” of PDFs with the media library, similarly to galleries, audio playlists, and video playlists. If I’m successful with that, it could be used to offer separate files for each part of a piece, instead of requiring all of the parts to be in one PDF (which I manually merge the separate parts into before upload). That could also concievably provide an automated merged PDF file that’s created in PHP, if ImageMagick supports something like that.


While a custom post type with several custom fields and taxonomies would normally work best with custom theme templates, I wanted the sheet music library to be as theme-compatible as possible. So I implemented default templates for single and archive views by filtering the_content. It works pretty well on a lot of themes, and could look just fine on pretty much any theme with a little custom CSS. For more advanced implementations, custom templates and adding theme support for ‘sheet_music_library’ will do the trick. I also created a shortcode that outputs the table view that I use on the homepage.

Search, taxonomies, archives, etc. all work well with the content filtering. The sheet music post type also supports featured images, so using the theme’s templates ensures that images are still used as intended. In my case, I only use images on a few pieces, and they really stand out in search, taxonomies, and post navigation.

Themes & Design

The plan all along was to go with a WordPress.org theme for the initial roll-out, then come back and do a custom theme specifically for use with the sheet music library plugin. But after exploring tons of potential theme options (while testing the theme compatibility of the plugin), I ended up going with Twenty Fifteen. And I’m liking it so much that I may not even do a child theme (I currently have some custom CSS, but that’s it). While I’m not happy with every component of the theme, the biggest things that made it my choice are its strong, scalable typography and its sticky sidebar functionality. CelloExpressions.com has a global header that’s displayed on all sites in the network, and by having no header and a minimal sidebar for the theme, I was able to keep things simple while still providing means for navigating throughout the site. In fact, I ended up with no menu for the music library, leaving navigation and discovery to search and a widget for each custom taxonomy.

My biggest problems with Twenty Fifteen were lack of color contrast, and excessive whitespace/inefficient use of space in places. For a while I had planned to use Twenty Fourteen, since it provides so much space for navigation and is very space-efficient. But upon further investigation, the only part of the sheet music library requiring more horizontal space is the table view on the homepage, so I just dropped some margins there. The contrast issues were a quick fix with Twenty Fifteen’s custom color options, combined with the dark “global” Cello Expressions header.

I also designed a new logo for myself and Cello Expressions as part of this process. I started out on paper, from doodles that had been done while trying to stay awake during class. As I learn more about graphic design, I’m pleased with my final result, and it works great in vector format. Currently, I’m using it in the header and as the site icon. I’ll use it elsewhere as opportunities arise.

Cello Expressions Logo

Migration & New Content

Once the new plugin was finally complete and I’d settled on using Twenty Fifteen at least initially, I was ready to migrate the 60+ pieces from the old site to the new site and add all of the music from the past two years that never made it into the old system.

Because the old implementation was so bad, and most of the old fields wouldn’t translate cleanly to the new taxonomies for composers, instruments, difficulties, and genres, I had to manually migrate all of the content. This also gave me the opportunity to remove some pieces that weren’t up to my current standards.

I started by moving the entire contents of my old server to the new Bluehost server, renaming the /music/ directory to /music-archive/. Then, once I moved the nameservers, I created a new site in the celloexpressions.com multisite network, at /music/. After putting some text in the homepage and setting up my plugins, I started migrating content.

In the end it took nearly two weeks and countless hours, but I now have 104 pieces in my new sheet music library. About half were migrated from the old library, and the other half are newly-published. At a rough estimate, two-thirds have an audio or video recording, or both. They all have scores, terms in four taxonomies, and publication dates back-dated to when they were created. While it required a colossal effort that’s still not quite complete, this project was very much worth it. And the best part is that all of the work, from the software powering it to the music it contains, is free for anyone to use, in the spirit of open source.

Three Etudes for Cello Choir

Since the Boulder Cello Project is facing a shortage of accessible, mixed-difficulty-level sheet music, and I’ve been wanting to do more short compositions, I’ve decided to write a series of etudes for cello choir. Each one has a hard one-page limit to keep things well-scoped, and to force my ideas into succinct presentations that could be expanded into full pieces at some point.

Being for cello choir, they’re designed to work best for large groups of cellists (I’d generally consider at least 3 per part to be a good threshold between “ensemble” and “choir”). Being mixed-difficulty-level, they’re most appropriate for groups of cellists with widely differing abilities and musical backgrounds (Boulder Cello Project has adult beginners, professionals, and everywhere in between).

To keep things interesting, I’m attempting to do one etude per day. And to also record each one (multi-tracking so that I can cover every part). So far, it’s going pretty well, other than the every day part. Here’s what I have so far:

Sheet music is available in my sheet music library: