It is currently Thu Sep 20, 2018 8:52 pm

All times are UTC - 6 hours




Post new topic Reply to topic  [ 1 post ] 
Author Message
 
PostPosted: Tue Mar 06, 2018 5:43 pm 
Offline
User avatar

Joined: Wed Jun 27, 2001 6:00 pm
Posts: 2216
Location: Kings Mills, OH
Designed using OpenScad Version 2015.03-2
This will make a functional high whistle mouthpiece using a 3D printer.
This is hereby released to the Chiff and Fipple Community per the Creative Commons license illustrated in the source code below:
Code:
// Written and designed by Daniel Bingamon
// (CC) 2018 Jubilee Music Instrument Co.
// Released to open source 3/6/18 per Creative Commons Attribution License
//
// The whistle is composed of three parts, the block the main shaft and the shroud,
//
// This is size in order to make a 3D printed mouthpiece for 1/2" CPVC
// The scale function can make this fit other tubes as well.
//
// ABS is recommended in order to acetone polish the finish
//
// Fully Remove the two supports inside the fipple window before testing and playing
//
$fn=48;
module make_shaft()
{
  difference()  // The first item is made and all other items below it are subtracted from the piece
  {
    translate([0, 0, 1])
      cylinder(d=16.5,h=45, center=true, $fn=75);  // Main body
     
    translate([0, 0, 1])
      cylinder(d=13.19,h=46, center=true);  // Hollow it out
     
    translate([-3.175, 0, 0.0])
      cube([6.55,20,37.02]);   // Cut out windway
   
    translate([0,-8.1, 17.7])
      rotate(a=90,v=[0,1,0], center=true)
        cylinder(d=24.00,h=43,center=true);  // Curved cut out in beak

    translate([-8.5,-16.1, 17])
      cube([17.0,20,37.02]);  // Flat back of beak for mouth/lip


// Create labium ramp from little angled pieces
    translate([2.3, 7.7, -5])
      rotate(a=-19,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([1.7, 7.9, -5])
      rotate(a=-17,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([1, 8, -5])
      rotate(a=-10,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([0.04, 8.06, -5])
      rotate(a=-2,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15.1]);

    translate([-0.92, 8, -5])
      rotate(a=5,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15.1]);

    translate([-1.79, 7.85, -5])
      rotate(a=11,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([-2.6, 7.6, -5])
      rotate(a=16,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([-3.26, 7.37, -5])
      rotate(a=19,v=[0,0,1], center=true)
        rotate(a=15,v=[1,0,0], center=true)
          cube([1,2,15]);

    translate([-12,-12, -35])
      cube([25,25,25]);  // Trim bottom
  }


  // This section makes the angled internal entrance for the shaft
  translate([0, 0, -9.6])   
  {
    rotate_extrude()
    {
      translate([8.22,-1.2,90])
        rotate(a=-88,v=[0,0,1])
          circle(d=3.73, $fn=3);
    }
  }

// Bottom coupler
  translate([0,0,-22])
  {
    difference()
    {
      cylinder(d=21,h=25.4,center=true,$fn=75);
      cylinder(d=16.6,h=25.42,center=true);
    }
  }


}

module fippleblock()
{
  difference()
  {
    cylinder(d=13.2,h=23.5,center=true);  // solid block

    translate([-3.275, -3, -11.76])
      cube([6.55,10,5.588]);  // cutout for windway internal ears

    translate([0,-8.1, 5.9])
      rotate(a=90,v=[0,1,0], center=true)
        cylinder(d=24.00,h=43,center=true);  // Beak curvature for block

    translate([-8.5,-16.1, 7])
      cube([15.0,20,37.02]);   // Flat lip surface for beak

  rotate(a=5,v=[1,0,0])
    translate([-3.275,6.6, -3.3])
      cube([6.55,1,15]);  // Flaten windway at entrance and eventually windway becomes curved
  }


}

// The shroud is the top wide part of the whistle that covers the windway and contacts the players mouth
module shroud()
{
  difference()
  {
    outercylinder();  // make the outer piece

    cylinder(d=16.49,h=23.6,center=true);  // hollow it out

    translate([-3.4, 5, -15.76])
      cube([6.55,10,9.588]); // makes outer ears around fipple and reveals window opening

    translate([0,-8.1, 5.9])
      rotate(a=90,v=[0,1,0], center=true)
        cylinder(d=24.00,h=43,center=true);  // This cuts out the beak back curve just like the other pieces

    translate([-11,-13, 6])
      cube([25.0,17,17.02]); // This flatens the bottom of the beak
  }   
}




// The fence, the .DXF image makes the shape of the fence, available on request
module trifence()
{
  scale(0.9)
    rotate(a=90,v=[1,0,0])
    rotate(a=90,v=[0,1,0])
    linear_extrude(height = 0.25)
        import (file = "trifence.dxf");
}


// The fence holds up the block at the entrance to the bore so that we don't have droopy lines
module fence(size)
{
  translate([0, 0, 0])
    cube([0.1,size,5.45]);

  translate([0, 0, 0])
    cube([0.35,size,5]);
   
}


module outercylinder()
{
  cylinder(d=22,h=23.5,center=true, $fn=93);  // This is the actual outer surface of the shroud
   
  translate([0, 0, -11.15]) // This creates an angled rise to the shroud since 3D printers don't like print angles and I don't want to use supports on the exterior
  {
    rotate_extrude()
    {
      translate([8.7,-1.2,90])
        rotate(a=-105,v=[0,0,1])
          circle(d=4.72, $fn=3);
    }
  }
}

//
// Make the whistle
//

make_shaft();

translate([0,0, 11.75])
    //translate([30,0, -23]) //***** Use if pieces made separately
//
// Now make the block
//
difference()
{
  fippleblock();

//
// This makes the chamfer on the end of the windway
//
  translate([-3.3,4.4,-6.95])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=18,v=[0,0,1], center=true)
        cube([1.0,1,2.5]);


  translate([-2.8,4.4,-7.15])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=18,v=[0,0,1], center=true)
        cube([1.0,1.5,2.5]);

  translate([-2.15,4.65,-7.2])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=12,v=[0,0,1], center=true)
        cube([1.0,1,2.5]);

