banner
 Home  Guitar Home Page 


Copyright © 2018 by Wayne Stegall
Updated
December 5, 2018.  See Document History at end for details.

Guitar Shape

Mathematical modeling of guitar shape leads to modeling program

Introduction

Some time ago I wondered if the shape of a classical guitar was mathematical and further if a mathematically modeled shape would be better in some way.  I imagined this to be a polar plot.

Manual Attempts

When I began to explore these ideas, I first tried for a peanut (or hourglass) shape with the following equation and succeeded.  This resulted in upper and lower bouts of same width with the expected waist in between.

(1)
 r = a0 + a2cos2θ

I already had in mind that if I added a1cosθ to the equation the lower bout could be larger than the upper.

(2)
 r = a0 + a1cosθ + a2cos2θ

Now the width of the outline was unavoidably narrow relative to the length without some further change.  The required change was to stretch the y axis of the polar plot.

(3)
 x = r·cosθ
(4)
 y = ymult·r·sinθ

Now that could get the right bout widths, the outline seemed too roundish.  Adding a sixth harmonic then allowed the familiar shape with considerable tinkering with the coefficients.

(5)
 r = a0 + a1cosθ + a2cos2θ + a6cos6θ

Computer solution

When I came to want a program to calculate the coefficients and plot the curve, I was stuck on the idea of an empirical method of refining the coefficients but failed to imagine a final algorithm.  Then I thought of the min/max algorithm used to calculate digital filters and thought it right.

Min/Max algorithm process

  1. User specifies length, lower bout, waist, and upper bout dimensions and a4 and a6 coefficients
  2. Choose reasonable θ values for minimum and maximum points
  3. Calculate coefficients a0, a1, and a2 from current min/max θ values by solving simultaneous linear equations.
  4. Find actual min/max points for next calculation.
  5. Repeat 3 and 4 until convergence.

Equations on which simultaneous linear equations are based

r = a0 + a1cosθ + a2cos2θ + a3cos3θ + a4cos4θ + a5cos5θ + a6cos6θ
x = r·cosθ
y = r·sinθ/ay
r = ay·y/sinθ
a0 + a1cosθ + a2cos2θ + a3cos3θ + a4cos4θ + a5cos5θ + a6cos6θ - ay·y/sinθ = 0
Length = 2(a0 + a2 + a4 + a6)

Matrix input to Gaussian elimination

a0
a1
a2
ay










2

0

2

0

Length – 2(a4 + a6)
1  
cosθ0  
cos2θ0  
–Lower/sinθ0  
–(a3cos3θ0+ a4cos4θ0 + a5cos5θ0 + a6cos6θ0)
1
cosθ1
cos2θ1
–Waist/sinθ1
–(a3cos3θ1 + a4cos4θ1 + a5cos5θ1 + a6cos6θ1)
1
cosθ2
cos2θ2
–Upper/sinθ2
–(a3cos3θ2 + a4cos4θ2+ a5cos5θ2 + a6cos6θ2)


Program and its operation

Program name is guio.exe

Download program version 1.3.1. (New version, adds new functionality, see document history)
Download program version 1.3.0. (Old version)
Download program version 1.2.0. (Old version)
Download program version 1.1.0. (Old version)
Download program version 1.0.0. (Old version)

EULA (End user license agreement found in about box of program).

I retain copyright.  You may freely use this program for personal, non-commercial, use (that is you cannot offer it for sale).  You may share it with others as long as it is provided to them complete and unmodified as you got it from my website.

Because this program is free, although it works, I do not guarantee its operation or application.


Run program and a default program shape appears.

Menu->Edit->Input Shape brings up dialog to define your own shape loaded with default parameters.

Figure 1:  Input Shape dialog.
inpshp.jpg


Enter all required values experimenting with small values of a4 and a6.
in->cm and cm->in buttons convert units.
Press Calc to calculate and draw shape.
Press OK to do the same and exit dialog.

Figure 2:  Guitar outline in horizontal orientation
horz1.jpg

Menu->View->Vertical toggles between vertical and horizontal modes with vertical mode indicated by check mark.

