[Click here for English documentation](README.md) [中文文档在这里](README_zh-CN.md) ![Taiko Drum Controller](./images/banner-taiko.png) # 太鼓ドラムコントローラ - Arduino/ESP32 オープンソースのハードウェアプログラムで、自分の「太鼓の達人」PCコントローラーを作りましょう。 ## このプロジェクトについて このプロジェクトは、自宅で自分の**ハードウェア太鼓**を開発するのを助けることを目的としています。 *このプログラムは個人的かつ非商用のみで使用してください。* ## 必要なもの 1. Arduino MicroまたはLeonardoマイクロコントローラ(他の互換ボードも動作する可能性がありますが、キーボードエミュレーションをサポートしているか確認する必要があります); チェックアウトしてください "ESP32" ブランチを使う場合はESP32ボードを使用します。ESP32はATmega32よりも大幅に高速で、Bluetoothキーボードとしてコンピュータに接続することができます。 2. 4つの圧電センサー; 3. 必要な電子部品(ブレッドボード、抵抗器、LED、ジャンパーワイヤーなど); 4. 太鼓を一から作る場合は木材と切削ツール。市販の太鼓やビッグパワーLv.5ドラムを持っている場合は、それらを直接使用できます。 ## コントローラーを作る手順 1. 太鼓を作り、4つの圧電センサーを太鼓にしっかりと接着してください。センサーの好ましい位置については、画像を参照してください。 ![コントローラースキーム](./images/piezo_locations.png) 2. 圧電センサーと他の部品を次のようにコントローラーに接続します(圧電センサーの極性は関係ありません); ![コントローラースキーム](./images/scheme.png) 3. ファームウェアをボードにフラッシュします。 `SAMPLE_CACHE_LENGTH`、`HIT_THRES`、`RESET_THRES`、`sensitivity`などのパラメータを微調整する必要があるかもしれません。詳細は次のセクションを参照してください。 4. 楽しんでください! ## パラメータの調整 1. ヒットとリセットの閾値 `DEBUG 1`を設定してください(これによりキーボード出力が無効になり、シリアルポートからの信号値が送信されます)、ファームウェアをフラッシュし、太鼓の4つのエリアの1つでロールし、シリアルモニターからの出力グラフを視覚化します。ヒット閾値は太鼓での最も重いヒットより小さくなければならず、リセット閾値はロールヒットの間の波底より大きくなければなりません。リセット値もヒット値より下である必要があります。 残りの3つのエリアについてもプロセスを繰り返し、すべてに適合する最適な値を見つけてください。 ![コントローラースキーム](./images/tune_hit_reset.png) 2. サンプリング長 最大のランタイム速度のために、`cache.h`ライブラリは2のべき乗の`SAMPLE_CACHE_LENGTH`ウィンドウサイズで動作するように最適化されています。つまり、2、8、16、32などです。実際にはArduinoにとって16が最適な値ですが、少なくとも4000Hz以上の速度で入力をサンプリングする強力なマイクロコントローラを持っている場合は、よりスムーズ(つまり、ノイズが少ない)曲線のために値を32に変更できます。 3. 感度 すべての圧電センサーが同じではなく、設置エラーのために4つのセンサーから捉えられる信号は大きく異なる可能性があります。感度値は違いを正規化するための乗数です。次の例では、右ドンエリアが他の3つよりもはるかに高い値を生成しているため、`sensitivity`を`{1.0, 1.0, 0.5, 1.0}`に調整して問題を解消できます。 ![コントローラースキーム](./images/tune_sensitivities.png) センサーの設置が非常に重要です。センサーが木材にしっかりと取り付けられ、適切な位置にあることを確認してください。