- commit
- 3b984bc
- parent
- feb131e
- author
- Neale Pickett
- date
- 2025-02-19 11:59:34 -0700 MST
completed penny chanter
4 files changed,
+66,
-31
+6,
-0
1@@ -0,0 +1,6 @@
2+use <./chanter.scad>
3+
4+intersection() {
5+ chanter();
6+ cut();
7+}
+6,
-0
1@@ -0,0 +1,6 @@
2+use <./chanter.scad>
3+
4+difference() {
5+ chanter();
6+ cut();
7+}
+50,
-31
1@@ -1,38 +1,57 @@
2 include <../common.scad>
3
4-module tonehole(h=10, d=10) {
5- translate([0, 0, h]) rotate([0, 90, 0]) cylinder(h=20, d=d);
6+od = 16.0;
7+
8+module tonehole(h=10, d=10, undercut=0) {
9+ translate([od/2, 0, h]) {
10+ rotate([0, -90+undercut, 0]) {
11+ // Scoot it down a hair so it will penetrate the entire tube when rotated
12+ translate([0, 0, -3]) {
13+ cylinder(h=od/2, d=d);
14+ }
15+ }
16+ }
17 }
18
19-difference () {
20- union() {
21- // The core part of the instrument is this brass tube
22- brass() cylinder(h=360.0, d=16.0);
23-
24- // David adds this outer Derlin tube as an upgrade option
25- derlin() translate([0, 0, 40.0]) cylinder(h=290, d=16.5);
26-
27- // These little doodads are probably just to hide the Derlin seam
28- ivory() translate([0, 0, 30.0]) cylinder(h=12, d=22.0);
29- ivory() translate([0, 0, 322.0]) cylinder(h=10, d=22.0);
30+module chanter() {
31+ difference () {
32+ union() {
33+ // The core part of the instrument is this brass tube
34+ brass() cylinder(h=360.0, d=od);
35+
36+ // David adds this outer Derlin tube as an upgrade option
37+ derlin() translate([0, 0, 40.0]) cylinder(h=290, d=16.5);
38+
39+ // These little doodads are probably just to hide the Derlin seam
40+ ivory() translate([0, 0, 30.0]) cylinder(h=12, d=22.0);
41+ ivory() translate([0, 0, 322.0]) cylinder(h=10, d=22.0);
42+ }
43+
44+ // The bore for the reed: no harm in running this the entire length
45+ cylinder(h=400, d=6.3);
46+
47+ // Inner bore, which runs up to the place where the reed drops in
48+ cylinder(h=327, d=13.5);
49+
50+ // I totally dig David's minimalist aesthetic
51+ translate([0, 0, 3]) rings(d=16.0);
52+
53+ // Tone Holes!
54+ // XXX: Undercut angle should be taken into account here
55+ tonehole(h=57.1, d=6.68); // E-
56+ tonehole(h=87.0, d=4.25); // E
57+ tonehole(h=118.0, d=8.33); // F#
58+ tonehole(h=149.0, d=5.51, undercut=-15); // G
59+ tonehole(h=184.5, d=7.75, undercut=15); // A
60+ tonehole(h=184.5, d=7.75, undercut=-15); // A (wide undercut)
61+ tonehole(h=219.0, d=6.72, undercut=15); // B
62+ tonehole(h=250.0, d=5.50, undercut=30); // C
63+ rotate([0, 0, 180]) tonehole(h=270.0, d=7.11, undercut=30); // D
64 }
65+}
66
67- // The bore for the reed: no harm in running this the entire length
68- cylinder(h=400, d=6.3);
69-
70- // Inner bore, which runs up to the place where the reed drops in
71- cylinder(h=327, d=13.5);
72-
73- // I totally dig David's minimalist aesthetic
74- translate([0, 0, 3]) rings(d=16.0);
75-
76- // Tone Holes!
77- // XXX: Undercut angle should be taken into account here
78- tonehole(h=57.1, d=6.68);
79- tonehole(h=87.0, d=4.25);
80- tonehole(h=118.0, d=8.33);
81- tonehole(h=149.0, d=5.51);
82- tonehole(h=184.5, d=7.75);
83- tonehole(h=219.0, d=6.72);
84- tonehole(h=250.0, d=5.50);
85+module cut() {
86+ rotate([0, 45, 0]) cube(240, center=true);
87 }
88+
89+chanter();
+4,
-0
1@@ -12,6 +12,10 @@ module derlin() {
2 color("dimgray") children();
3 }
4
5+module ivory() {
6+ color("ivory") children();
7+}
8+
9 // tube creates a hollow cylinder
10 module tube(h=10, id=5, od=10) {
11 difference() {