Figure 3:  Guitar outline in vertical orientation
vert1.jpg


Help in adjusting coefficients a3 through a6

Note: These plots relate to horizontal guitar shape drawing.  Use with vertical drawings would rotate the help plots 90° clockwise.

A3 through a6 should only have small experimental values.  Figure 4 below shows positive and negative values of a4 and a6 added to circles to help you to understand their effects.  Starting from the inside working out they are:

Figure 4:  Graph of the effects of coefficients a4 and a6.
a4a6.jpg


Figure 5
below shows positive and negative values of a3 and a5 added to circles to help you to understand their effects.  Starting from the inside working out they are:

Figure 5:  Graph of the effects of coefficients a3 and a5.
a3a5.jpg

To add a soundhole to drawing

Menu->Edit->Input Soundhole brings up dialog to define or calculate a soundhole to add to guitar shape..
The classical hole position is calculated so that the hole intersects the 19th fret so as to put the middle third of that fret inside the hole.  Please double-check the position of the hole by your normal methods if the drawing finds actual use.

Figures 6 and 7:  Soundhole dialog before and after classical calculation.
sndhlinp.jpg
sndhlinp-calc.jpg

Figure 8:  Guitar shape with soundhole added.
vert1sh.jpg

Fingerboard display

Menu->View->Fingerboard  will display fingerboard (and uncompensated saddle position) if scale and fingerboard width at nut and 12th fret were entered correctly in Soundhole dialog.  The fret at the jeck join is not plotted to prevent interference with display of shape.  The program presumes neck join at 12th fret for a classical soundhole calculation and 14th fret for otherwise.  A fingerboard can only be shown if a soundhole is already displayed.  This function is to help position a steel-string soundhole relative to the highest fret or to visually verify the correct placement of the classical soundhole relative to the 19th fret.

Soundhole dialog functions for fingerboard

Caution:  Fingerboard display may not have enough resolution to place frets accurately and is only for use in overall design.  I think 100 dots/cm (254 dots/in) or more – as indicated in upper left corner – would be required for accurate fret placement.

Figure 9:  Vertical guitar shape with soundhole and fingerboard added.
vert1fb.jpg

Figure 10:  Horizontal guitar shape with soundhole and fingerboard added.
horz1fb.jpg

Miscellaneous functions

Menu->View->Side Length  will display a popup dialog showing length of one side.

Figure 11:  Program with Side Length dialog popped up.
vert1sl.jpg


Menu->View->Show Data  will print primary parameters on upper left of plot.  In smaller window sizes will overlap drawing.

Figure 12:  Guitar shape data displayed.
vert1sd.jpg

Additional program notes

To convert the entire drawing do so from the edit menu.

Lutherie use

For those who want life sized drawings of guitar shapes the number displayed in the upper left hand corner of the plots indicates the number of pixels per unit measure.  Then follow this procedure.

In GIMP this is done as follows:
Menu->Image->Scale Image
Change X resolution and Y resolution to <your value> pixels/in (or pixels/cm)

Dreadnoughts too

Although I originally sought to model the Spanish guitar the following shows an attempt at a dreadnought.  The addition of coefficients a3 and a5 to the new program (version 1.1.0) enable a shape flat at neck and tail as shown below.

Figures 13 and 14:  Input and results of attempt to model a dreadnought.
inpshp2.jpg
vert2.jpg




Document History
July 24, 2018  Created.
August 21, 2018  Added additional coefficients a3 and a5 to program to add more versatility (i.e. to emulate more possible steel-string shapes).  Added a soundhole plot.
August 21, 2018  Added comment clarifying orientation of a3 - a6 help plots.
November 28, 2018  Program version 1.2.0.  Added fingerboard, data, and side length displays.  Internal changes increase resolution of shape plot and reliability of program.
December 5, 2018 .
Program version 1.3.0.  Extended horizontal guitar outline for improved appearance.  Added neck joiin fret override for fixed calculation.  Now can activate fingerboard from Soundhole dialog.  Made corrections to figure titles.
December 5, 2018 
Program version 1.3.1.  Added more input validation and error checking to Soundhole dialog.