- commit
- 78c7c9f
- parent
- 4ebc81a
- author
- Neale Pickett
- date
- 2025-11-25 11:13:29 -0700 MST
Start work on a quiet chanter
10 files changed,
+255,
-0
R daye/chanter/chanter-bottom.scad =>
daye/chanter/bottom.scad
+0,
-0
R daye/chanter/chanter-top.scad =>
daye/chanter/top.scad
+0,
-0
+8,
-0
1@@ -0,0 +1,8 @@
2+rev=$(shell git log -1 --pretty='format:%cd' --date='format:%Y-%m-%d')
3+
4+all: top.3mf bottom.3mf
5+clean:
6+ rm -f *.3mf
7+
8+%.3mf: %.scad chanter.scad
9+ openscad -D rev=\"$(rev)\" -o $@ $<
+5,
-0
1@@ -0,0 +1,5 @@
2+use <./chanter.scad>
3+
4+tenon(top=false) {
5+ chanter();
6+}
+99,
-0
1@@ -0,0 +1,99 @@
2+use <BOSL/math.scad>
3+use <sigil.scad>
4+
5+rev = "preview";
6+stamp = str(rev);
7+
8+$fn = $preview ? 0 : 180; // Make circles circular in final renders.
9+
10+// stops is an array of [d, h]
11+module rod(stops) {
12+ beg = stops[0][1];
13+ end = stops[len(stops)-1][1];
14+ p = concat([[0, beg]], stops, [[0, end]]);
15+
16+ halfp = [for (i = p) [i[0]/2, i[1]]];
17+ rotate_extrude(convexity=4) {
18+ polygon(halfp);
19+ }
20+}
21+
22+// Drill a tonehole.
23+// The center of the tonehole will intersect [0, od, h] before rotation.
24+//
25+// Instrument makers think about
26+// drilling from the outside of the pipe in.
27+// So we need to know the outside diameter of the pipe.
28+//
29+// For now, we're pretending the pipe has a consistent outside diameter.
30+// BOSL2 may have something that will let us calculate od given h and measurements.
31+module tonehole(od, h, d, undercut=0, rot=0) {
32+ render(convexity=2)
33+ rotate([0, 0, rot]) {
34+ translate([0, -od/2, h]) {
35+ // Intersect with a cube to ensure an undercut tonehole doesn't drill past the center of the instrument
36+ intersection() {
37+ rotate([-90+undercut, 0, 0]) {
38+ cylinder(d=d, h=od, center=true);
39+ }
40+ cube(od, center=true);
41+ }
42+ }
43+ }
44+}
45+
46+function inch(x) = x * 25.4;
47+
48+od = inch(0.762);
49+
50+height = 306;
51+
52+module chanter() {
53+ difference() {
54+ union() {
55+ cylinder(d=16, h=height);
56+ cylinder(d1=od, d2=16, h=280); // A nice taper
57+ }
58+
59+ // Inner bore
60+ cylinder(d1=10.8, d2=4.2, h=height-23);
61+ translate([0, 0, height-23]) cylinder(d1=4.2, d2=7.1, h=23); // Reed insert
62+
63+ // Seam guides
64+ translate([od/2, 0, 0]) rotate([0, -0.33, 0]) cylinder(d=1, h=400);
65+
66+ sigil(od, stamp);
67+
68+ tonehole(od, 56.0, inch(0.162));
69+ tonehole(od, 89.0, inch(0.182));
70+ tonehole(od, 122.2, inch(0.201));
71+ tonehole(od, 153.2, inch(0.180));
72+ tonehole(od, 190.1, inch(0.183));
73+ tonehole(od, 222.6, inch(0.187));
74+ tonehole(od, 252.2, inch(0.162));
75+ tonehole(od, 275.5, inch(0.173), rot=180);
76+
77+ }
78+}
79+
80+joint = 160; // Where to split it in half for printing
81+module tenon(top=false, h=joint, od=od-5, depth=20, thickness=2, clearance=0.12) {
82+ module cut() {
83+ cylinder(h=h+depth, d=od-thickness+clearance);
84+ cylinder(h=h, d=50);
85+ }
86+
87+ if (top) {
88+ difference() {
89+ children();
90+ cut();
91+ }
92+ } else {
93+ intersection() {
94+ children();
95+ cut();
96+ }
97+ }
98+}
99+
100+chanter();
+101,
-0
1@@ -0,0 +1,101 @@
2+Possible Harrington C# Chanter
3+Owned by Kevin Rowsome
4+
5+Copyright 1998 David C. Daye
6+
7+Notes: LOA: 381 mm
8+ Bell I.D.: .44" x .427"
9+ Construction: Medium brown wood
10+ Slight curved bore, slightly ovalled
11+ Special: Per Benedict Koehler, bottom end of chanter
12+ has been reamed and fit with new bottom &
13+ bell, feather-tapered into original top portion.
14+ "Gouges" and splinters I observed in bottom
15+ are feather edges chipping and peeling loose.
16+
17+ Measurement Notes:
18+ ID penetration numbers are identical for throat.
19+
20+ Elsewhere when 2 are same for an i.d., a tone hole
21+ is present and therefore only one penetration
22+ distance could be taken. It is not necessarily
23+ either the true min. or maximum penetration of
24+ a pre-hole bore.
25+
26+ I.D.'s marked by *** are in gouged/chipped area.
27+ Therefore 3 or 4 penetration numbers are given
28+ because of measurement uncertainties.
29+
30+Chanter is said to be well behaved, has good tone.
31+
32+Probe Distances From Bell (millimeters)
33+ID " Min Max Min2 Max2
34+
35+0.255 381.0 381.0
36+0.250 379.5 380.0
37+0.245 379.0 379.0
38+0.230 377.0 377.5
39+0.220 376.0 377.0
40+0.215 375.0 376.0
41+0.200 372.2 374.0
42+0.195 371.0 371.0
43+0.189 370.1 370.9
44+0.185 371.0 371.0
45+0.169 367.0 368.1
46+0.168 366.3 366.3
47+0.168 361.3 361.3
48+0.174 351.9 352.8
49+0.180 345.1 347.2
50+0.185 342.0 344.6
51+0.189 337.5 339.5
52+0.195 330.7 334.1
53+0.200 325.5 329.6
54+0.205 318.2 321.8
55+0.210 315.2 317.7
56+0.215 309.7 312.5
57+0.220 302.0 305.5
58+0.225 294.7 297.4
59+0.230 288.5 292.0
60+0.235 282.5 284.0
61+0.241 274.0 278.7
62+0.245 269.0 269.0
63+0.250 265.0 265.0
64+0.259 266.0 266.0
65+0.270 237.9 241.5
66+0.280 224.5 226.5
67+0.290 209.0 212.2
68+0.300 195.4 195.4
69+0.310 183.0 185.2
70+0.320 179.0 183.4
71+0.330 160.2 160.2
72+0.340 135.0 104.7
73+0.350 119.6 123.6
74+0.360 104.0 110.4
75+0.370 79.0 81.0 89.2 ***
76+0.380 61.0 63.0 66.0 ***
77+0.390 59.5 61.6
78+0.400 51.0 54.5 56.5 ***
79+0.410 27.0 29.5 41.5 47.0 ***
80+0.420 21.5 29.0 33.0 36.0 ***
81+0.427 0.0 0.0
82+0.430 11.0 11.0
83+0.440 0.0 0.0
84+
85+Tone Hole Data (yes E-flat hole is smaller than E hole)
86+
87+Note Dist from I.D. I.D.#2 Chanter Chanter
88+Name Bell (mm) (in.) (in.) Width " Depth "
89+
90+E flat 56.0 0.162 0.762 0.735
91+E 89.0 0.182 0.752 0.730
92+F 104.5
93+F# 122.2 0.201 0.749 0.690
94+G 153.2 0.180 0.709 0.735
95+A 190.1 0.183
96+B flat 205.5
97+B 222.6 0.187
98+C' 236.8
99+C 252.2 0.162 0.661
100+D" 264.1
101+D' 271.5 0.173 0.159 0.669 0.636
102+
+8,
-0
1@@ -0,0 +1,8 @@
2+* Changes
3+- Note taken on [2025-11-25 Tue 10:55] \\
4+ Made inner bore a perfect cone, reduced height to 306.
5+ Moved joint between F# and G because it's short now.
6+- Note taken on [2025-11-24 Mon 10:55] \\
7+ Reduced height to 360.
8+ Plays around C♯ with the reed pinched way down.
9+
+9,
-0
1@@ -0,0 +1,9 @@
2+<?xml version="1.0" encoding="utf-8"?>
3+<svg xmlns="http://www.w3.org/2000/svg" height="1cm" width="0.924cm" viewBox="0 0 500 500" xmlns:bx="https://boxy-svg.com">
4+ <defs>
5+ <bx:export>
6+ <bx:file format="png" path="ruby.png"/>
7+ </bx:export>
8+ </defs>
9+ <path style="stroke: rgb(0, 0, 0); fill: rgb(107, 84, 84); transform-box: fill-box; transform-origin: 50% 50%;" d="M 187.594 147.071 C 222.949 153.12 270.972 155.731 309.277 143.299 C 317.317 140.69 324.255 101.717 337.777 84.73 C 365.301 50.153 418.636 3.565 440.95 1.462 C 463.264 -0.641 461.076 -0.732 469.218 12.046 C 477.36 24.824 453.472 138.031 453.472 138.031 C 453.472 138.031 453.953 147.266 444.263 160.449 C 434.573 173.632 447.673 167.61 440.944 190.185 C 434.215 212.76 438.017 200.224 427.718 215.259 C 417.419 230.294 397.67 242.025 388.524 251.061 C 379.378 260.097 386.798 291.019 386.798 291.019 C 386.798 291.019 387.847 326.31 381.141 347.368 C 374.435 368.426 346.18 391.255 346.18 391.255 C 346.18 391.255 325.323 472.928 268.206 481.757 C 211.089 490.586 166.483 394.938 166.483 394.938 C 166.483 394.938 144.005 389.647 131.704 371.16 C 119.403 352.673 108.748 336.052 108.361 311.035 C 107.974 286.018 101.518 264.509 101.518 264.509 C 101.518 264.509 89.405 262.542 85.275 256.613 C 81.145 250.684 78.859 245.845 70.152 238.568 C 59.127 229.354 42.841 226.273 39.22 199.414 C 35.599 172.555 36.125 179.11 36.125 179.11 C 36.125 179.11 23.121 168.902 31.274 144.728 C 39.427 120.554 89.353 134.561 107.159 120.958 C 124.965 107.355 114.883 115.961 133.013 98.781 C 151.143 81.601 175.442 122.255 175.442 122.255 C 175.442 122.255 178.724 145.553 187.594 147.071 Z" id="object-1" transform="matrix(0.999073, 0.043046, -0.043046, 0.999073, 0.014376, 0.000286)"/>
10+</svg>
+20,
-0
1@@ -0,0 +1,20 @@
2+use <MCAD/regular_shapes.scad>
3+
4+module sigil(d, stamp) {
5+ // Sigil
6+ translate([0, 0, 4]) intersection() {
7+ cylinder_tube(50, d/2+0.5, 1);
8+ union() {
9+ rotate([90, 90, -90]) {
10+ linear_extrude(height=d, convexity=4) {
11+ translate([-8, -5]) import("ruby.svg");
12+ }
13+ }
14+ rotate([90, 90, -160]) {
15+ linear_extrude(height=d, convexity=10) {
16+ text(stamp, size=2, halign="right", valign="center");
17+ }
18+ }
19+ }
20+ }
21+}
+5,
-0
1@@ -0,0 +1,5 @@
2+use <./chanter.scad>
3+
4+tenon(top=true) {
5+ chanter();
6+}