Build scales, triads and arpeggios with sequence patterns, preview and edit them, lay them onto the sheet, then collect sheets onto a printable page.
Component builder
Preview
Main tab sheet
Page
Saved pages
The app moves top to bottom: build a component in the control panel → Generate preview → optionally Edit the preview by hand → Add to main tab → repeat until the main sheet holds one line of music, hand-editing the main sheet directly if you like → Add to page → clear the main sheet and build the next line → Print the page when done.
The Instrument selector at the top switches the whole app between 6-string guitar (standard EADGBE) and 4-string bass (standard E A D G, an octave below the guitar's bottom four strings). Everything — the tab's string rows, the string-range choices, the edit grid, generation, and playback — reconfigures to match. Because a saved shape is sized to its instrument's string count, switching clears the working sheet and preview; your saved library entries and pages are kept, but the Library only shows entries that match the current instrument.
Guitar is standard tuning, low to high: E2 A2 D3 G3 B3 E4. Bass is E1 A1 D2 G2. String 1 is always the top line of the tab (highest pitch); the lowest string is the bottom line. Internally every note is a pitch class 0–11 (C = 0) plus an octave, so the generator knows exactly which frets on which strings produce notes in your chosen scale or chord.
The generator collects every fret position inside your fret range and string range whose note belongs to the selected scale, triad, arpeggio, or custom interval set. It sorts those positions from lowest pitch to highest — this sorted list is the ladder — then walks the ladder according to the selected Sequence, and finally cuts the result off at your Number of Notes. When the exact same pitch is playable in more than one spot (say, an open A string and fret 5 on the low E), only one survives in the ladder — the lowest-fret option, and if two spots share that fret, the highest string number — so a sequence can never land on the same pitch twice in a row just because of a duplicate fingering.
Start on root trims the ladder so it begins exactly on the root note you selected: any in-range notes lower than the root are simply left out, rather than played first. Components built this way are labeled "(from root)" so you can tell them apart later.
No open strings removes fret 0 from consideration entirely, so every note in the result is fretted. Components built this way are labeled "(no open)".
Consecutive simply walks the ladder note by note. The numbered sequences play a small group of ladder steps, then shift the group upward and play it again:
The Scale patterns include the seven modes of the major scale (Ionian through Locrian), the two pentatonics, blues, harmonic and melodic minor, harmonic major, whole tone, and chromatic — pick whichever fits what you're teaching or practicing.
123 → 123, 234, 345, … (groups of three, shifting up one step)1234 → 1234, 2345, 3456, …12345 → 12345, 23456, …1324 → 1324, 3546, 5768, … (shifting up two steps)143254 → 143254, 365476, … (shifting up two steps)A sequence stops when its next group would run past the top of the ladder — it never wraps around. If a sequence produces nothing, the range is too small for it: widen the fret or string range.
Descending plays the mirror image: the same shapes starting from the highest note and working down. Descending Consecutive is a plain descending run; descending 123 from an eight-note ladder plays 8-7-6, 7-6-5, and so on.
For triads the ladder contains only chord tones (1, 3, 5), and for arpeggios the chord tones plus the 7th. The quality of each tone — major or minor 3rd; perfect, diminished or augmented 5th; the flavor of 7th — is already decided by the Pattern you picked, so the sequence digits just mean "chord tones in order."
135135 — stacked: play 1-3-5, then the next octave's 1-3-5, climbing.135351 — rolling: 1-3-5, then 3-5-1, then 5-1-3 — each group starts one chord tone higher, like playing the triad through its inversions.13571357 (stacked) and 13573571 (rolling) work the same way for four-note arpeggios; 13577531 plays up through the chord tones and straight back down before climbing to the next octave.Important: the cycle starts from whatever chord degree the lowest note in your range happens to be. If the lowest in-range note of a C major triad is the 3rd (E), the sequence begins on the 3 and climbs from there: 3-5-1-3-5-1… The app does this silently — move your fret/string window if you want a different starting degree, or check Start on root to force the cycle to begin on the 1 every time.
0,3,7,10 for a minor-7 set. Only shown for the Custom type; Custom uses the scale sequences.Tap Edit above the preview to switch it into a touch grid — six string rows, one column per note slot, with a few blank columns at the end for growing the line. Choose the fret number in the picker, then tap an empty cell to place it; tap a placed note to remove it. Swipe up or down on a cell to roll its fret number without opening the picker — each small swipe steps the fret by one, wrapping from 24 back to 0 and vice versa; swiping on an empty cell starts from whatever fret is currently selected in the picker. Each column holds one note, so placing a note on another string in the same column moves it. Tap Done to return to normal tab view; empty trailing columns are trimmed. You can edit a generated preview or start from a completely blank one. Whatever the preview shows is exactly what Add to main tab commits. The same swipe gesture works in the main sheet's edit grid too.
The main sheet normally collects components left to right with spacing between them, read-only. Tapping Edit above the main sheet switches it into the same tap grid used for the preview, but scaled to the whole sheet — the components are flattened into one continuous line of note-columns the first time you do this, and their individual labels are given up for good. From then on the sheet is just notes: tap the fret picker, tap a cell to place it, tap a placed note to remove it, and tap Done to return to normal tab view.
Once the main sheet has been hand-edited, Remove Last removes one note-column at a time rather than a whole component, since components no longer exist as separate things. Add to main tab still works after editing — new components are appended onto the end of the flattened line. Clear all always resets the sheet back to normal component-based mode, so building fresh from the control panel afterward behaves exactly as before.
The Library panel holds everything reusable in one place: a set of built-in shapes (pentatonic boxes, open-position runs, CAGED triads, a blues lick) plus anything you save yourself. Save to library (in the control panel) stores the current controls and preview; Save main to library (below the main sheet) stores the whole main sheet, either as its labeled components or as one hand-edited line, whichever it currently is. When saving, you're asked for an optional type, key, use, and free-text tags — all skippable by leaving them blank.
Each entry shows small chips telling you whether it loads into the preview or the main sheet, whether it's built-in, and its tags. Loading a preview entry drops it into the preview (ready to edit or add); loading a main entry replaces the whole main sheet, the same way Clear All would. Use the search box and the type / key / use / source dropdowns at the top of the panel to filter the list. Built-in entries are load-only; your saved entries also have a Tags button (to rename and re-tag) and a delete button. Everything you save lives in this browser via localStorage — clearing Safari website data removes it. (Any presets you saved in an earlier version are folded into the library automatically the first time you open this one.)
When a line is finished, Add to page takes a snapshot of the whole main sheet and appends it to the Page section as its own system, on its own line. The main sheet is untouched, so the usual habit is: add to page, clear all, build the next line. Each system on the page has its own remove button. Copy as text puts the whole page on the clipboard as plain-text tab. Print and Save as PDF both open the system print dialog with only the page content — black on white, one system kept together per block, with the optional page title as a heading and as the suggested filename. On iPad, choose "Save to Files" (or the PDF option) in that dialog to write a real PDF into whatever folder you like — that's how the app reaches your folder system, since Safari itself can't write files silently. If Safari asks whether to allow printing, tap Allow.
Tap Bar lines above the main sheet to enter bar-line mode (the button lights amber and the tab shows a crosshair). While it's on, tapping anywhere on the main tab drops a bar line at the nearest note boundary; tapping the same spot again removes it. These are purely for readability — you place them wherever you like, they don't have to be evenly spaced, and they have no effect on playback. Bar lines travel with the sheet when you Add to page, so they show up in the printed PDF and in copied text, and they're kept when you save a page. Tap Bar lines again to leave the mode and go back to normal. Clearing the sheet, reordering components, or removing a component clears the bar lines, since those change where the notes sit.
Save page to folder keeps the current page inside the app under a category/folder name you type, so you can reload it later without rebuilding. Saved pages appear in the Saved pages panel grouped by folder; each one can be reloaded onto the Page section, moved to a different folder, or deleted. Like the library, these live in this browser's local storage.
The labels dropdown above the main sheet switches an extra line under the tab between off, note names (C, F#, …), and degrees (1, b3, 5, … relative to the current Root selection in the builder). It applies to the preview, the main sheet, the page, printing, and copied text alike — handy for turning an exercise sheet into a theory handout.
Both the preview and the main sheet have their own ▶ Play button, so a component can be heard before it's ever added to the main sheet. Either one sounds its notes as even eighth notes at the shared tempo setting, with the current note highlighted as it goes. Starting one stops the other. iOS only allows sound after a tap, so the first press of either Play button also unlocks audio; if the iPad's silent switch is on, nothing will play even though the button changes to Stop and the notes highlight normally — flip the switch and try again. Press Play again (or Stop) to end playback early. The main sheet also has ⟳ Loop (repeat until stopped — good for practice) and ◔ Click (a metronome click on every beat during playback); both light up amber when active.
Both edit grids have ↩ Undo and ↪ Redo covering every tap — placing and removing notes — up to 50 steps back per editing session. On the main sheet (before it's been flattened by editing), a row of chips under the status line shows each component with ◀ ▶ buttons to reorder them and ✕ to remove any one directly, so Remove Last is no longer the only way to fix the middle of a sheet.
Everything you save — library entries and saved pages — lives only in this browser's local storage, which means clearing Safari's website data (or losing the device) loses it all. The Export backup button in the Library panel downloads the whole collection as a single JSON file; on iPad, save it into Files wherever you keep important things. Import backup reads such a file back in and merges it — entries you already have are kept, new ones are added — so it's safe to import on the same device or a different one. Make a habit of exporting after a good building session.
All musical data lives in three plain tables near the top of the script: PATTERNS (interval recipes), SEQUENCES (digit groups plus a shift amount), and LIBRARY (prebuilt components). Adding a new scale, sequence, or library shape is a one-line addition to the relevant table — the dropdowns and lists rebuild themselves from the data.