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.

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.

Bouncy!

Bouncy!

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.

Bahamas

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

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

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.

Library

Library

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.

LaunchImage.xcassets

LaunchImage.xcassets

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

Fixed

Fixed

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.

Searching

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.

Searching

Sorting

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.

Sorting

Improvements

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] initWithText:self.song.lyrics];
    
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 = self.song.nameOrPlaceholder;
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.

1.0.5 Released

In 1.0.4 we added some pretty robust crash analytics to Hum. We’ve had a few growing pains that have come in the form of crashers, but we’re working really hard to get some fixes out the door.

Today we’ve released 1.0.5, which fixes a number of crashes stemming from the same bug. When you put Hum in the background while working on a song, Hum could lose track of if a song existed or not and cause a crash. Frustrating.

It should be fixed now. Have a look at our release notes.

Enjoy!

1.0.4 Released

We’ve released another update to Hum.

We’ve added a whole settings panel for when we ship Dropbox syncing (it’s coming!).
In the meantime we’ve had a few crashers pop up and we’re doing our best to get rid of them. Growing pains! This release will automatically send us usage statistics to help us figure out where some of them are. If you’d like to opt out tap the settings button at the lower right of your library and flip the “Usage Statistics” switch. We’ll be collecting anonymous data like how many Hums y’all are recording. How often you use the app. How long your average song is, stuff like that. Again, you can turn it off in two taps.

You can also kill the recording countdown if that was bugging you. Personally, I’ve always needed about 4 seconds to get situated, to set my phone on my knee, get my dogs to stop barking, etc. If you don’t need it, flip the switch.

You can also prefer sharps or flats now when specifying keys and tunings. We originally included a nice natural mix. I prefer calling certain notes C# but also refer to others as Bb. Now you can prefer either.

If you get stuck we’ve added a help section. You can call (for real, it’s just my phone number), email, or tweet at us. If you’re ever having a problem we want to hear about it. It’s the only way we can improve Hum.

We’ve also added a translation in Portuguese. If something doesn’t look right there let us know. Same goes for our Swedish translation.

As always, have a look at the detailed release notes. We’ll keep chasing those crashers and getting Hum to be as stable as possible. Look for a 1.0.5 very soon.

1.0.3 Released

As far as minor updates goes, this one is pretty significant. We added a few little usability improvements that really add up. On top of that, we fixed a bunch of little bugs that you can always find detailed on our releases page.

We got rid of the confirm / dismiss screen every time you record something. Now it just accepts the recording automatically. Our initial assumption was that if you blew a chord, it’d get you into a new recording quicker. We ended up creating a barrier to capturing ideas by doing so, so we stripped it. We’d rather any friction in our app to be during deletion, not creation.

Sliders now have tick marks that allow you to be a little more precise. It gives you some context for sliding. This control is something we’d like to open source, so keep your eyes open for something like that after we add our Dropbox support.

Slider Ticks

Looks good, right?

Thanks to Peter Steinberger and his wonderful PSPDFTextView library, we’ve improved our Lyrics & Notes fields. Your text cursor will no longer be hidden underneath the keyboard if you’re at the last line of your lyrics or notes.

You’ll also notice that the lyrics field is now called “Title & Lyrics”. A surprising (to us, anyway) amount of users weren’t discovering that the first line you typed in the lyrics field became the title of your Hum. Again, in regards to friction, we don’t want to have to show any dialogs like “Give your Hum a title”. It’d only get in the way of capturing an idea. We really think this is the best way to title something. Just write. Hopefully this will help our users discover that.

Oh, and to all our Swedish users, who we were shocked were so many, we’ve added a translation for you. If you’re a multilingual musician and want to help translate Hum, please email me!

For all those users that are running iOS7.1 betas, pay close attention to these updates. We don’t officially support beta operating systems, but have a gander. Some annoyances should now be fixed for you.