
Demakein
======== 

Paul Harrison - pfh@logarithmic.net


Demakein is a set of Python tools for designing and making woodwind 
instruments.

This generally consists of two stages:

- The "design" stage is a numerical optimization that chooses the bore 
  shape and the finger hole placement, size, and depth necessary for
  the instrument to produce the correct notes for a given set of
  fingerings.

- The "make" stage takes a design and turns it into a 3D object, then 
  then cuts the object into pieces that can be CNC-milled or 3D-printed.

Demakein can either be used via the command "demakein" or as a
library in Python. Demakein has been designed to be extensible,
and I hope you will find it relatively easy to write code to
create your own novel instruments. You can either create subclasses
of existing classes in order to tweak a few parameters, or create 
wholly new classes using existing examples as a template.


Requirements
============

The "design" tools require nesoni. They should work on all platforms that
Python runs on.

- nesoni

  pip install nesoni

The "make" tools additionally require CGAL and associated paraphenalia.
I have only tested this on Linux.

- g++
- CGAL
- cmake

  apt-get install g++ libcgal-dev cmake

- cffi

  pip install cffi

Demakein has been tested under Linux. Other operating systems
may require some alterations to make the C++ compilation system
work.


Installation
============

Easy way

  pip install demakein

From source, download and untar tarball then

  python setup.py install

You can then run program by typing

  demakein

or

  python -m demakein


Example
=======

Create a small flute:

  demakein design-straight-folk-flute: myflute --transpose 12
  
  demakein make-flute: myflute

Files are created in a directory called myflute.

We've just made STL files for 3D printing. How about if we want 
to CNC-mill the flute?

  demakein make-flute: myflute --mill yes --open yes --prefix milling


