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

  • Menu switch between guitar bodies in a modular fashion [1]
  • Transform with gizmos [1] [2] [3]

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
  • Donn@slrpnk.netOP
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    19 days ago

    also if WebMs can be embedded, please someone let me know how since they show up blank in the post preview