Download on
the App Store

Advanced Sorting

Advanced Sorting

We’ve added some more sorting options to the latest version of Hum (That’s 1.5 if you’re keeping score). A bunch of you have been asking for major / minor tonality, and now you’ve got it. All the Hums in your library will now display ‘maj’ or ‘min’ next to the key, if you’ve added one. You’ll find those buttons next to a newly-redesigned keys view.

You’ll also notice you can now add arbitrary color-coding to your Hums. This’ll help you keep track of things now that your libraries are all getting a little bigger. For example, you might want to add a blue color to all your solo songs, or red to your band’s songs. Or maybe you’d like to add orange to all your finished songs. That kind of thing. Of course, you’ll be able to sort by those colors too, so you can easily group them together—and audition them. Or actually finish them!


One last thing: You can also pin songs to the top of your libraries. Sorting by Last Edited has always gotten you pretty close, but now you can pin certain songs at the top regardless of when they were last edited or created.


Dropbox Support! Finally!

I know we’ve been talking about this forever, but it’s finally here. You can now sync your Hum library to Dropbox. This means your entire library will be copied to and kept in sync within the Apps folder in your Dropbox.

To enable Dropbox syncing, press the settings gear in the lower right corner of your library and flip the Dropbox switch. It’ll bounce you to a screen where you can log in to your Dropbox account. A spinner will fire up and start spinning, showing you it’s uploading everything. Once the spinner stops, your library is uploaded. You can also check the status of a sync in the Settings screen.

This way, if your phone’s stolen, or lost, or just quits working, you can load up a fresh copy of Hum on your new device, sync to Dropbox, and the whole library will sync down to your new phone. Or if you’re an eccentric billionaire with more than one iPhone, you can sync between those.

tl;dr Dropbox syncing is finally available on Hum.

This doesn’t mean you’ll be able to edit your Hums on the computer. It’s not like that. We’re using Dropbox as an alternative to iCloud syncing. By choosing Dropbox, we’ve got a syncing service that’ll work across all the possible platforms Hum could be published on.

This also doesn’t mean you’ll be able to invite people to your Dropbox folder so they can see all your changes and edits. Even though that might work, Hum’s syncing wasn’t designed this way.

Hum’s folder in Dropbox meant to be read-only. If you edit any of these files by hand, or move them, you could ruin Hum’s ability to sync to it, risking your whole library. If you still want to use your audio, you’ll want to copy the files out of Dropbox and edit them elsewhere.

Don’t be silly. Tread lightly.



There’s no way Hum would ever have been built without the heavy lifting of incredibly kind strangers. We’ve borrowed all sorts of controls, and now, we can finally give one back.

We’ve open sourced our mood sliders. We’re calling the control HUMSlider. It allows you to add some ticks to the standard iOS slider so there’s actually some context.

The slider in action

The slider in action

Technically, we’re storing sad / happy as a value between 1 and 100. Obviously, no one would never categorize a song as being “59 happy” or even think like that, but that’s what our control does under the hood.

Instead, we wanted something a little more fuzzy. We wanted users to be able to tell, generally, where their slider value ended up. Simply showing ticks on the slider was a bit noisy, so I whipped up a quick prototype of the ticks appearing only when the slider was touched. We also added the additional affordance of the images changing color as the control approached it. Between the ticks only being shown when they’re needed, and the additional color affordance, I’m really proud of our results. Ellen’s wrapped it up into clean, reusable code. Today we’ve made our repo public.

Check out HUMSlider on Github. Help us file some issues, and definitely email us if you end up using it in your app.


Oh. Just one word. BACKSLIDER.

We’ve added a tuner to Hum.

We’re incredibly excited to announce that with version 1.3 we’ve included a chromatic tuner. Before Hum, songwriters would have to bounce between apps to capture their ideas. Lyrics were in note-taking apps. Recordings were stored as voice memos. In order to ship and prove that Hum would change the way people write, we had to cut some features. One of those features was our built-in tuner.


With 1.3, you don’t have to jump out of Hum to make sure your instrument’s in tune. The tuner shows up next to the record button, right when you’d need it.



Our tuner is available as an In App Purchase for $0.99.

