algorithmic modeling for Rhino
hello,
i'm playing around trying to make a nut-slot template maker for guitars. Basically there are two ways to cut the little grooves on the top end of the guitars neck (the nut):
1. equal centres: the nut's width is divided in equal segments resulting in queal spacing from string center to string center but the spacing bewteen the top strings is smaller than between the lower strings. It's not very comfortable to play, on bass guitar it's really awkward
2. equal spaces: the nut is divided so that the spacing between the outer edges of all 6 strings is the same. Since eachstring has a different width (gauge) this requires some calculations but is much more comfortable to play
i have attached my pathetic simple attempt at creating this. It works for 'equal centres' but i can't really figure out several things:
A. how to use a table or list of values as an input for the string gauges. Ideally i would like to select from different 'sets' of strings so that i can create different nut templates for different thickness strings easily. So ideally i would like to select a preset like: 'light', 'ultra light', 'medium', 'light top heavy bottom' and then it would adjust everything according to the different string gauges defined in those sets/lists.
B. how to use metric units for the spacing of the top and bottom strings to the fretboard/neck edge. I have tried to do it by eyeballing it with the 'point on curve' element which i'm pretty sure is not the way to do it properly. I want to be able to simply input this in mm, so for example a 4mm distance from the strings to the fretboard edge.
C. how to figure out the 'equal spaces' and divide the bridge and nut curves accordingly so that the distance from the outside edge of the top and bottom strings to the fretboard is equal, and the spacing between the strings outer edges (not the centres) is equal.
would really appreciate any help or tips to point me into the right direction :)
Tags:
Here is a model that seems to work very well. Throw away all earlier iterations!!
The idea is summarized briefly as:
"virtual" Nut (vNut) and Bridge (vBridge) define string separation and angles, then used as a "loom" for fixed bass and treble scale lengths
The geometry uses fixed length bass and treble scale inputs and keeps those lengths precisely as the bass scale and frets are aligned using the 'Align Fret #' slider.
The 'vBridge Pos' is arbitrary, since actual bass and treble scale/string lengths are defined separately. Always using a half meter (500 mm) as a standard, for example, makes string gap comparisons more meaningful between changes to 'vNut width', 'vBridge Width' or string sets (gauges or lengths).
Legacy code to introduce edge spacing was effectively neutralized by setting those sliders to zero; V2 edge space code (below original) was added without any effect on string separation.
The 'frets (primary!)' are done between 'bass cntr' and 'treble cntr' strings. An 'extend frets to edges' group extends and trims them.
hey thx Joseph, i finally have time all day todsay to dive back into this. if i understand correctly from your description the vnut and vbridge are just construction aids ?
mayn thx btw for showing me how to use panels and valuelist to make a dataset switch, i had seen the value list before but hadn't understood how i could use this to make a switch like this.
will report back later :-)
i'm still exploring but i have a question, i noticed that the fretboard is not centered around the X-axis which is important. if i draw a line perpendicular to the x-axis and measure at any point X on the fretboard the distance from fretboard edges top and bottom to the x-axis should be equal, shouldn't it ?
I think the spacing from outside edge of top string to fretboard and outside edge of bottom string to fretboard should be equal but wondering if the string to edge spacing at the intersection of an x-perpendicular line should be the same or if the distance should be the same measured from the corresponding fret end.
if i move just the fretboard (the lofted surface i baked) up so that it is centered on the x-axis then the spaces from string edge to fretboard edges works out. In this image i have left the strings in place and just moved the fretboard surface:
but the 'equal spaces' string spacing itself between the strings works out great!
Fret spacing is now ruled by the strings, not by the outer edges. More accurate, isn't it? Ignore the white edges, or draw them differently. It's the strings that matter, eh?
P.S. V2 edge spacing might be better? It's different than V3... both are arbitrary and not strictly related to spring spacing.
P.P.S. One of the discoveries I made this week is that using the edges to make the frets was causing errors, for obvious reasons, so using the strings for frets is better!
One of the discoveries I made this week is that using the edges to make the frets was causing errors, for obvious reasons, so using the strings for frets is better!
Maybe it's not so obvious... In the first versions of code I posted to this thread, I assumed that edge spacing was one half the gap between strings at the nut and bridge. Later, that changed to two distance sliders. In any case, those edges are not the same lengths, aren't aligned to the strings and don't give the same results as using the bass and treble strings themselves to calculate fret positions.
The beauty of the "virtual loom" is that the real Nut and Bridge angles change without changing string lengths or spacing.
well, it's the whole that matters not only the strings :-)
the thing with the 'equal spaces' nut conundrum is that the fretboard width defines the nut width and a perfect nut will have equal spaces between string edges as well as equal distances of outer string edges to fretboard edges.
also the centerline of the neck is an important construction reference for many parts of the guitar and building process so it would be nice if the fretboard was aligned to it.
Don't get me wrong,for sure it's easily moved or constructed in rhino afterwards but since i haven't completely worked through your whole patch i just wanted to ask if it was intentional.
Btw here is what the actual finished nut 'object' will look like (on the right):
btw, just FYI in case you're wondering why the bridge (left) string lengths are not on the same line, this is for intonation compensation adjustment, i've never quite understood the theory of why the actual string length differs from the 'theorethical' string length. i don't want to pollute the issue again but just so you know there is a reason for these adjustable 'saddles', the explanation is way above my head :-) it also doesn't need to be calculated in advance necessarily. There are fixed compensated bridges but personally i much prefer the adjustable.
The "virtual loom" uses the same string spacing algorithm we started with, including string widths (gauges), so the strings are positioned correctly with respect to the centerline, right?
V2 edge space code does a better job because the basis 'vNut' and 'vBridge' lines include the string widths(!) and are perpendicular to the centerline.
I added V2 back in this version but left V3 in orange, deprecated, as a reminder.
Look for a dark gray "MultiString Frets" group on the far right; it gets fret points for all six strings instead of only treble and bass. You have to zoom in very closely to see the difference; I haven't measured it yet, but... might explain those steps in the bridge?
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by