  translate([-1.4,4.9,-7.2])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=6,v=[0,0,1], center=true)
        cube([1.0,1,2.5]);

  translate([-0.46,5,-7.2])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=0,v=[0,0,1], center=true)
        cube([1.0,1,2.5]);

  translate([0.5,5,-7.2])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=-6,v=[0,0,1], center=true)
        cube([1.0,1,2.53]);

  translate([1.4,5,-7.1])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=-12,v=[0,0,1], center=true)
        cube([1.0,1,2]);

  translate([2.2,5,-6.9])
    rotate(a=-45,v=[1,0,0], center=true)
      rotate(a=-18,v=[0,0,1], center=true)
        cube([1.0,1,5]);

}

// This is the bevel that joins the tuning shaft to the main body making it stronger at this point
  translate([0, 0, -7.15])
  {
    rotate_extrude()
    {
      translate([8.4,-1.2,90])
        rotate(a=-145,v=[0,0,1])
          circle(d=4.72, $fn=3);
    }
  }


//
// This produces the fence which keep the body of the block piece from drooping
// 
translate([-1.25,-6.6,-3.5])
  trifence();

translate([1.25,-6.6,-3.5])
  trifence();


//translate([-30,0, -23])  //***** use this other translate instead to reveal shroud separately
translate([0,0, 11.75]) 
  shroud();
 
  // That is it, the end.


Image

_________________
Email - YouTube - Ebay - Website $28 Low-D


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC - 6 hours


Who is online

Users browsing this forum: Cayden and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
[ Time : 0.108s | 12 Queries | GZIP : On ]
(dh)