FretBud is an iOS-first fretboard reference and MIDI performance instrument for guitar, bass, and ukulele. It is designed for players, producers, and educators who want instant, accurate visualization of scales and chords across the neck, with expressive tap-to-play MIDI output and deep customization.
The core idea is simple: you pick a key, a display mode, and a tuning, and the entire fretboard lights up the matching notes for you. Every change — key, scale, chord, tuning, fret range — recalculates the neck instantly.
FretBud runs in three forms:
FretBud is organized around three choices you make at the top of every session.
Once those three choices are made, FretBud draws the result on the neck immediately. You do not need to think about intervals or inversions — just pick a key and a scale or chord and the positions appear.
Every note dot on the neck is computed at play time from the formula:
midiNote = openStringPitch + fretNumber
Key changes, scale changes, and tuning changes all re-derive every dot instantly with no manual updates. If you change the key from C to F# while a scale is displayed, every note re-positions immediately.
Orientation is detected automatically from the device aspect ratio and applied without any setting. Rotating the device switches layouts instantly.
FretBud is a single-screen instrument.
The majority of the screen is a SpriteKit fretboard drawn to fill the space above the toolbar. Fret inlay dots are placed automatically:
| Fret | Inlay type |
|---|---|
| 3, 5, 7, 9, 15, 17, 19, 21 | Single dot |
| 12, 24 | Double dot |
Note dots appear as colored circles with optional text labels. The root note always receives extra emphasis with the selected theme's root border.
Tapping a note dot in standalone mode triggers that note as a MIDI event (and plays the built-in sampler if enabled). Incoming MIDI notes from external sources highlight matching frets green and non-matching frets red.
A horizontally scrolling row of capsule-style dropdown pickers, in this order:
| Control | Description |
|---|---|
| Key | Opens the key picker — the 17 note-name options |
| Display | Switches between Scale, Chord, All, and None display modes |
| Scale or Chord | Contextual: shows the Scale picker in Scale mode, the Chord picker in Chord mode, hidden in All and None modes |
| Tuning | Sectioned menu: Guitar / Bass / Ukulele categories |
| Frets | Number of frets visible (1–36) |
| Start | Starting fret index (0–24) |
| ⚙ Settings | Opens the settings sheet |
Every control change triggers an immediate neck reload. There is no Apply button — changes are live.
The Display picker controls what the fretboard shows. There are four modes:
| Mode | What appears on the neck | Third picker shown |
|---|---|---|
| Scale | Notes of the selected scale in the selected key | Scale picker |
| Chord | Notes of the selected chord type rooted at the selected key | Chord picker |
| All | Every chromatic pitch, spelled to match the selected key (sharps or flats) | — |
| None | Blank fretboard, no note dots | — |
Selecting Scale mode draws every occurrence of each scale degree across all strings and the visible fret range. The Scale picker (immediately right of the Display picker) selects which of the 19 built-in scales to apply.
Selecting Chord mode draws every occurrence of each chord tone across the neck. The Chord picker selects the chord quality. The chord root is always the selected Key.
All mode lights up every fret with its chromatic pitch class. Accidentals are spelled to match the key: selecting G# as the key spells notes with sharps; selecting Ab uses flats. This mode is useful for note-finding reference without a specific scale or chord context.
None mode clears all note dots from the neck, leaving a clean fretboard diagram. Useful for presenting a blank neck for annotation or recording purposes.
Tap the Key control in the toolbar to open the key picker.
All 17 note name options, including both enharmonic spellings:
| C | C# | Db | D | D# | Eb | E |
| F | F# | Gb | G | G# | Ab | A |
| A# | Bb | B |
The selected key acts as the root pitch class for scale and chord calculations. In the default Root Emphasis color mode, the root note uses the selected theme's root color and border. In By Degree color mode, degree 1 (the root) receives the first palette color. In Mono mode, the root still receives the selected theme's root border.
Changing key instantly repositions all note dots without any other action needed.
Default key: C
The Scale picker appears in the toolbar only when Display mode is set to Scale. It lists all 19 built-in scales in this order:
| Scale | Character |
|---|---|
| Major | Bright, resolved — the standard Western major scale |
| Minor | Dark, melancholic — natural minor (Aeolian) |
| Dorian | Minor with raised 6th — soulful and jazzy |
| Phrygian | Minor with flat 2nd — tense and exotic |
| Lydian | Major with raised 4th — dreamy and open |
| Mixolydian | Major with flat 7th — funky and modal |
| Locrian | Minor with flat 2nd and flat 5th — highly dissonant |
| Harmonic Minor | Minor with raised 7th — classical and tense |
| Melodic Minor | Minor with raised 6th and 7th — jazz minor |
| Harmonic Major | Major with flat 6th — lush and tense |
| Lydian Dominant | Lydian with flat 7th — jazz fusion and retro |
| Altered | Super Locrian — maximum jazz tension |
| Phrygian Dominant | Phrygian with major 3rd — cinematic and very tense |
| Pentatonic Major | 5-note major — bright and open |
| Pentatonic Minor | 5-note minor — blues and rock foundation |
| Pentatonic Blues | Pentatonic minor plus flat 5th — blues feel |
| Whole Tone | All whole steps — dreamy and ambiguous |
| Diminished | Alternating whole and half steps — symmetrical tension |
| Chromatic | All 12 semitones |
Default scale: Major
Changing the scale type immediately redraws all scale tone dots for the current key without touching the tuning, fret range, or label settings.
The Chord picker appears in the toolbar only when Display mode is set to Chord. It lists 24 chord types. The chord root is always the selected Key.
| Chord type | Symbol | Description |
|---|---|---|
| major | M | Major triad (root, major 3rd, perfect 5th) |
| minor | m | Minor triad (root, minor 3rd, perfect 5th) |
| diminished | dim | Diminished triad (root, minor 3rd, flat 5th) |
| augmented | aug | Augmented triad (root, major 3rd, augmented 5th) |
| sus2 | sus2 | Suspended 2nd — 2nd replaces the 3rd, open sound |
| sus4 | sus4 | Suspended 4th — 4th replaces the 3rd, tense and resolving |
| Chord type | Description |
|---|---|
| major6 | Major triad plus major 6th |
| minor6 | Minor triad plus major 6th |
| Chord type | Description |
|---|---|
| dominant7 | Major 3rd, minor 7th — the blues dominant |
| major7 | Major 3rd, major 7th — lush and resolved |
| minor7 | Minor 3rd, minor 7th — smooth and soulful |
| minorMajor7 | Minor 3rd, major 7th — tense and dramatic |
| diminished7 | Minor 3rd, flat 5th, diminished 7th — symmetrical tension |
| halfDiminished7 | Minor 3rd, flat 5th, minor 7th — jazz ii° voicing |
| augmented7 | Major 3rd, augmented 5th, minor 7th — jazz altered feel |
| augmentedMajor7 | Major 3rd, augmented 5th, major 7th — dreamy tension |
| Chord type | Description |
|---|---|
| dominant9 | Dominant 7 plus major 9th — funky and rich |
| major9 | Major 7 plus major 9th — bright and lush |
| minor9 | Minor 7 plus major 9th — soulful and moody |
| dominant11 | Dominant 9 plus perfect 11th |
| minor11 | Minor 9 plus perfect 11th |
| dominant13 | Dominant 11 plus major 13th — full jazz dominant colour |
| major13 | Major 11 plus major 13th |
| minor13 | Minor 11 plus major 13th |
Default chord: major
Changing the chord type redraws the neck immediately for the current key with no other action needed.
The Tuning control in the toolbar opens a sectioned menu organized into three instrument categories. Selecting any tuning changes the number of strings drawn, the string labels (when enabled), and every note position on the neck.
Default tuning: Guitar — Standard (E A D G B E)
58 tunings for 6-string guitar. A selection of the most common:
| Tuning | Open strings |
|---|---|
| Standard | E A D G B E |
| Drop D | D A D G B E |
| Half Step Down | Eb Ab Db Gb Bb Eb |
| Full Step Down | D G C F A D |
| One and Half Step Down | C# F# B E G# C# |
| Double Drop D | D A D G B D |
| Drop C | C G C F A D |
| Drop B | B F# B E G# C# |
| Drop A | A E A D F# B |
| Open D | D A D F# A D |
| Open G | D G D G B D |
| Open C | C G C G C E |
| Open E | E B E G# B E |
| Open A | E A E A C# E |
| DADGAD | D A D G A D |
| Baritone | B E A D F# B |
| All Fourths | E A D G C F |
Additional specialty tunings available in the menu: DADDDD, CGDGBD, CGDGBE, DGDGAD, Open D Sus2, Open G Sus2, G6, Modal G, Overtone, Pentatonic, Minor Triad, Major Triad, Augmented Fourths, Slow Motion, Admiral, Buzzard, Face, Four and Twenty, Ostrich, Capo 200, Balalaika, Charango, Cittern One, Cittern Two, Dobro, Lefty, Mando Guitar, Rusty Cage, and open-chord variants including Open D♭, Open C Minor, Open E7, Open E Minor 7, Open G Major 7, Open A Minor, Open A Minor 7, Open G Minor.
21 tunings for 4- to 8-string bass:
| Tuning | Strings | Open strings |
|---|---|---|
| 4 String Standard | 4 | E A D G |
| 5 String Standard | 5 | B E A D G |
| 6 String Standard | 6 | B E A D G C |
| 7 String Standard | 7 | F# B E A D G C |
| 8 String Standard | 8 | F# B E A D G C F |
| 4 String Drop D | 4 | D A D G |
| 4 String Drop B | 4 | B F# B E |
| 4 String Open A | 4 | E A E A |
| 4 String Open E | 4 | E B E G# |
| 4 String E7sus4 | 4 | E A D A |
| 4 String Gsus4 | 4 | G C D G |
| 4 String Tenor | 4 | A D G C |
| 4 String Piccolo | 4 | E A D G (piccolo) |
| 4 String Half Step Down | 4 | Eb Ab Db Gb |
| 5 String Half Step Down | 5 | Bb Eb Ab Db Gb |
| 6 String Half Step Down | 6 | Bb Eb Ab Db Gb Cb |
| 4 String Full Step Down | 4 | D G C F |
| 5 String Full Step Down | 5 | A D G C F |
| 6 String EADGCF | 6 | E A D G C F |
| 6 String F#BEADG | 6 | F# B E A D G |
| 7 String F#BEADGC | 7 | F# B E A D G C |
4 tunings for 4-string ukulele:
| Tuning | Open strings |
|---|---|
| Ukulele Standard | g C E A |
| Ukulele Soprano | A D F# B |
| Ukulele Baritone | D G B E |
| Ukulele Tenor | G C E A |
Tap the Tuning pill in the controls toolbar. The menu opens showing three sections (Guitar / Bass / Ukulele / Custom), each with its tuning list. Tap any name to apply it immediately. The fretboard redraws with the correct string count and note positions for the new tuning. The tuning name is sent to the Watch app automatically so the companion remote stays in sync.
In addition to the built-in factory tunings, you can build and save your own tunings with any name, string count (1–12 strings), and per-string pitch.
String pitches are expressed as a note name plus an octave number — for example, E2 for the lowest guitar string or E4 for the highest. Middle C is C4.
Open Settings → Custom Tunings → Custom Tunings to see your saved list.
| Action | How |
|---|---|
| Edit | Tap a tuning row to open the builder pre-filled with its current name and string pitches |
| Delete | Swipe left on a row and tap Delete |
If you edit the currently active tuning, the fretboard updates immediately to reflect the new name, string count, and pitches.
Custom tunings appear as a Custom section at the bottom of the Tuning menu, below Guitar, Bass, and Ukulele. The Watch app receives the updated name list automatically whenever you add, edit, or remove a custom tuning — no extra steps needed.
Custom tunings are stored in the shared app group (group.fretbud), so they are also available in the AUv3 plugin's tuning picker without any additional configuration.
Two toolbar controls let you focus the fretboard on a specific position or span of the neck.
| Control | Range | Default | Description |
|---|---|---|---|
| Frets | 1–36 | 24 | Number of frets visible on the neck |
| Start | 0–24 | 1 | The fret index where the display begins (0 = open string / nut) |
| Goal | Frets setting | Start setting |
|---|---|---|
| Full neck overview (default) | 24 | 1 |
| Open-position box (frets 1–5) | 5 | 1 |
| Fifth-position box | 5 | 5 |
| Twelfth-position and above | 13 | 12 |
| Single-position pentatonic box | 4 | 5 (or any box starting fret) |
Setting a small Frets value and a specific Start value is the fastest way to study a scale or chord shape in one area of the neck without the distraction of the full span.
The Sizing setting (in Settings → Fretboard) interacts with this: Fill scales all visible frets to fill the scene regardless of count. Fit sizes each fret proportionally to the string spacing so the board keeps realistic fretboard proportions and centers in both axes — especially useful on iPad where Fill can make frets too tall at low fret counts. Scrollable gives each fret a fixed 72-point width and enables horizontal panning.
Label and color options are set in Settings → Fretboard. They apply globally to every note dot on the neck.
The Labels setting controls the text shown inside each note dot.
| Label option | What is shown | Best used for |
|---|---|---|
| Note (default) | Note name — C, F#, Bb, etc. | General reference, learning note names |
| Pitch | Note name plus octave — C3, F#4, Bb2 | Identifying register and exact pitch |
| Degree | Scale or chord degree number — 1, 2, 3… | Understanding scale structure |
| Interval | Interval notation — P1, M3, P5, m7… | Theory study and interval recognition |
| 1–4 | Cycling finger numbers 1, 2, 3, 4 across tones positionally | Finger-pattern reference (not real guitar fingering) |
| None | No text — clean dot only | Uncluttered pattern visualization |
The Colors setting controls how dots are colored.
| Color option | Effect |
|---|---|
| Root Emphasis (default) | Root note uses the theme's root color; all other tones use the theme's secondary note color |
| By Degree | Each degree receives a distinct color from the selected theme's 7-color palette |
| Mono | All dots use the selected theme's mono note color |
In every color mode, the root note receives the selected theme's root border for additional visual emphasis.
Open Settings by tapping the ⚙ gear button in the toolbar.
| Setting | Options | Description |
|---|---|---|
| Sizing | Fill / Fit / Scrollable | Fill: all visible frets scale to fill the screen — no scrolling. Fit: frets size proportionally to string spacing for realistic fretboard proportions; board centers in both axes — ideal for iPad. Scrollable: each fret is a fixed 72-point tile; scroll horizontally to see the full range. |
| Labels | Note / Pitch / Degree / Interval / 1–4 / None | Controls the text inside each note dot (see Labels and Colors section). |
| Colors | Root Emphasis / By Degree / Mono | Controls dot coloring (see Labels and Colors section). |
| Fret Numbers | On / Off | Toggles the fret number labels along the neck edge. |
| String Names | On / Off | Toggles the open-string note name labels at the nut. |
| Flip Strings | On / Off | Mirrors the string order top-to-bottom. Useful for left-handed players who want the lowest string at the bottom of the screen. Off by default. |
| Theme | Butterscotch / Burnt Amber / Pale Gold / Stormfront / Lake Blue / Speaking of Witch / Surf Mint / Rose Shell / Carbon Black / Brushed Silver / Arctic White | Changes the app chrome, fretboard, note dots, by-degree palette, and MIDI highlight colors. |
Themes are defined in FretBud/Data/AppTheme.swift as role-based color palettes. A theme controls SwiftUI chrome (text, tint, backgrounds, controls), the fretboard scene (neck background, strings, frets, labels, inlays), note-dot colors, the seven-color degree palette, and MIDI input highlight colors. FretBud saves only the theme's stable ID, so future color refinements can ship in code without leaving stale saved color values behind.
The Apple Watch app also respects the selected theme. It uses the same saved theme ID from the shared app group and applies a compact watchOS palette to its background, control cells, labels, accent color, and borders.
| Item | Action |
|---|---|
| Tutorial | In-app tutorial (coming soon) |
| Manual | Opens this manual |
| Review | Opens the App Store review page for FretBud |
| Other Apps | Browse other apps by the same developer |
| Feedback | Opens a feedback email |
The standalone iOS/iPadOS app creates two CoreMIDI virtual ports that appear in every CoreMIDI-compatible app on the same device.
| Port | Direction | Content |
|---|---|---|
| FretBud In | Input | Receives MIDI note messages — plays them back on the neck as highlights |
| FretBud Out | Output | Sends MIDI note events when you tap the fretboard |
Tapping any note dot on the fretboard:
| Setting | Display | Default | Description |
|---|---|---|---|
| In Channel | 1–16 | 1 | Channel on which FretBud listens for incoming note events |
| Out Channel | 1–16 | 1 | Channel on which tap-triggered notes are sent |
Channel numbers are shown 1–16 in the UI. The In and Out channels can be set independently.
Open Settings and scroll to the MIDI In and MIDI Out sections to control which CoreMIDI endpoints FretBud connects to.
MIDI In section
| Row | What it controls |
|---|---|
| Virtual MIDI In | Enables or disables the FretBud In virtual port. On by default. Turn off to stop receiving MIDI from other apps on the same device. |
| hardware port name | A toggle row appears for every CoreMIDI input currently visible on the device (USB MIDI interfaces, etc.). Turn on to start listening for MIDI note events from that source. |
MIDI Out section
| Row | What it controls |
|---|---|
| Virtual MIDI Out | Enables or disables the FretBud Out virtual port. On by default. Turn off to stop sending MIDI to other apps on the same device. |
| hardware port name | A toggle row appears for every CoreMIDI output currently visible on the device. Turn on to send tap-triggered notes to that destination. |
Port lists update automatically when devices are connected or disconnected. FretBud's own loopback names (FretBud In / FretBud Out) are filtered out of the opposite list so they do not create feedback loops.
Connections are remembered. When you enable a hardware input or output port, FretBud saves that selection. The next time you launch the app, any saved port that is still available is re-opened automatically — you do not need to re-enable it every session.
When FretBud receives a note-on on the configured In Channel from any active MIDI In source, it highlights the matching frets:
This makes FretBud a live MIDI visualizer: connect a keyboard or sequencer to FretBud In and see which notes fall inside or outside your current key as you play.
Pitch-wheel and aftertouch messages are received but do not affect the neck display.
FretBud Out MIDI is sent simultaneously to every enabled destination:
To clear stuck notes, send CC 120 or CC 123 on any channel to FretBud In. All held notes on all outputs are immediately released.
The standalone app includes a built-in sampler driven by a bundled SF2 soundfont (piano.sf2). It plays back audio immediately when you tap fret notes, letting you use FretBud as a complete standalone instrument without external apps or hardware.
Every note-on event generated by tapping the neck is routed to an internal AppleSampler loaded with the selected SF2 patch. Note-off stops the sample. Audio goes to the device speaker or headphones.
The sampler and MIDI Out are not mutually exclusive. When a note is tapped, the sampler plays internally and MIDI is sent externally — simultaneously. Disabling the sampler silences internal audio while external MIDI continues flowing normally.
| Setting | Range | Default | Description |
|---|---|---|---|
| Enabled | On / Off | On | Turns the sampler on or off |
| Volume | 0–100% | 100% | Sampler output level |
| Preset | named list | 0 (first patch) | SF2 soundfont patch to load |
The Preset stepper steps through the soundfont's available patches by name, shown as:
Patch Name (index)
Patch names are read directly from the SF2 file's preset header chunk, so the list reflects the actual instrument names in the bundled soundfont. Use General MIDI patch numbering as a reference for common patches (index 0 = Acoustic Grand Piano, index 32 = Acoustic Bass, etc.).
The sampler is only available in the standalone iOS/iPadOS app. It is not present in the AUv3 plugin — in plugin mode, the DAW host handles audio routing.
The FretBud Apple Watch app is a compact remote control for the iOS app. It lets you change the key, display mode, tuning, and scale or chord from your wrist while the phone handles audio, MIDI, and the full fretboard display. The watchOS interface follows the selected FretBud theme, using the saved theme ID to match its background, cells, labels, accent, and borders to the phone's current look.
The watch shows a 2×2 grid of tappable control cells:
| Position | Control |
|---|---|
| Top left | Key |
| Top right | Tuning |
| Bottom left | Display (mode) |
| Bottom right | Scale or Chord (contextual) |
The bottom-right cell is contextual:
Each cell shows a bold label (the control name) and the current value below it. Tap a cell to open a scrollable list of options. The current selection is indicated with a checkmark. Tap any option to apply it and return to the grid.
The phone is the source of truth. Changes on the watch are sent to the phone immediately over WCSession, applied to the phone's fretboard, and the authoritative state is broadcast back to the watch. This means:
If the phone is out of Bluetooth range, the watch stores the last received state via WCSession's application context and applies the latest update when the connection is restored.
FretBud can run as an AUv3 MIDI effect plugin inside any compatible iOS host (AUM, ApeMatrix, GarageBand, Cubasis, and others).
FretBud's AUv3 component is a MIDI processor: it accepts incoming MIDI from the host, passes every event straight through to its MIDI output, and simultaneously uses the incoming note events to highlight the playing notes on the fretboard neck in its UI.
This means:
The plugin UI is the same controls toolbar and fretboard as the standalone iOS app: Key, Display, Scale/Chord, Tuning, Frets, Start, and Settings.
The plugin exposes one MIDI output named FretBud Out. Route this in your host to any destination instrument.
FretBud exposes two automatable parameters for DAW automation lanes:
| Parameter | Address | Range | Description |
|---|---|---|---|
| Key | 0 | 0–11 | Pitch class of the root (C=0, C#=1, … B=11) |
| Scale | 1 | 0–18 | Index into the 19-scale list (Major=0, … Chromatic=18) |
Automating these parameters lets you change the scale visualization in sync with your project timeline.
The plugin saves its full state inside the DAW project file. This includes:
Loading a project restores FretBud exactly as you left it, including MIDI In/Out channel assignments.
FretBud provides one factory preset per available tuning (Guitar, Bass, and Ukulele), each defaulting to Scale display mode. Factory presets appear in the host's preset menu. User presets are also supported: save any state as a user preset from within the host.
The plugin's Settings panel shows the MIDI, Fretboard, and Support sections. Standalone-only features are excluded:
You can instantiate FretBud multiple times in a host, each with its own key, scale, and tuning. Use this to track multiple instruments or voices simultaneously.
| Section | Setting | Options / Range | Default |
|---|---|---|---|
| MIDI | In Channel | 1–16 | 1 |
| MIDI | Out Channel | 1–16 | 1 |
| MIDI In | Virtual MIDI In | On / Off | On |
| MIDI In | hardware input ports | On / Off per port | Off |
| MIDI Out | Virtual MIDI Out | On / Off | On |
| MIDI Out | hardware output ports | On / Off per port | Off |
| Sampler | Enabled | On / Off | On |
| Sampler | Volume | 0–100% | 100% |
| Sampler | Preset | Named SF2 patches | 0 (first patch) |
| Custom Tunings | Create Custom Tuning | — | Opens the tuning builder to define a new tuning (name, string count, per-string key and octave) |
| Custom Tunings | Custom Tunings | List | Opens the saved custom tunings list with tap-to-edit and swipe-to-delete |
| Fretboard | Sizing | Fill / Fit / Scrollable | Fit |
| Fretboard | Labels | Note / Pitch / Degree / Interval / 1–4 / None | Note |
| Fretboard | Colors | Root Emphasis / By Degree / Mono | Root Emphasis |
| Fretboard | Theme | Butterscotch / Burnt Amber / Pale Gold / Stormfront / Lake Blue / Speaking of Witch / Surf Mint / Rose Shell / Carbon Black / Brushed Silver / Arctic White | Butterscotch |
| Fretboard | Fret Numbers | On / Off | On |
| Fretboard | String Names | On / Off | On |
| Fretboard | Flip Strings | On / Off | Off |
| Support | Tutorial | — | — |
| Support | Manual, Review, Other Apps, Feedback | Links | — |
| Section | Setting | Notes |
|---|---|---|
| MIDI | In Channel, Out Channel | Same as standalone |
| Fretboard | Sizing, Labels, Colors, Fret Numbers, String Names, Flip Strings | Same as standalone |
| Support | All links | Same as standalone |
| Sampler | — | Not available in the plugin |
| Custom Tunings | Tuning picker (Custom section) | Custom tunings saved in the standalone app appear automatically in the plugin's Tuning picker via the shared app group |
Tap Tuning and choose a bass tuning (e.g. 4 String Standard or 5 String Standard). The neck redraws with the correct string count. Switch back to Guitar → Standard for the guitar view. The key, scale, and fret range are all preserved.
Pair your Apple Watch and open the FretBud Watch app. Leave the iOS app running. From your wrist, change key and scale between takes or during a live performance. Changes apply to the phone's fretboard instantly over Bluetooth.