Skip to content
Apr 26 11

Fretter for Windows Phone 7 now available!

by peterdk

The Windows Phone 7 version of Fretter is now available on the Marketplace.

It’s functionality is equal to it’s iOS version. Both iOS and WP7 version will receive audio playback with the first update, scheduled for coming weeks.

Looking for ways to play all those chords on your guitar, banjo, ukulele or mandolin? Look no further, Fretter is the ultimate chordfinder!

Fretter doesn’t rely on a database with diagrams, instead it calculates all the possible diagrams for a given chord/instrument/tuning combination. It’s algorithm is optimized to only present to you the chords that you can actually play as a human.

Because Fretter is build this way, you can select any tuning and still have all the possible chords presented to you. And, even nicer, you can do a reverse search!

You can easily select a basic or advanced chord, optionally with added bassnote, and go to the diagrams. Each diagram has extra information about the chordnotes and the intervals used.

As mentioned, also included is a reverse lookup option. Nice if you are a bit adventurous and you are coming up with your own chords on the guitar, but don’t know how they are called. Fretter can help you here by providing you with the correct naming.

If you are looking for a chord reference app: this is what you need.

Feature list:
* Support for Guitar, 4,5-string Banjo, Ukulele, Mandolin
* 50+ chordtypes
* Tunings: 75+ predefined
* Added bassnote (C/D)
* Reverse lookup
* Chord Intervals
* Note Names

Apr 13 11

iOS Fretter gets it’s first review: 4/5 stars!

by peterdk

Fretter is out for iOS (appstore link) and we’ve got the first review in. was so kind to contact me for a review version and I’m happy with the result.

It’s especially nice to see that they value the reverse chordfinder option so much, while I personally thought that the dynamic generation of all the chords is it’s strongest selling point. Very cool to see a different perspective.

Apr 3 11

Fretter for iOS submitted to App Store

by peterdk

For a long time Fretter has been available for Android and has been successful on the market there. After a lot of work I have finally finished porting all the code to Objective-C and finished the iPhone version of it!

Now iPhone users can enjoy the dynamic chordfinder Fretter too!

The 1.0 version does not yet include sound playback and custom tunings, but the generation of the diagrams, including zoomview, chordnotes and intervals are all working. Guitar, 4,5-string Banjo, Ukulele and Mandolin are supported in this version. All the 75+ predefined tunings are also there!

So, if you are looking for a good chordfinder for your iPhone, that doesn’t rely on some simple database with chords, but instead knows how chords work, try Fretter!

Aug 13 10

KeyChord – Piano Chords and Scales for Android

by peterdk

I recently launched a quite successful application called “KeyChord”. It’s something like Fretter, but for Piano/Keyboard. You can lookup how to play a lot of different chords and scales.

Full Market Description:
KeyChord is a Dynamic Chord & Scale Dictionary for Piano / Keyboard. Also included is a playable piano with 128 voices.

– 50+ ChordTypes
– 100+ ScaleTypes
– Note Names
– Component Intervals
– Reverse Chord & Scale Lookup, including Partial Chords
– Inversions
– Hear every Chord and Scale
– Playable Piano

It’s available for $2.99

May 7 10

Fretter 1.3 released

by peterdk

Today Fretter 1.3 has been released.

Most important part of the update is the added possibility to strum the zoomed diagram to hear how it sounds. It really eases the finding of the right chord variation.

Complete list of changes:

1.3 Release
– Added MIDI sound effect: Now you can hear every chordfingering getting played by swiping your finger over the diagram!
– MIDI sound effect: backwards swipe implemented: now you can “strum up and down”.
– Updated tuning-presets to the correct octave-heigts. (used for midi-playback).
– Volume phone buttons in ZoomDisplay control midi-playback volume.
– Optimized: ChordFinder speed improvements.
– Optimized: Improved filtering algorithm to filter out non-playable chords.
– Added: MENU/SETTINGS. Here you can finetune the chordfinder algorithm.
– Implemented the RadioButtons for the Tuning Selector dropdown by creating a CheckedRelativeLayout.
– Swapped font-weights on instrument and tuning display on main screen.
– Optimized layout of Main and ChordSelector screen to have button layout match.

Known Bugs
– When screenorientation gets horizontal due to using physical keyboard, back button gives sometimes strange results.

About Fretter

Fretter is a advanced chordfinder for string-instruments.

* Support for Guitar, 4,5-string Banjo, Ukulele
* Tunings: predefined, custom
* More than 50 chordtypes
* Added bassnote (C/D)
* Reverse lookup
* Chord Intervals
* Note Names
* Hear how every diagram sounds

7-day trial version is available.

