uilleann

3d printable Uilleann bagpipes
git clone https://git.woozle.org/neale/uilleann.git

commit
3b984bc
parent
feb131e
author
Neale Pickett
date
2025-02-19 11:59:34 -0700 MST
completed penny chanter
4 files changed,  +66, -31
A daye/chanter/chanter-bottom.scad
+6, -0
1@@ -0,0 +1,6 @@
2+use <./chanter.scad>
3+
4+intersection() {
5+  chanter();
6+  cut();
7+}
A daye/chanter/chanter-top.scad
+6, -0
1@@ -0,0 +1,6 @@
2+use <./chanter.scad>
3+
4+difference() {
5+  chanter();
6+  cut();
7+}
M daye/chanter/chanter.scad
+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();
M daye/common.scad
+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() {