
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
============

Python 2
- Linux:
    Use your package manager to install Python 2 and pip.
- Windows:
    This may or may not work:
    http://docs.python-guide.org/en/latest/starting/install/win/
    - install python 2 using the MSI package
    - install distribute using the linked script
    - install pip using easy_install
    I'm sorry this is so involved.
- OS X
    Probably possible, however I am not a Mac user.
    
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++
- cmake
- libcffi
- CGAL

  apt-get install g++ cmake libffi-dev libcgal-dev

- cffi

  pip install cffi


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


