Music game fans from East Asia countries are most probable to know a famous game called Taiko No Tatsujin ([太鼓の達人](http://taiko-ch.net/)), developed by [Bandai Namco Entertainment](http://bandainamcoent.co.jp/).
This open-source program aims to help you develop your own **hardware taiko** at home, just like how you play taiko in arcade halls.
*This program is for personal and non-commercial use only. You may design your own taiko and have fun, but you may NOT distribute your product to the public.*
Because this is a DIY project, you should have some basic electronic engineering knowledge about connecting microprocessors with jumper wires on a breadboard. **Soldering techniques, however, are NOT required.**
It might take you a few days to assembly and configure your own taiko device. The microprocessor chips are cheap, though, you can buy them from wherever you want.
2. Using a breadboard is a low-cost option, but it is not the best/stablest choice. There is a PCB blueprint that allows you to print the integrated board and solder up. For details, please see "Making the PCB" part below.
4. Thick, solid, dense and heavy wood is the best choice, while plywood, particleboard and medium-density fiberboard (MDF) are fragile at their edges and can be easily damaged. For better experience, you should cut the planks with the shapes shown in [the picture](http://i.imgur.com/va20eVn.jpg). If you don't have the cutting tools and want it easier, just prepare 4 planks.
Each microphone module has 4 pins, and we only need 3 of them (`A0`, `+`, and `G`). Connect their `A0` outputs to Arduino Micro's `A0`~`A3` inputs, then connect their `+` pins together with module's `5V` pin, then the `G` pins together to the ground. Use the following picture if you have any problems.
To make the PCB, you can either DIY or ask local PCB manufacturer for help. If you choose DIY, you should prepare a few more things, including:
* 2.2 x 1.6 inches Empty PCB x 1
* Thermal transfer paper x 1
* Laser printer x 1
* Standard 4-pin header x 4
* Thermal transfer machine (or clothes iron)
* Etchant
* Soldering tools
Detailed process to make the PCB is totally off-topic, and you may need [this video](https://www.youtube.com/watch?v=mv7Y0A9YeUc) to help you. I have included the required printable board file `sanro.eps` in the `Eagle/sanro-arduino` folder. You can also download the scheme and board files and edit them by yourself with the [Eagle Software](http://www.cadsoftusa.com/download-eagle/).
3. Connect your Arduino Micro to your computer with a USB cable. The driver installation should be automatic, but if you have any questions about it, [check this official guide](https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro#toc8).
4. Open the `sanro` project in Arduino IDE.
5. Select "Board" - "Arduino/Genuino Micro" from the menu.
***WARNING: Because of the deviations between the microphones and the installation of the planks, you will spend much time adjusting the hardware and the parameters in the program. Be patient, there are lots of tries-and-errors up ahead.***
To accomplish them, you can remove the filter cover of the microphone receiver, then attach the receiver face (the microphones are usually cylindrical, like [the ones that I used in this project](http://i.imgur.com/gUWnUCc.png)) tightly to the surface of the plank, and seal it with superglue. In this way, the soundwave from the plank can be directly transmitted to the microphone, loud and clear. Also, noises and soundwave from nearby planks can be reduced to the minimum.
Also, please note that there is a potentiometer on the KEYES module, which is used to set the quiescent operating point (Q-point) of the microphone. Although I have implemented algorithms to eliminate the bias caused by unequal Q-point of each microphone, **it is better to adjust the potentiometer manually and keep the Q-points at approximately the same level.** To do this, you may need to contact your microphone provider.
Step 2, calculating the power of the waveform, can also enhance the signal to noise ratio (SNR), which can further eliminate the noises. `LIGHT_THRES` is also used here to cut the low-power noises out.
For Arduino microprocessors, the executing time for each loop is not stable - the processor always executes the instructions as fast as it can. Onece the loop ends, it immediately starts the next loop. This is extremely bad for sampling sounds. Therefore, the program implements a simple sampling frequency control mechanism to restrict the sampling frequency to no more than 1,000Hz.