We often say that the scale explorer, note chart and related fretboard-based tools found in the app can represent virtually any fretted string instrument. And they are quite versatile: You're not limited to any particular instrument or tuning. The tools can render a note chart for an arbitrary number of strings, each independently tuned to an arbitrary note, on a neck with an arbitrary number of frets. That covers an extraordinarily broad set of cases. Lute? Sure. Mandolin? Yes. 3-string bass? No problem. 18-string guitar? Barely an inconvenience.
But it's not universal, for sure. There are a few limitations that lead us to hedge a little with words like "virtually" or "nearly". It can handle a wide variety of things - certainly the vast majority of what most users are likely to ever want or need it to - but there are some use cases that are excluded by the constraints of the current tool. Most of those excluded cases are quite exotic or obscure. It's more of a hypothetical limitation than a practical one. But they are still valid - not some abstract, theoretical case based on a made-up instrument - but actual, legitimate instruments and tunings where we can imagine "yeah, it could be useful or interesting to be able to view that in the scale explorer (and other tools)". Some of these excluded cases aren't even that obscure. Banjo, for example, is common instrument which is almost but not quite fully supported. Another example is sitar, which is different enough from our typical guitar/bass/ukulele/etc. use case that it presents much more of a challenge, but is similar enough that you can easily imagine the utility of visualizing sitar tunings with these tools.
So here are some of the limitations of the current tool that we've noticed exclude certain classes of instrument or tuning. Many of these excluded cases truly are way too obscure to justify investing any time in removing the constraint, so we're unlikely to take steps to address them. But the considerations surrounding them do shed light on some specific details and related topics that we think are mildly interesting. Maybe you will too.
Tuning to an arbitrary pitch
In the most general case one could tune each string not just to an arbitrary note but to an arbitrary pitch. Right now the open-string tuning is constrained to the 12 notes of the chromatic scale (in any octave). You can tune a string to E2 (
82.4 Hz) or F2 (87.3 Hz) but not to the pitch half-way between them (~84.9 Hz, which sounds like a sharp E or flat F, but doesn't really have a common name in the conventional 12-tone scale).
That may seem a little crazy, and it is definitely obscure, but there are valid use cases for it. The modern 12-tone equal-temperament scale isn't the only way to partition the octave into named "notes". There have been other musical systems - both historically and globally - that divide the octave differently: a different number of notes, sometimes not even uniformly distributed (i.e. with different intervals between pairs of sequential notes). Often these notes fall in between the 12 pitch classes we're familiar with today. We often don't really think of those pitches as "notes" - they sound like an out-of-tune approximation of a "real" note - but they would seem natural (and easily identifiable) to someone steeped in that alternative system. 12TET is a "naturally occurring" set of notes (pitch classes) in a certain sense, but it's not the only one.
Sargam, for example, is a musical system used in Indian classical music that divides the octave into 7 notes, rather than 12. Some of these are roughly equivalent to Western notes (Sa ~ C) but others fall between them (Re sits between C and C#).
Even in Western music, the modern 12-tone equal-temperament scale is a relatively new invention. As recently as the 16th Century music was commonly composed using notes that don't quite line up with the modern pitch classes. In fact that's part of the reason we have two different names for the sharp and flat representations of the "same" note. Today we consider C# and Db to be alternative names for the same note - they represent the same pitch or frequency. But once upon a time C# would have been played at a slightly lower pitch than Db. They really were different notes at one point, we've just glommed them together over time as we migrated toward an equal-temperament scale (note frequencies that are uniformly distributed across the octave).
Allowing the tuning to include strings tuned to literally any pitch (frequency) would let us render fretboard charts for historical, obscure or exotic instruments designed for these alternative octave systems. This is not a feature we're ever likely to support, but it's an interesting detail from a music theoretical or historical perspective.
As Otto might say, you know those guitars that are, like, double guitars? Guitars with more than one neck? Genesis' Mike Rutherford for example famously played a two-neck hybridization of 6-string guitar and 4-string bass. Back in the 1970s, Rutherford's instruments were mostly home made, but there are plenty of off-the-peg examples today.
Currently there is no direct representation of "split neck" guitars in these tools.
There is an obvious work-around that gives a compelling-enough approximation though: just pretend the instrument only has one neck, treating the guitar-bass hybrid as if it were a single, 10-string guitar (making a mental note that there is a split between the bottom 6 and top 4 strings).
But to be fair this is not a perfect representation. A visual separation between the necks would be more accurate way to visualize the instrument. And more importantly, the mechanics of playing a two neck instrument are distinct from playing on a single neck that happens to have the same number of strings. Without an explicit representation of the split between the necks, the scale and chord position discovery logic is unable to take that into account.
A more broadly applicable constraint is that the fretboard tools assume that each string has the same "length". I.e., they assume that each string has the same number of frets and that each string starts at the same position. There is no way to represent something like the short top string on a banjo - where the high G string starts at the 5th fret (and the first actual fret on this string is aligned with the 6th fret on the other four strings). The actual open tuning in this case - GDGBD - does not generate an accurate representation of the banjo fretboard.
This is a legitimate weakness of the current tools. Banjo is the only popular instrument that comes to mind that is impacted by this, but it would be nice to support an accurate representation of a banjo fretboard and easily explore scale and chord shapes for various banjo tunings.
You can sort of work around this problem and approximate the banjo layout by pretending that the short string extends all the way to the top of the neck. I.e., you could represent the standard GDGBD 5-string banjo with the tuning DDGBD, as long as you keep in mind that the first five frets on the first string don't really exist. Outside of that short segment the rest of the fretboard layout would be accurate at least. But that's more than a cosmetic problem. The tool itself isn't aware of the invalid positions on the fretboard, so while this kinda works as a visual representation, some of the more useful capabilities of the tools - like scale and chord position finding - wouldn't work quite right. The tools would recommend fingering and hand placements that make use of these invalid positions on the fretboard.
We don't currently have specific plans to address this concern, but we've certainly considered the topic. We may eventually add some level of advanced configuration that allows one to specify the fret offset for a string, or more generically, maybe a starting and ending fret number for each string, which would cover the hypothetical case of an instrument in which the strings all start in the same position but some have fewer frets than others.
Irregular Fret Patterns
The fretboard tools currently assume that the frets form a uniform grid. The frets are aligned across all of the strings, and are evenly spaced. Or rather, to be precise, the fretboard tools assume that the frets are spaced such that the difference in pitch between any two neighboring frets on a given string is exactly one half step (a semitone). The physcial distance between frets is very much not uniform: they get closer together the closer you are to the body of the guitar. But on a typical guitar, and any note chart the tools can create today, each fret always represents precisely 1/12th of an octave.
This is related to the topic of tuning to a pitch that falls between the notes on the chromatic scale. Even if you could tune each open string to pitch that falls outside of the conventional 12-tone equal-temperament scale, that may not be sufficient to represent the notes on the neck of an instrument designed for these alternative octave systems. Absent some control over the spacing between the frets, even if the open string tuning is based on an alternative set of notes, the steps between each fret will still follow the 12TET interval relationships. To fully represent these instruments there would need to be more flexibility with respect to the fret spacing, whether modeled as the physical distance or pitch-interval between frets.
More generally, one might also imagine an instrument in which the frets don't form a regular grid at all. In the abstract case the frets could be placed more or less arbitrarily. Each string could have different number of frets. The interval between frets could vary both along the length of a single string and across the strings. And the frets might not line up across the strings at all.
The fully abstract case would obviously be impractical to play (at best), complex to model, and require an extraordinarily complicated UX if an arbitrary configuration of this sort is meant to supported.
But a fret grid that isn't based on the 12TET intervals, and isn't necessarily uniformly spaced at all, isn't really that unreasonable to consider. A number of actual, real-world instruments have a grid of frets not based on the 12TET spacing found on a conventional guitar.
Some Practical Constraints
If we're being pedantic, the existing tools don't actually support an arbitrary number of frets. The interface forces you to choose a value from a finite range, currently between 11 and 32 frets (inclusive). But this is a "soft constrain". It's self-imposed, not an actual limitation of the fretboard chart rendering itself. There are good usability/UX reasons for those bounds (or at least for some bound on the number of frets, whether on not that's the ideal range), but could eliminate the upper bound. It's just a UX concession.
Incidentally the string count, in contrast, is truly arbitrary, or at least unbounded. You must enter at least one string (because what would we show otherwise?) but there is no hard upper limit on the number of strings.
Neither count will ever literally be arbitrary of course. You'll eventually run into resource constraints if you try to render an astronomical number of strings or frets. But well before that point, you'll run into practical limits on the size of the fretboard chart itself. In the current UX the overall size of the diagram is constrained by the window in which it is displayed. As you add more and more strings (or more and more frets, if the count was unbounded) out view of the fretboard "zooms out" to such that the full fretboard remains in view. At some point that view is too zoomed-out to read or use.
But you can easily view implausibly tall or wide "instruments" in the space (let alone memory) available, so these are largely academic concerns. They aren't relevant in practice.