はじめに
先日elchikaで開催された『2022年 SPRESENSE™ 活用コンテスト』にてギターを制作しましたので、
初期プロトの作成方法を共有したいと思います。
Arduinoについては情報が多いですが、Spresenseで同じようなことをやろうとすると、つまづくことも多いかと思います。
Spresenseを使って楽器を作ってみたい!、と思った方の第一歩になれば幸いです。
作るもの
タッチセンサーとスイッチを使った楽器を制作します。
ギターやバイオリン同様、左手で音程を決め、右手で音を出す方式です。
仕組み
- 音程のコントロール(左手):
- タッチセンサーの値をSpresenseのポートで読み取り、その値を周波数としてBeepライブラリに渡します
- 発音のコントロール(右手):
- スイッチのON/OFFをSpresenseのポートで読み取り、ONの間だけ音を鳴らします。
- また、ONの時にLEDを点灯させます。
必要なもの
- Spresense(本体、拡張ボード)
- PC
- USBケーブル
- タッチセンサー
- メーカー:spectrasymbol
- 型番:TSP-L-0300-103-1%-RH
- ブレッドボード
- 抵抗(2kΩ)
- ジャンパー線×9
- スイッチ(4本足)
- 赤色LED
- イヤホン
- 板(任意)
- マジック(任意)
事前準備
以下セットアップが終わっている状態とします。
具体的な作業方法は、参考文献1の第1章に沿って実施しました。
- Arduino IDE のインストール
- Spresenseの初期設定
- 拡張ボード取り付け
- Spresense用USBドライバーのインストール
- Spresense Arduino Board Packageのインストール
- Spresense ブートローダのインストール
作り方
1. 配線
以下画像のように接続します。
2. 組み込み
Arduino IDEを使用し、以下をSpresenseに書き込みます。
#include <Audio.h>
int LED_PIN = 13; // 13ピンをLEDに割り当て
int INPUT_PIN = 8; // タクトスイッチからの入力を8ピンに割り当て
int val;
int beep_switch;
AudioClass *theAudio;
//初回セッティング
void setup()
{
//シリアル通信。
Serial.begin(9600);
theAudio = AudioClass::getInstance();
theAudio->begin();
puts("initialization Audio Library");
theAudio->setPlayerMode(AS_SETPLAYER_OUTPUTDEVICE_SPHP, 0, 0);
pinMode(LED_PIN, OUTPUT); // LEDに繋いだピンを出力に設定
pinMode(INPUT_PIN, INPUT_PULLUP); // タクトスイッチに繋いだピンを入力に設定
}
//メイン処理(以下が無限ループする)
void loop()
{
val = digitalRead(INPUT_PIN); // 入力ピン(タクトスイッチ)の状態を読み取る
digitalWrite(LED_PIN, 1 - val); // 入力ピンの状態によりLEDの点灯・消灯
// アナログ入力をpotとして取得
int pot = analogRead(0);
int freq = 100 + pot/2; // ボトム100Hzにpot値を加えて音程を変化
if (val == 0){
// valが0の時、ビープをONにする
beep_switch = 1;
Serial.println(freq); //周波数をモニター
} else{
// valが0の時、ビープをOFFにする
beep_switch = 0;
Serial.println(freq);
}
// setBeep(ON/OFF,音量 0がmax, 周波数)
theAudio->setBeep(beep_switch, 0, freq);
// theNote(pos).timeだけ待つ。s→ms換算ため1000している。
usleep(100); // ms
}
3. 音程をメモ(任意)
タッチセンサーは音程のコントロールが難しいので、音階をメモしておくと演奏しやすいです。
板に固定し、マジックでメモするのがオススメ。
終わりに
無事、作れたでしょうか?
ここまでできると、色々なアイデアを試しやすくなると思います。
Spresenseを使って、面白い楽器を作っていきましょう!
参考文献
- Spresenseの初期設定
- 「SPRESENSEではじめるローパワーエッジAI」、太田義則
- タッチセンサーを使った楽器の作り方
- 「Arduinoではじめる手作り電子楽器」、中西宣人
- 『2022年 SPRESENSE™ 活用コンテスト』、elchika