Wow, it’s been a while…but I’m still alive! More exciting still, is that I’ve been able to chip away at a decent amount of items off my checklist. Enough to give an update on…
Guitar Nodes v0.8(ish)!
So what and why even?
- GuitarNodes fits in the middle of a Venn diagram, between (Blender v4+) animators and guitar enthusiasts
- Simply put, it’s a tool that aims to make it easier to create, customize, and animate a guitar, while minimizing time spent on all of the steps that come between the joy of a sweet guitar model and the pain of setting it up for (passably) realistic animation
- Once I clean up any orphaned data, I will release this version and all subsequent versions for free!
Features
Body
Headstock
- Menu switchable [1]
Tuning Pegs
- Menu switchable [1]
- Projects tuning pegs onto headstock based on aligning guide geometry [2] [3]
- Creates simple string-ends that connect from each peg to the nut [4] [5]
Neck
- Creates a mesh that bridges 3 profile curves [1]
- Nut profile curve
- 12th fret profile curve
- End of fretboard profile curve
Frets
- Currently uses a stand-in mesh, but I’ll throw a menu switch in if there’s a demand for custom fret bars
- Adjustable fret count
- The frets use a luthier’s math formula to calculate their distance based on the length of the guitar string scale [1] [2]
Strings
- Adjustable string count, spread, and action [1]
- Menu switch to choose between gauges (currently only 6- and 7-string gauges have been implemented)
- Strings vibrate according to note frequency (or whatever you want if you get in the nodes and change it manually)
- This is currently also manually listed similar to string gauges
- I will rework this when I can get it to interact with MIDI files
- Strings stop vibrating based on chosen fretted notes
- Notes can be bent
- String gauges flip if “Lefty” boolean is checked
- _Player_Controls nodegroup has values for each string
- Fret number being played [2]
- Bend amount [3] [4]
- String oscillation axes (X and Y), with sliders to determine how much in each direction [5]
- String depression depth, to mimic being depressed by a finger when fretted [6]
- Flip direction of the strum
- Each string has its own adjustable oscillation strength (“Osc Height”)
Saddle
- Could easily add a menu switch for the geometry if you want to go modular
- Automatically fits at the end of the string (based on scale length) [1]
- Has a dial gizmo to rotate the saddle (Z-axis) in place [2]
Bridge
- Could easily add a menu switch for the geometry if you want to go modular
- Samples the guitar body to place in alignment with the Saddle
- Distance from bridge can be adjusted with a linear gizmo [1]
- Connects end strings (saddle to bridge)
- Strings have adjustable Z-height with linear gizmo [2]
Pick Guard
- Could easily add a menu switch for the geometry if you want to go modular
- Follows the X-/Y-axis placement of a Guide Empty [1]
- Samples the guitar body to place with Z-up facing the body’s normal direction
- Rotate and translate in Z with gizmos [2]
- Can be toggled on/off with boolean switch
Tone Knobs
- Could easily add a menu switch for the geometry if you want to go modular
- Instances knobs based on raycast from a Guide Curve [1]
- Resolution determines number of knobs
- Extrude guide curve in X/Y direction to change direction of knob layout [2]
- Can be toggled on/off with boolean switch
Output Jack
- Could easily add a menu switch for the geometry if you want to go modular
- Samples the guitar body to position based on location
- Follows the X-/Y-axis placement of a Guide Empty [1]
- Can be rotated with dial gizmo [2]
- Can be toggled on/off with boolean switch
UI
- Shows scale and fretboard length (toggle with boolean)
- Follows the string (scale) and fretboard geometries respectively
- Shows fretboard chart (toggle with boolean) [1]
- Shows frets currently selected on each string (integers on _Player_Controls nodegroup) with a red dot
- Shows the fret by number for where dots are traditionally inlaid on a guitar fretboard (i.e. 3, 5, 7, 9, 12, repeat per octave)
- Fretboard expands and shrinks to fit all of the fret dots
- The amount of geometry culled is adjustable
- Adjustable UI fretboard line thickness
- Is adjustable with a transform gizmo [2]
Future Plans
Nearer
- Add per-fret string translation that slightly increases string frequency for bending
- I need help (still!) getting the points which the Tone Knobs instance at: they currently do not rotate to point the Z in the normal direction of the body. Instead, they all seem to match the first point’s Z direction only. I want each point to recognize the normal of the nearest faces it’s stuck to
- A strings-only version, for people that want to use their own guitar models
Further out
- Custom guitar body, drawn with grease pencil (shoutout to Joey C for the inspiration!)
- Simulation nodes for strings, so that you can have oscillation decay over time
- Simulation nodes that interact with a plectrum object, so they can be literally strummed (probably gonna need a bit of help, too!)
- Better procedural materials
- Is it possible to use a For Each Element zone to change string material based on its position/diameter (i.e. thicker strings are wound material)
- How much of this requires knowledge of handling UVs through geo nodes?
- Simulation nodes for painting custom materials on guitar
- Possible driver UI that changes a lot of these values, so that you don’t have to go into the nodes to change things
- Want to implement a tablature-style tracker
- Automatically keys the string fret values to match the song’s rhythm, accounting for framerate
- Pickups & Selector Switch
- Whammy Bar?!
- Any other feedback that I like enough to implement myself
You must log in or # to comment.
also if WebMs can be embedded, please someone let me know how since they show up blank in the post preview