uilleann

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

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
A pickett-d-quiet/Makefile
+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 $@ $<
A pickett-d-quiet/bottom.scad
+5, -0
1@@ -0,0 +1,5 @@
2+use <./chanter.scad>
3+
4+tenon(top=false) {
5+  chanter();
6+}
A pickett-d-quiet/chanter.scad
+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();
A pickett-d-quiet/measurements.txt
+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+					
A pickett-d-quiet/notes.org
+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+
A pickett-d-quiet/ruby.svg
+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>
A pickett-d-quiet/sigil.scad
+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+}
A pickett-d-quiet/top.scad
+5, -0
1@@ -0,0 +1,5 @@
2+use <./chanter.scad>
3+
4+tenon(top=true) {
5+  chanter();
6+}