Final Project


Make a Flute play music like a Flutist

What is flute??



Indian flute is a cylindrical wooden instrument played which has holes and can be played with the help of blow and fingers. As it is the instrument of Lord Krishna, it has religious importance too. when played correctly the sound Produced is melodious and liked by everyone.s

The “flute family” is the oldest Instrumental family in the woodwind category.

A flute in The Renaissance period sas a simple cylindrical wooden tube with a few finger holes and an embouchure hole.

Throughout the course of time, the structure and design of the instrument gradually changed and became more better.

I wanted to learn Engineering with my love of Music and love towards flute I decided to mix them and make a machine which will play flute automatically. my basic idea is to use Motors instead of fingers and a blower instead of blowing with mouth. This instrument can make a change and replace one person in the band and we would be able to play flute without learning how to play a flute.



CAD Design

1. Flute stand

This stand I made in my Week 3 assignment. For more details you can visit this page. I 3D printed the model and it was fitting corectly with the flute.
FluteStand

2. Servo Stand

I made one stand for servo in my Week 6 assignment which was not much strong to hold the servo. The servo got fixed in that stand but it didn't balance properly on the movement of servo motor so I designed a new one. In this design, I made a "+" base so that the stand gets fixed properly and doesn't move. I made the design in Fusion.
Commands Used:
  • Line
  • Extrude
  • Trim
  • Fillet
Steps :
  • Take the dimention of servo motor
  • Make a holder in the cad design
  • Make the holder a blit slant. From the upper side make it 1mm inside and make holding hatch so that the servo could fit easily in the bottom side
  • Measure the height of the flute and set the height of servo stand accordingly.






3. Fingers

Fingers for the holes of flute.



4. Blower

Blower for the flute. This blower can be used for your flute, if not approprialte you can make the nozzel according to your flute length. Cut the upper part and make a nozzel according to your flute.



5. Laser Cut Layout

This layout is designed in Rhino. There are different adjustments to be done for different kinds of flutes so instead of holes slots are given so that any adjustment can be made. This is the modified layout of the design which I made in my week 3.









Electronics Production

1. Milling Board

I modifed Satsha Kit and modified the design and made my own board. I used Eagle for modifying the design. I added 3 - 6 pin headersfor servo motor, 4 pin headerfor bluetooth and one USB for powerint my board.

SatshaKit

SatshaKit

SatshaKit

2. Embedded Programming

I used Arduino to program my board. Jimish helped me to program the board.
                                                                              
  #include <Servo.h>
  Servo servos[8];
  int openDegree  = 45;
  int closeDegree = 0;
  struct surHolder {
   String toOpen, toClose;
  };
  surHolder sur[] = {  
    {"567",   "234"},
    {"4567",  "23"},
    {"34567", "2"},
    {"234567","0"},
    {"0",     "234567"},
    {"7",     "23456"},
    {"67",    "2345"}
  };
  surHolder getSur( char c ){
    switch(c){
      case 's':
        return sur[0];
      case 'r':
        return sur[1];
      case 'g':
        return sur[2];
      case 'm':
        return sur[3];
      case 'p':
        return sur[4];
      case 'd':
        return sur[5];
      case 'n':
        return sur[6];
    }
  }
  void  openMotors ( String data ){
    int motorId;
    if( !data.equals("0") ){ 
        int l = data.length();
        for ( int i =0; i < l; i++ ){ 
          motorId = data.charAt(i) -'0';
          Serial.println(motorId );
          servos[ motorId ].write( openDegree );
      }
    }
  }
  void  closeMotors ( String data ){
    int motorId;
    if( !data.equals("0") ){ 
        int l = data.length();
        for ( int i =0; i < l; i++ ){ 
          motorId = data.charAt(i) -'0';
          Serial.println(motorId );
          servos[ motorId ].write( closeDegree );
      }
    }
  }
  void setup(){
    Serial.begin(9600);
    for ( int i = 0; i < 8; i++){
      if( i >= 2 ){
        servos[i].attach( i ); 
        delay(200);
        servos[i].write( 0 ); 
        
      }
    }
    delay(1200);
    Serial.println("Initialized zero degree");
    
    
  }
  char sargam[] = "s---r---g---m---p---d---n---s---";
  int surIndex = -1; 
  char currentSur;
  void loop(){
    surIndex ++;
    currentSur = sargam[ surIndex ];
    if(currentSur  == '\0'){
      Serial.println("done ");
      exit(1);
      }
    if( currentSur != '-'){
      Serial.print("new sur change to : ");
      Serial.println(currentSur );
      surHolder motorsToModify = getSur( currentSur );
      openMotors ( motorsToModify.toOpen );
      closeMotors ( motorsToModify.toClose );
    }else{
       Serial.println("continuning last.");
     }
    
    delay(250);
  }
           
                

Bill of materials

Default

Name Description Quantity Price(INR)
Servo Motor Used in place of fingers 6 720
Blower Used to blow air in the flute 1 50
3D Printed Flute Stand Pressfitting for holding the flute 3 120
3D Printed Servo Stand To hold the servo 6 240
Laser cut base Base of the flute 1 40
3D Printed Fingers For flute holes 6 120
3D Printed Blower Blow Air in FLute 1 60
Nutbolts (3mm) Screwing the Components 20 20
1370

Files