You are browsing as a guest. Sign up (or log in) to start making projects!

Guitar Assistant

  • 7 Devlogs
  • 16 Total hours

Read notes effortlessly! Guitar Assistant shows you all possible frets to play a note on.

Ship #1

Guitar Assistant

Guitar Assistant is an app that shows you where to press down on the guitar to play whatever notes you pick in the staff.

The guitar allows you to play the same note at different positions on the fretboard, so there is usually not one correct way of playing a set of notes.
Guitar Assistant shows you all possibilities so that you can pick the one you’re most comfortable with.

Coming up with an architecture for converting between where the note is on the staff, and where the note can be played on the fretboard was the most challenging part.
At first this conversion and the visualisation was tightly coupled (the fretboard component did the conversion).

This was 1. unclean and 2. really painful to work with: After refactoring, I ended up with an intermediate format that’s easy to do “musical calculations” with, and a dedicated class for converting that format into another format the fretboard component can easily interpret.

I had a lot of fun building this project and am actively using it 🎶

  • 7 devlogs
  • 16h
Try project → See source code →
Open comments for this post

53m 9s logged

Project Demo, small Fixes & Deployment

In order to be ready to ship, I created a demo video using OpenScreen showing how to use the app, I also did some fixes here and there and finally deployed the app to GitHub Pages.

0
0
36
Open comments for this post

3h 22m 33s logged

Tuanble Strings & Expandable Fretboard with Dynamic Staff Sizing

Users can now set how individual strings are tuned on the fretboard, as changing the tuning is required for some pieces on the guitar.

Additionally, players can now choose how many frets they are comfortable using - the staff resizes (more/less staff lines) so that the entire fretboard can be utilised without cluttering the screen with notes you cannot play at the selected fret count.

0
0
7
Open comments for this post

2h 14m 20s logged

More Notes and Open Strings

Besides updating the layout I “added new notes”. Of course you can have as many as you want, but I wanted to make sure lines outside of the staff become muted, so everything is easier to see.

More importantly, open strings are now visualized on the fretboard - previously only notes where guitar players had to press down showed up. The architecture I talked about in previous devlogs worked wonderfully :)

0
0
25
Open comments for this post

3h 9m 58s logged

Colored Notes and Architecture

I fixed the architectual issues i wrote about in my previous devlog using a dedicated class for visualization. It uses the builder pattern and should be extendable so that new visualizations on the fretboard can easily be added.

Moreover I gave each note its own color, numbered the frets and added little circle markers in the same pattern they appear on a guitar.

0
0
7
Open comments for this post

2h 2m 53s logged

Fretboard shows Notes

The notes you pick in the staff show up on a guitar fretboard!

One thing I learned from this project so far, it is to always make dumb React components: Don’t manage the component’s state internally when it can make sense wanting to access it from the parent component in the future. In my case: The fretboard is a “smart” component and when passed a note it knows and shows all the possible locations to play it - this works for now, but it’s hardly extendable: For a feature I’m planning, the parent component needs to control precisely where to show the dots - which as of now is impossible, because the fretboard only works with notes + it will show all possible locations, not precisely the ones I want to show.

To fix this, I will expose a prop that controls not what notes to show, but what frets and strings dots should appear on.

0
0
16
Open comments for this post

2h 2m 32s logged

Improved Note Picking and Support for Sharps/Flats

I improved the note picking: To prevent notes from overlapping the note now follows the mouse position, users can place notes freely wherever they want.

Additionally, I added support for sharp and flat notes, which can be toggled on the left side of the note’s name. It’s a bit quirky as e.g. a sharp F becomes “F#” but a sharp H becomes “C”, not “H#” (thanks music theory!)

0
0
8
Open comments for this post

2h 33m 16s logged

Note Picker

First version of the note picker, it will need a re-do to prevent overlapping notes and to support sharps and flats.

I also wrote a system that converts into an internal representation from which it’s easy to get the names of the notes and hopefully to locate them on the guitar fretboard.

0
0
6

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…