Dropbox Syncing

We’re still hard at work on Dropbox syncing. iOS8 was quite a diversion for us (for most developers). We had to make sure Hum’s interface was ready for larger phones.

We’re making good progress. We’re just about ready to get syncing in the hands of our beta testers. The last thing we ever want to happen is for someone to lose their Hums. Syncing is difficult, and we’ve got to nail it. It will be worth the wait.

It will most certainly be a free update.


Version 1.3 is called “Bahamas is Afie”. It’s an incredible record.

1.2 Released

We’ve got a big update for you all. We’ve named 1.2 after the Bad Bad Hats’ release “It Hurts”. It’s such a great EP, and you all need to listen to it right now. A few months back we shot a Liner Notes with them. We’ll get that cut together and posted soon!

With the release of iOS8 and the bigger iPhone 6 and 6+, we had to change a lot under the hood with Hum’s layout. These changes allowed us to revisit our song view and add some better navigation within it.


Song View Changes

Instead of three little dots, we’ve given each section a tappable icon and moved it into the navigation bar. Like always, your title is the first line of the lyrics, but now we bold the text automatically to make it a little more clear. We just love that we don’t have a separate field for ‘title’. Just write. Hum will help title and keep you organized.

With all the layout changes, we get landscape orientation for free. We’ve also allowed for you to use your phone upside down, in case you want to point your phone’s mic at your bassist, for example.

Many of Hum’s users are in dim clubs, green rooms, and other places with less-than-ideal lighting. We’ve increased the contrast throughout Hum, picking a thicker version of our typeface, and making sure highlighted states are darker.


Sorting Changes

We’ve squashed all sorts of bugs as well. For our central european users, some characters were showing up pretty garbled in their lyrics. That got fixed, and so did a lot of little crashers. Our inline player is a little more robust too.



As with any major release, there might be some rough edges that we didn’t catch. If you have any troubles, use Hum to send some feedback in your Settings screen.

Oh, one more thing. We now support dynamic text. If you change the size of the text on your device, Hum will now honor that type size. Sweet!

One of the larger type sizes available on iOS.

One of the larger type sizes available on iOS.

Enjoy! Download Hum on the App Store.

Avoiding iOS8 upscaling on iPhone 6 and 6+

A quick technical note that left us scratching our heads yesterday as we prepare Hum for delivery to the gigantophones:

Without specifying an iPhone 6 or 6+ launch image, iOS will simply scale your app up to fit the new screen sizes. It will look terrible, and you will cry. Especially since you spent all this time converting your app to use Auto Layout.

It’s easy to miss this requirement in Xcode, because your LaunchImage.xcassets file won’t show you the new drop targets automatically. The way we approached it was to create a new LaunchImage.xcassets and add launch images of proper resolution. Once you do so, your Auto Layout will kick in appropriately and all that work will actually get used.

For iPhone 6, you’ll need a launch image resolution of 750 × 1334. You’ll drop that in the Retina HD 4.7 bucket.

For iPhone 6+ you’ll need a launch image of 1242 ×2208 (which gets scaled down to 1080 × 1920). You’ll drop that in the Retina 5.5 bucket.

Our LaunchImage.xcassets file ended up looking like this.



Finally, if you’ve added a new .xcassets file for this, you’ll want to make sure that your app is pointing to it correctly.

Click on your project settings and make sure the App Icons and Launch Images section has the right source:

Make sure your .xcassets is linked properly.

Before & After

Scaled Up

Scaled Up



1.1 Is Here

We’re excited to announce that 1.1 has been released. It’s been named after J Roddy Walston & The Business’s “Essential Tremors”. I don’t think I’ve had as good a first listen as I have with this record in a very long time. J Roddy straddles the line between Jerry Lee Lewis piano rock n’ roll, and Zeppelin inspired riffage, but puts it all together in a cohesive record. This was played pretty incessantly while making this latest round of features.

What’s new?

As always, head over to the release notes page for the nitty gritty.


Now that we’ve all got bigger libraries, we’ve added searching. You can pull down on the library view to reveal the search bar. You can dive right into a song if you type in some lyrics. Big time-saver.



