Demakein: design and make instruments

homeblogmastodonblueskythingiverse



See also:
openwind, a more up to date Python library for wind instrument design from Université de Bordeaux.

chalumier, a Kotlin project using demakein as a starting point by MarkChuCarroll.

3D printed folk-whistle / penny-whistle

3D printed folk-whistle / penny-whistle

Alto tapered pflute, wood

Alto tapered pflute, wood

Tenor⁺⁸ folk shawm, ABS plastic

Tenor⁺⁸ folk shawm, ABS plastic

Alto straight folk flute, ABS plastic

Alto straight folk flute, ABS plastic

Alto shawm, ABS plastic

Alto shawm, ABS plastic

Soprano tapered folk flute, black strong and flexible

Demakein is software to design and make woodwind instruments using a 3D printer or CNC mill. The "design" phase determines the size and placements of holes, and shape of the bore. The "make" phase then translates this design into a 3D object, and segments it for printing or milling.

Built-in instruments include flutes, whistles, and shawms. These instruments are parametric, they can be transposed to the size you want and offer a variety of customization options.

If you're familiar with Python, it's also possible to design woodwind instruments to your own specifications by writing a short script. Several example scripts are included with the source code. For example you could design an instrument to play exactly the scale you want, or which had a novel fingering scheme.

# Getting Demakein
# Thingiverse
# Fingering charts
# Drinking-straw reeds for shawms
# How might I acquire one of these instruments?
# 3D printer advice
# Class notes
# Example milling pattern

Getting Demakein

Demakein is a Python 2 command-line program and library.

dowload from PyPI

or install with

pip install demakein

(see dependencies listed in the readme)

Source repository:

Demakein on Github

Note: As at December 2013, there is an issue with using CGAL on Ubuntu 13.10 x86-64. If the "make" components of demakein fail to find libboost correctly, see here for a workaround.

Thingiverse

If you're not into Python hacking and just want to print an instrument or two, check out the designs I've uploaded to the thingiverse.


Fingering charts


Drinking-straw reeds for shawms


How might I acquire one of these instruments?


3D printer advice

I currently print in ABS plastic with 4 layers of wall and 50% infill, using a Replicator 2X. The thick wall ensures there are no pinprick leaks in the instrument -- even a tiny hole will prevent the instrument from playing. High wall thickness and infill produces a better tone, presumably less energy is lost to the walls the more solid they are.

Welding pieces: Most instruments are too large to print as a single piece. My preferred method of joining pieces printed in ABS plastic is to weld them together with acetone. This is easily achieved by dipping the ends of pieces you wish to join in acetone for 15-20 seconds, then holding them firmly together. The pieces Demakein generates include guide prongs that will ensure the correct orientation of the pieces. Use appropriate safety equipment when using acetone (gloves, goggles, good ventilation, etc)!

I am not sure if a similar solvent is available for PLA plastic. If not I would suggest trying cyanoacrylate glue in gel form, or epoxy. The join must have absolutely no leaks.

Socketed joints: Sockets are not my current preferred way to construct instruments from multiple pieces, however if you insist they can be produced with the "--join straight" option. Often the head part of the instrument (whistle / flute / shawm) will produce sound, but when further pieces are attached it stops working. This is very probably a problem with the joints, even if there is no obvious leak.


Class notes

These are some notes on medieval and renaissance instrument making, with some practical discussion of trade-offs imposed by instrument physics (effects of tube shapes, hole sizes, bore deviations):


Example milling pattern

Milling two sides of a piece of wood to make a soprano flute. The holes in the corners are for anchoring pegs to ensure the two sides are aligned.




[æ]