Fretboard design generator
1 Dec 2017
Tags: cnc, javascript, laser, maker
For those less familiar with my other technical outlet, I build custom electric guitars. Of the process of building an electric guitar, doing the layout of the fretboard slots is one of the more fiddly bits, and one that you have to get spot on if the guitar is to be in tune. Even if you’re using CNC machinery as part of your workflow, as I do for some of the initial bulk cutting operations, taking the output of a fret spacing calculator and entering it into your design tool is very tedious.
When I made my first fretboard, I found an existing design file that had the slots at the right scale length, but now someone has asked me about a baritone neck, which has a longer scale and so has all the frets in a different position, so I was back to square one. Being a software engineer, I decided to automate the generation of design files into a simple webpage, which you can access here.
Whilst not the prettiest of UIs, it’s (hopefully) simple to use: you enter the details of the neck you want such as the scale length, the number of frets and so forth, you get a preview of you fretboard along with the positions in a table for you to confirm it is what you want, and then you can export the design as SVG or DXF. This means you can import it into most design and CAM software for final tweaking and then to production. Here you can see one imported into the tool I use for driving the laser cutters at Makespace:
And you can then see a video of it in action here:
I’m a big believer in contributing back to the luthier community that is based a lot around sharing ideas and techniques, so this tool is open source for others to play with and contribute to. The tool was mostly created using MakerJS, a nice Javascript library from Microsoft that is targetted at people trying to make it easy to generate designs for the kit you find in maker spaces programatically. The guys at MakerJS were kind enough to even tweak it in response to my posting this tool to fix some limitations I hit, so many thanks to the MakerJS team!