another tuner attempt

This commit is contained in:
Luke Hubmayer-Werner 2024-12-27 19:06:45 +10:30
parent 5e902d4fe4
commit 3258d40fb3
1 changed files with 89 additions and 10 deletions

View File

@ -94,10 +94,10 @@ module neck(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thi
}
}
module bridge(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, scallop_depth=3, fret_width=2.4*6) {
module tailpiece(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, scallop_depth=3, fret_width=2.4*6) {
fw2 = fret_width/2;
neck_length = 120;
neck_width = (num_strings-1)*string_spacing + string_margin*2;
neck_length = 88;
neck_width = (num_strings-1)*string_spacing + string_margin*2 + 6;
module neck_stock() {
angle_excess = asin((scallop_depth+fw2)/target_neck_thickness);
a0 = 90-angle_excess;
@ -120,18 +120,32 @@ module bridge(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_t
}
module differences() {
t_offset = 2.7;
t_z = -23;
mirror([1,0,0]) translate([t_offset, 80, t_z]) rotate([90, -90, 90]) UBassTuner(from_below=false, from_side=true);
translate([t_offset, 45, t_z]) rotate([90, -90, 90]) UBassTuner(from_below=false, from_side=true);
mirror([1,0,0]) translate([t_offset, 10, t_z]) rotate([90, -90, 90]) UBassTuner(from_below=false, from_side=true);
t_offset = -27; //2.7;
t_z = -21; //-23;
module tuner() {
hole_r = 3;
bend_r = 24 + hole_r + 10;
fn=72;
rotate([90, -90, 90]) UBassTuner(from_below=true, from_side=true);
// translate([35,16,0]) cylinder(h=10-t_z, d=7, $fn=72);
translate([36-7,17,1]) for (a = [10:89]) {
hull() {
translate([a/9, bend_r-bend_r*sin(a), bend_r*cos(a)]) sphere(hole_r, $fn=fn);
translate([(a+1)/9, bend_r-bend_r*sin(a+1), bend_r*cos(a+1)]) sphere(hole_r, $fn=fn);
}
}
}
mirror([1,0,0]) translate([t_offset, 57, t_z]) tuner();
translate([t_offset, 31, t_z]) tuner();
mirror([1,0,0]) translate([t_offset, 5, t_z]) tuner();
for (i = [-1:2:1])
translate([i*15, 0, -4])
cf_tube(neck_length, 0, tolerance=0.4);
translate([0, 0, -10])
cf_tube(neck_length, 0, tolerance=0.4);
}
thick = 45;
thick = 32;
render() difference() {
color([1,1,1,0.3]) translate([-neck_width/2, 0, -thick+scallop_depth]) cube([neck_width, neck_length, thick]);
differences();
@ -296,6 +310,70 @@ module headpiece(string_spacing=18, string_margin=4.5, num_strings=3, target_nec
}
}
module bridge(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, scallop_depth=3, fret_width=2.4) {
piece_length = 16;
cf_square_length = 32;
fw2 = fret_width/2;
x0 = 0;
neck_width = (num_strings-1)*string_spacing + string_margin*2;
bend_radius = 24;
string_thicknesses = [4.9, 4.2, 3.0];
module stock() {
angle_excess = asin(scallop_depth/target_neck_thickness);
a0 = 90-angle_excess;
a1 = 270+angle_excess;
translate([0, x0, 0])
rotate([-90, 0, 0])
linear_extrude(piece_length)
polygon([for (i = [0:300]) let(a=lerp(a0, a1, i/300.0)) [neck_width*0.5*sin(a), -target_neck_thickness*cos(a)]]);
intersection() {
r = 14;
translate([0,8,scallop_depth]) rotate([18, -90, 0]) scale([1,0.2,1]) cylinder(r=r, h=neck_width*1.5, center=true, $fn=72);
a0 = -90;
a1 = 90;
translate([0, x0, 0])
rotate([-90, 0, 0])
linear_extrude(piece_length)
polygon([for (i = [0:300]) let(a=lerp(a0, a1, i/300.0)) [neck_width*0.5*sin(a), -target_neck_thickness*cos(a)*3]]);
}
}
module string_tubes(tolerance = 1.0) {
module string_tube(diameter, fn=36) {
hole_r = diameter/2;
bend_r = bend_radius + hole_r;
union() {
for (a = [0:89]) {
hull() {
translate([0, bend_r*sin(a), bend_r*cos(a)]) sphere(hole_r, $fn=fn);
translate([0, bend_r*sin(a+1), bend_r*cos(a+1)]) sphere(hole_r, $fn=fn);
}
}
hull() {
translate([0, bend_r*sin(90), bend_r*cos(90)]) sphere(hole_r, $fn=fn);
translate([0, bend_r*sin(90), -target_neck_thickness]) sphere(hole_r, $fn=fn);
}
}
};
for (i = [0:num_strings-1]) {
string_diameter = string_thicknesses[i] + tolerance;
x = -neck_width/2 + string_margin + (i*string_spacing);
// translate([x, x0+2, -bend_radius+scallop_depth]) string_tube(string_diameter);
translate([x, 0, scallop_depth+string_diameter/2+8]) rotate([-90,0,0]) cylinder(d=string_diameter, h=20, $fn=72);
}
}
// string_tubes();
difference() {
stock();
string_tubes();
for (i = [-1:1])
translate([i*15, 0, (i==0)?(-10):(-4)])
cf_tube(piece_length+0.1, x0-0.1, VLH=false);
// αβγδεζ
translate([0, x0+piece_length, -5]) rotate([90, 0, 180]) linear_extrude(0.3, center=true) text(text = "01β", font = "Deja Vu Sans", halign = "center", valign = "center", size = 4);
}
}
echo(fret_scale_length(0) - fret_scale_length(8)); // 225.724
echo(fret_scale_length(8) - fret_scale_length(24)); // 240.335
// fret_tube(0, 8);
@ -306,4 +384,5 @@ echo(fret_scale_length(8) - fret_scale_length(24)); // 240.335
// UBassTuner();
// fret_tube_filler(24, 100);
bridge();
tailpiece();
// bridge();