whistles

3d printable Irish whistles
git clone https://git.woozle.org/neale/whistles.git

commit
4a12e55
parent
8c79ef1
author
Neale Pickett
date
2025-05-04 08:56:53 -0600 MDT
Add more models
3 files changed,  +59, -12
M README.md
+19, -0
 1@@ -14,12 +14,31 @@ Fipples need more precision than the body,
 2 and it may not even be possible to 3D print one without needing extensive post-processing.
 3 
 4 
 5+# Building
 6+
 7+You need OpenSCAD and `make`.
 8+
 9+    make        # build all the models
10+    make lowe   # only build the low e model
11+
12+
13 # Parts Needed
14 
15 * 2× Rubber O-Rings: 25mm OD, 22mm ID, 1.5mm width
16 * 1× [Tony Dixon Tenor Whistle Head - Key of D](https://www.tonydixonmusic.co.uk/product/tenor-whistle-head-key-of-d/): Part TB106H
17 
18 
19+# Included Whistles
20+
21+I've included parameters for the following whistles:
22+
23+* Low G
24+* Low F
25+* Low E
26+* Low D
27+* Low C (I can't get it to voice the lower notes)
28+
29+
30 # Features
31 
32 Each segment has a ridge running down its length.
M whistle.json
+35, -10
 1@@ -1,16 +1,29 @@
 2 {
 3     "parameterSets": {
 4-        "low d - Dixon": {
 5-            "Text": "d",
 6-            "Height": "469",
 7+        "low g": {
 8+            "Text": "g",
 9+            "Height": "381",
10+            "InnerDiameter": "18.1",
11+            "Cuts": "[137, 230]",
12+            "TenonDepth": "15",
13+            "Hole1": "[246.3, 8.0]",
14+            "Hole2": "[214.7, 9.0]",
15+            "Hole3": "[181.4, 8.5]",
16+            "Hole4": "[144.9, 7.0]",
17+            "Hole5": "[112.0, 11.5]",
18+            "Hole6": "[68.5, 10.5]"
19+        },
20+        "low f": {
21+            "Text": "f",
22+            "Height": "381",
23             "InnerDiameter": "20.9",
24-            "Cuts": "[190, 240]",
25-            "Hole1": "[90, 7.45]",
26-            "Hole2": "[130, 11.0]",
27-            "Hole3": "[161, 9.45]",
28-            "Hole4": "[221, 7.45]",
29-            "Hole5": "[254, 9.50]",
30-            "Hole6": "[293, 7.45]"
31+            "Cuts": "[152, 260]",
32+            "Hole1": "[246.3, 8.0]",
33+            "Hole2": "[214.7, 9.0]",
34+            "Hole3": "[181.4, 8.5]",
35+            "Hole4": "[144.9, 7.0]",
36+            "Hole5": "[112.0, 11.5]",
37+            "Hole6": "[68.5, 10.5]"
38         },
39         "low e": {
40             "Text": "e",
41@@ -24,6 +37,18 @@
42             "Hole5": "[116.4, 12.0]",
43             "Hole6": "[81.5, 7.5]"
44         },
45+        "low d": {
46+            "Text": "d",
47+            "Height": "469",
48+            "InnerDiameter": "20.9",
49+            "Cuts": "[190, 240]",
50+            "Hole1": "[293, 7.45]",
51+            "Hole2": "[254, 9.50]",
52+            "Hole3": "[221, 7.45]",
53+            "Hole4": "[161, 9.45]",
54+            "Hole5": "[130, 11.0]",
55+            "Hole6": "[90, 7.45]"
56+        },
57         "low c": {
58             "Text": "c",
59             "Height": "545.2",
M whistle.scad
+5, -2
 1@@ -36,6 +36,9 @@ Hole6 = [293, 7.45];
 2 // Angle for tone holes. Anything other than 45 will create challenging overhangs!
 3 AxianovHoleAngle = 45;
 4 
 5+// Depth of the tenon joint. Shallower will be less stable.
 6+TenonDepth = 20;
 7+
 8 /* [ Hidden ] */
 9 sortedCuts = [min(Cuts[0], Cuts[1]), max(Cuts[0], Cuts[1])];
10 
11@@ -104,8 +107,8 @@ sectionedCuts = concat([-1000], sortedCuts, [1000]);
12 if (Section == -1) {
13   whistle();
14 } else {
15-  tenon(h=sectionedCuts[Section], od=OuterDiameter, top=true) {
16-    tenon(h=sectionedCuts[Section+1], od=OuterDiameter, top=false) {
17+  tenon(h=sectionedCuts[Section], od=OuterDiameter, depth=TenonDepth, top=true) {
18+    tenon(h=sectionedCuts[Section+1], od=OuterDiameter, depth=TenonDepth, top=false) {
19       whistle();
20     }
21   }