Sorting’s been improved. Instead of oldest / newest, we now sort by “Last Created” or “Last Edited”. Sorting by “Last Edited” will ensure that all the latest songs you’ve worked on are bubbling to the top. Nothing against Oldest First, but no one was using it.



Hum would get really unstable with songs that were around 10 minutes in length. That’s always been our maximum recording length, but we’ve cleaned up things around the edges. We’ve also got a nicer experience when you’re deleting audio from a Hum. We’ve also customized our typeface to allow for true musical sharp symbols. On top of that, we fixed a lot of under-the-hood stuff in preparation for our Dropbox syncing release. It’s coming!

The Liner Notes

We wanted to take a tiny break from building Hum to feature some of the artists that are actually using it.

We’ve created a series called The Liner Notes that features songwriters of all genres talking about their craft.

We just posted our second episode. We’ve featured Savannah Smith. She’s a folky solo ukelele-based singer / songwriter. Though her lyrics are often dark with emotional depth, her music inherits the whimsey of her chosen instrument—a powerful juxtaposition. We followed Savannah while she was in the middle of successfully funding her first record on Pledge Music.

We’ve been busy working on the next major features for Hum. You’re going to love them. We’re just about to release Dropbox syncing support to our private beta testers. It’ll be in everyone’s hands once as we find and squash some bugs.

Printing Support

We’ve just recently added printing support to Hum. If you tap the share button you’ll see a print button next to the email and messages. To my surprise, it was actually quite easy.

Here is what our print method ended up looking like.

UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init];
renderer.headerHeight = 40.0f; //Optically add padding to the top of the page.
renderer.footerHeight = 30.0f; //Add some padding on the footer as well.
controller.printPageRenderer = renderer;
UISimpleTextPrintFormatter *formatter = [[UISimpleTextPrintFormatter alloc]];
controller.printFormatter = formatter;
formatter.font = [UIFont fontWithName:@"Whitney-Print" size:14.0f]; //Change the typeface and size of our text.
formatter.contentInsets = UIEdgeInsetsMake(0.0f, 30.0f, 0.0f, 30.0f); //Add some spacing on the left and right.
[renderer addPrintFormatter: formatter startingAtPageAtIndex: 0];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.jobName =;
printInfo.outputType = UIPrintInfoOutputGrayscale;
controller.printInfo = printInfo;
controller.showsNumberOfCopies = YES; //Printing lyrics is usually for sharing in a rehearsal setting.
[controller presentAnimated:YES completionHandler:NULL];

That’s it.

But, as I’ve experienced with every simple feature in Cocoa, there’s always at least one ‘gotcha’. Here’s what I ran into:

1. Using custom fonts is easy, so long as you aren’t using an .otf. When using an .otf, it would print fine in the simulator, but as soon as there was any real printer output, iOS would fall back to the nearest typeface that worked. When I swapped an .otf for .ttf of our typeface, it worked just fine in both the simulator and real-life printing. I didn’t find this distinction in any of my googling.

2. Default page margins are way too close to the edge of the printed page. I thought that setting some contentInsets would handle it just fine, but no. By design, the print formatter doesn’t allow for a bottom inset. With a top inset it works great on the first page, but subsequent pages it’s ignored. I had to go with a mixed approach and build a renderer to add empty headers and footers for vertical padding, and insets for left and right spacing.

3. If you want leading / line-spacing that isn’t incredibly tight, you’ll need a workaround. I chose to open up our typeface and manually adjust its vertical metrics so I could fine-tune how spread apart those lines were. I exported a TTF with a custom name and metrics so I wouldn’t get them confused in our UI declarations. After some tweaking I found these lyrics to be much more legible than the defaults. I wasn’t able to find a way to change the leading in code alone.

Standard / Customized

Standard / Customized

1.0.6 Released

In this release we’ve worked pretty hard on making Hum more stable. Hum crashes pretty rarely, but should now do so much less often.

There was a particularly annoying bug that happened when you sorted your library by key. It’s been fixed.

We’ve also translated to German, and fixed some errors in our Swedish translation. If you spot any errors in German, please let us know.

See our full release notes.