
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


Examples
========

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


If you want to create your own custom instruments, you can create
subclasses of the instruments provided. Some examples of how to do
this can be found in the "examples" directory.