May 7 10

The state of MIDI support on Android

by peterdk

The current state of Midi support on Android is depressing. They ripped out javax.sound.midi, so all libraries that depend on this are not working. (Things like JFugue for example).

Fortunately the MediaPlayer does support the playback of midi files. So if you want to have dynamic audio, you need to create your own midi file writing library, or find an existing one. Midi is quite an old beast, so it takes some effort to learn this. Fortunately there are lot of examples and info for the MIDI file format.

Android seems to use Sonivox for MIDI handling in the MediaPlayer. From what I understand it’s a embedded synthesizer that is integrated in Android. One of the things it support is the Jet file format. It’s some kind of wrapper around midi that you can use to “dynamically” playback music. It’s however totally depended on manually generated midi input that you need to edit on your PC to turn into the Jet format. So no pushing midi events to a stream or something like that. The only thing you can do is repeat sections and turn tracks on and off. Bummer.

So, currently on Android there is no way to dynamically generate realtime MIDI. We can’t simple send midi-commands to a synthesizer that then realtime plays it back.

However…. According to  the Sonivox EAS (Embedded Audio Synthesis) API Reference (found in the git tree of android), Sonivox does support Midi Streaming! That means that the low-level software stack of android does have the support for it. But it’s not exposed to us poor developers. I also don’t know if it’s possible to use the NDK to just use these C(++) API’s. I don’t have the C knowledge for that, and the NDK docs don’t mention them as supported/stable.

So, there may be a change that you can indeed use the C API’s, but that means you need to learn C/C++. Could be usefull, but well, why can’t we get it in Java in the SDK?

To resolve this I have opened a feature request on the google issue tracker to request for exposing these API’s in Java. If you are in any way interested in this feature, please leave a comment, star it, rate it, whatever it takes to let Google know that we need better MIDI support!

Now back to hacking.

Personally I solved the dynamic midi generation issue as follows: programmatically generate a midi file, write it to the device storage, initiate a mediaplayer with the file and let it play. This is fast enough if you just need to play a dynamic midi sound. I doubt it’s useful for creating user controlled midi stuff like sequencers, but for other cases it’s great.

Apr 30 10

Android: Fretter 1.2 released

by peterdk

Today I finished the development of the 1.2 release of Fretter!

Most important improvement is the Zoom view, that allows you to zoom in to a diagram and display additional information like chord notes, component intervals, and fret heights. Really great!

I also added a fresh designed Icon so users don’t have to be appalled by the awful android stock icon.

Full changelog:
1.2 Release
– Added Zoomed View to ResultBrowsers, including navigation options.
– Added multiple layers of diagram information in the Zoomed View, can be toggled by tapping on the zoomed diagram.
– Added manual input as option for Chord Selector
– Instrument Setup now uses a ProgressDialog when loading instruments
– Reverse Chordfinder now also handles full-inversion chords for all instruments except Guitar.
– Faster application startup => unnecessary instrument loading deferred until needed by Instrument Setup
– Added Application Icon
– Added Toast message to inform the user of the zoom-option. Should only display when the user hasn’t used the zoom function once.
– Added Toast message to inform the user of the extra info in the zoom-view. Also should only display until user has tried that functionality.

Bugs Fixed
– Saved Tuning didn’t get auto-selected in Instrument Setup
– 11th fingerposition was missing in the Reverse Chordfinder

Other changes
– Changed emailadres in info screen to
– Added Changelog section to the info screen.

Known Bugs
– When screenorientation gets horizontal due to using physical keyboard, back button gives strange results.

Screenshot of the zoom function:

See Fretter 1.0 post for more information about Fretter.

Apr 20 10

Android: Fretter released!

by peterdk

Well, it’s there. I finished the 1.0 release of Fretter and I just finished uploading it to the marketplace!


Fretter is an advanced chordfinder for string-instruments like guitar, banjo and ukelele.

* Support for guitar, 4 & 5-string banjo, ukulele
* Tunings: predefined and custom
* More than 50 chordtypes
* Added bassnote (C/D)
* Reverse lookup


You can find Fretter on the android market for €1,50.

There is now a free 5-day trial version available. It has equal functionality. Price is free. Just search for Fretter on the market and you’ll find this one too.

Apr 16 10

Android: Saving Application Preferences

by peterdk

I was wondering if the Preferences mechanism of Android (SharedPreferences) would save it’s data to disk or that it would remain in memory and thus get lost on reboot.

Fortunately, I can tell you that it indeeds saves to some persistent storage: I rebooted my G1 and it retrieved the values I stored!

Don’t forget to call: editor.commit() when storing preferences or they will indeed get lost.