Early this year I started playing with an app idea that became Selah Chords. I had a working prototype of the engine that would power it. I knew it could work. But what would differentiate it would be care for UI. Make it easy to do the things that needed to be easy. Instead of focusing on all the other tools that could be added— literally, the competition nearly includes the kitchen sink in their apps— I would focus on doing one thing really well.
A recently (at the time) published article from Michael Flarup had me encouraged to explore skeuomorphic design again, something I had been itching to do for years. To be honest, app design today is too bland. Most of us know that. It used to be full of texture and UI work, parts of the process that would take months. Each app had personality. Then iOS 7 happened. And all that work got thrown aside. Read that article.
I explored a number of paper, notebook, and other interface metaphors for Selah, trying to find a voice that could work. And in the end, I could not find a voice there. And the reason was because I wanted to rely on the screen, not the physical world’s physics.
I had one major interaction that needed to be nailed, in my opinion. Finding a chord. Seems easy, I know. But everyone makes the easy hard, for some reason.
This is a great app. I honestly use it quite a bit, as it supports chords that Selah Chords does not support. But finding a chord in Guitar Gravitas sucks. First, the root note selector is a slider. Second, the selected state is a dotted, 1px tall underline. This thing is horrible.
Then there is the scroll direction change in finding a chord. This app uses multiple panels that all scroll independently. This is not an iOS convention and instantly feels off. Mind you, on iPad, this is better because of the screen size.
The biggest reason that I use this app regularly, as opposed to others, is because of the chord charts. It shows me tons of voicings without the trouble that other apps make of that.
One of the most popular guitar apps, as it is a tuner— a pretty good one— that also provides other tools. Personally, if you want a good tuner, get Fine Tuner, but that is a different topic. The chord library tool is what we are focusing on here. Once again, sliding lists for root and chord, but made worse by the scroll for voicing. Guitar Tuna only provides a handful of voicings— standard movable shapes, essentially. But to see them, you have to flick one-by-one through them.
I do not use this app much. Mostly because the interface is less than ideal.
Another popular guitar app. Tuner? Check. Metronome? Check. Scales? Yup. And chords. That root note selector is better. All on one screen. No scrolling. But now to select a chord, you have to find it in a scrolling collection view— rows and columns— and expand it.
Wait, don’t tap— damn. It just played the chord. You wanted to see more voicings, didn’t you. Yeah, tap that small expand icon. And now, when the collection would have made since, you get this scrolling list of voicings and a guitar neck that takes up two-thirds of the screen.
Finding my Voice
As I looked to solve this one interaction, Jared Sinclair shipped ’Sodes. And boy. While not skeuomorphic, while super minimalist, it wasn’t boring. It wasn’t bland. Subtle gradients, sparse, well-thought our content layout design. The content was king, not the interface. But even without the interface being king, it didn’t get so far outta the way that you were confused. Buttons had borders. They looked like buttons.
So instead of making beautiful, meticulous textures, I started storyboarding animations. The first test of what I deemed gooey animation was built.
Instead of sharps getting their note name repeated, the sharp extended the preceding note button. The construction under the hood is fun, taking accessibility into consideration with an accessibilityLabel of the full name (“C#”).
And then the sliding selection. Clear selection state was important. At this point I was using Guitar Gravitas and that was my biggest grievance. Animating this allows for a fun, hand-crafted interaction, while not getting in your way. This is done by making the animation quick and informative.
The chord selector is brief. I didn’t need to support a hundred chords. Why? Because the most common chords can be summed down to a handful. I’m not looking to build the only chord finder you use, just your favorite.
Is Skeuomorphic Dead, Then?
I hope not. What I know is that it wasn’t right for Selah Chords. Which surprised me at first. I wanted it to be right. It might be for your app.
Banjo support is coming. Selah Chords started with guitar, ukulele, mandolin, and dulcimer. I am adding banjo. Also copying or dragging voicings out of Selah Chords is coming. And favorite voicings. And who knows what else.
Over the last year I have been learning both ukulele and mandolin, after 20 years of playing guitar. As I tweeted over the weekend, I bought a ukulele and looked for a chord app. I had a couple for guitar, but none of them supported ukulele. I found out pretty quickly that most of the apps suffered from similar issues. They were hard to use— bad UX/UI—, lacked iOS esthetic, and didn't have the features I needed most where they needed to be.
Now so much of that is subjective. Yes. True. When I am looking for a chord voicing, I am looking for where I can play it. The most popular apps show a single voicing at a time.
Take this app from The Ukulele Teacher. Are there other voicings? I will guess that the 1/32 up top indicates that there are. But how do I get to them. Swipe right to left? Nope. Maybe that next arrow in the bottom right? Crap! Now it's playing an audio clip of the voicing. Swipe up? There it is! But no scroll indicators, just a change of the fretted notes and the "1/32" changed to "2/32".
Now I want to switch to a D minor. How do I do it? Tap the C major "title" up top? No. The music note at the bottom?
Not the easiest thing to use. And to be hidden away behind an ambiguous button when it is an action I am going to use the most? Not good.
I have been playing guitar for 20 years and never learned basic music theory. I didn't know how chords were formed, just where they were. Sure, I knew that they were multiple notes being played, but I never cared or concerned myself with which notes aside from my root was being played.
So I started there. How is a C major chord formed? Well, it's based on the C major scale. I didn't know my scales. Or how they were formed. Guess I would start there.
A scale starts with the root note and then takes a certain number of whole and half steps between notes back around. A major scale, for instance goes 1, 1, 0.5, 1, 1, 1, 0.5. That C major scale? C, D, E, F, G, A, B, C.
So back to that C major chord. How is that chord formed? A chord is formed on intervals of a scale. The major chord is using the I, III, and V intervals of major scale. Roman numerals for some reason. There is likely a wiki page for that explanation, if you are interested. So we start at I, which is our C, go to III, our E, and end on V, our G.
To the programmer reading this, you might have noticed that this is math. I certainly did. And math I can do. I love math.
So I Built an App
Looking through the App Store for an app that scratched my itch made me sad. As a UX/UI engineer, I decided that if this was just math, I could design a better looking/working app and build a chord finder that didn't suck. But first I needed an engine. Take that math and turn it into an algorithm. An algorithm that I could hand a set of strings and tell it to find the C major voicings— different ways to play it across the neck of my ukulele.
This was, surprisingly, done on an iPad. I opened Swift Playgrounds and built the first prototype of the algo there. Even had it doing basic drawing of the chord chart.
The algo was straight-forward. Use the above math to find the notes of the requested chord, find all the notes on the set of strings given, then find all possible combinations of those notes on those strings. From there start narrowing it down to actual, playable chords.
It worked, so I started the design process.
Defining the App
What's in and what's out. So I had a powerful algorithm. I could give it 4 strings, and it'd find the voicings of a specific chord. I could give it 5 strings. Six strings. Seven. Ooo. I decided I wanted to support multiple instruments, obviously guitar and ukulele being the top of that list. But as I built the first working prototype app and had it running on my phone, I switched to mandolin strings and went to Guitar Center to play around. See how well it worked and if I could pick up another new instrument. And it was a success. One that went onto me buying a mandolin too.
The app was to stay simple. Prize simplicity, be willing to hold back functionality that other apps may have. No scales, no arpeggios, lots of noes.
So what was required?
A beautiful, clean interface. Easily scroll through a list of chord voicings. Big enough that you could read them comfortably, but small enough that you could see many at once.
A simple mechanic to switching between chords. That above ukulele app made it very difficult to switch chords. Others do as well. I wanted none of that. So my app would have two bars. Segmented controls. Easily switch between root notes and chords.
Multiple instruments/tunings and easy switching between them. This would be in a drop down. I wanted this to be quick to access, but you wouldn't be switching instruments as often as you switched chords, so a drop down was logical.
Removing Features and Narrowing in on Version One
I wanted banjo support in version one. And the ability to mark a voicing as a favorite. And support for adding custom tunings. But shipping is more important. I shifted from feature building to spit-shine mode in October, realizing that I had a perfectly usable app.
I always remind myself of 37signals's Rework book. Do I want a half-assed whole product or a kick-ass half product? I can ship a dozen features with bugs and no polish or ship a half-dozen features with delight and polish galore.
So I Spent My Year on an App
Like most programmers that decide to pick up a new hobby, instead of learning and mastering ukulele this year, I learned basic music theory, built, and launched an app.
Selah Chords has shipped. And the initial reviews are that it is beautiful, intuitive, easy-to-use, and extremely useful.
And coming soon, banjo and favorite voicings. And after that, custom tunings.
When you live with a device, you learn what works and what doesn’t work. What is needed and what isn’t. For most developers, the iPhone is on them all the time. For many, the iPad isn’t. Because of this, I believe many iPad apps are lacking.
Most iPad apps are just scaled up iPhone apps. Between Auto-Layout, Size Classes, and more, Apple has made it nearly effortless for app developers to make an iPhone app that “just works” on iPad. But this isn’t always pretty. Just look at Twitter on iPad. One column, centered in the middle of the screen. Then look at Tweetbot. A custom two-column layout, tab bar on the left and even some basic keyboard shortcuts.
Developers need to spend time with their medium. Web developers that spend a lot of time on the web get more experience by seeing what others are doing and how. iPhone developers see the latest tricks, trends, and standards by simply using their phones. This same care needs to be applied to iPad. Live with your app and see what works.
The frequency in which I whip out my calculator apparently (as per my quick office poll) is abhorrent. But I do. My grocery shopping involves a tight budget ($30/week) and a calculator tallying up the total as I walk through the aisles. For the longest time Calcbot was my go to. But it has slowly become dated. So when Numerical came out last year, it became my standard. Well, today Tapbots has gone and updated Calcbot to 2.0 and brought with it a brand new interface!
Along with the new interface comes Convertions, clearly replacing Convertbot from back in the day, and Themes. Two $0.99 In-App Purchase theme packs (including 4 themes each) are available right now along with a Calcbot Pro purchase that unlocks one more theme along with Unit Convertions, Unlimited History Tap, and Custom Constants. The Pro upgrade is $1.99.
For me at least, it’s goodbye Numerical and welcome back Calcbot! Glad to see you back!
The Tapbots team seems to be getting a lot of slack for updating Calcbot and not Tweetbot for Mac or iPad. So much so that Mark Jardine, the designer of Tapbots, tweeted the above response. From prior posts, we know that Tapbots had Calcbot almost ready to launch right before iOS 7 was announced. The redesign of iOS 7 caused them to scrap Calcbot. Tweetbot, their most popular app, got updated next for iOS 7 and was a major overhaul visually to meet the new standard. Tapbots is, as per screenshots shared a couple weeks back, working on an update to Tweetbot for Yosemite. A two man team can only do so much and ultimately, as a business, must make money to survive. With Twitter being more and more hostile towards third-party developers over the last few years, the likelihood of Tweetbot dying one day is huge. So, personally, I’m glad they are diversifying. I love them too much to see them go out of business.
The beauty of the backgrounds, running the course of the day, lighting the landscape is absolutely incredible. This game shows what the iPhone is capable of without focusing on it. Snow and rain fall, lightening and shooting stars flash across your screen, as you become one with the mountain. Fiery embers and smoke rise into the air as you blaze by. The animation is truly stunning.
It is the simplicity of games like these that hook mobile gamers. Alto’s Adventure reminds me of Tiny Wings a few years ago. Beautiful graphics is what sells these games, not game play. But even with very simple gameplay, the game has a lot of great elements. Capture the llamas— which are points; the llamas are points—, collect coins, and chain tricks to get a higher and higher score. But watch out for the elders. They don’t like your youthful antics.
As you complete 180 goals, you will unlock 6 characters. Maya is the flipper. Paz is slow to start, but builds up big speed. Izel is the gadget junkie, trailing fire behind her board. Felipe is a llama. On a snowboard. Go with it. And then the elder, Tupa, channels the energy of the mountain.
Use your points to expand the magnet and hover gadgets and buy the wing suit. Yes, the wing suit. Not only do you snowboard with llamas, but you can fly too.
To say that I have played this game for hours is an understatement. Last week my daughter, a six month old that sleeps soundly through the night, woke up screaming at 3 am. My wife and I were up for 2 hours trying to get her back down. For the second half of that time, I was playing Alto. At 4 in the morning.
Beautiful games are few and far between. This is something special and unique. The team behind Alto’s Adventure has been working on it for two years. You can see the earliest experimentations on Harry Nesbitt’s blog as he tooled around with the Unity engine and on his Dribbble account as he worked through llama animations. The passion of the design and development team just bleeds through every pixel. Their two years are worth it, in my book.
For 2015, iOS 9, which is codenamed Stowe (after the ski resort in Vermont), is going to include a collection of under-the-hood improvements. Sources tell us that iOS 9 engineers are putting a “huge” focus on fixing bugs, maintaining stability, and boosting performance for the new operating system, rather than solely focusing on delivering major new feature additions. Apple will also continue to make efforts to keep the size of the OS and updates manageable, especially for the many millions of iOS device owners with 16GB devices.
If this turns out to be true, it will make a lot of people happy. Stability is one of the biggest complaints in the last year and I have personally heard it from a lot of friends that are Apple fans and developers.