5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【自作】ArduinoとMozziでつくるクラドニ図形【簡単】

Last updated at Posted at 2018-10-11

#クラドニ図形とは?
BC6915DB-2529-4949-9471-EB8B44526322.jpeg
ハイレゾウォークマンの広告でも使われていたような。
出典: クラドニ図形 - Wikipedia
クラドニ図形は、ドイツの物理学者エルンスト・クラドニの名にちなんだ図形。

金属・プラスチック・ガラスなどのピンと張った平面にスピーカーなどで振動を与え音程を変えると、共鳴周波数において平面の強く振動する部分と、振動の節となり振動しない部分が生じる。
ここへ塩や砂などの粒を撒くと、振動によって弾き飛ばされた粒体が節へ集まることで、幾何学的な模様が観察される。

波長が短くなる(音が高くなる)ほど、現れる幾何学模様の構造も細かいものになる。
#使用ハードウェア・電子部品
###Arduino UNO x 2
ほとんどの種類のArduinoでなら、互換品も含め、動作するはず。
2台とも同じスケッチ(プログラム)を書き込む
###ステンレス板
音の減衰率を調べると、鉄、ステンレス、アルミの順に低いことが判明したため、手元にあったステンレス板を使った。
###ダイソー300円ステレオスピーカ x 2
スピーカは、アンプがある方がいい。
外を覆う黒い箱を外し、ステンレス板がたるまないように裏側に貼り付けた。
スピーカの詳しい特性はこちらから
スピーカーへは、USBで電源を供給する必要があるため、モバイルバッテリー等あれば。
アンプ基板のはんだ付けが杜撰なので、付け直したあと、グルーガンでガッチガチに。
###3.5mmステレオミニジャックDIP化キット: 半導体 秋月電子通商-電子部品・ネット通販
###ジャンパワイヤ
###ローパスフィルター用に330[Ω]抵抗と10[μF]コンデンサ
Mozziの弱点である、高周波ノイズを消すためにLPFを用意する。
遮断周波数はここから計算した。CRローパス・フィルタ計算ツール
そのほかでは、ノッチフィルタを使う方法も公式GitHubにて公開されている。
#使用ライブラリ
###Mozzi
オープンソースで配布されているArduinoの音響合成ライブラリ。
Mozziを使えば、正弦波だけでなく、矩形波や、和音合成、 ディレイなど多彩な出力が可能。
アイデア次第で、Arduinoでテルミンやシンセサイザーなどの電子楽器を作ることも可能。
詳しくはこちらから。 Mozzi.ws | Yoshihito NAKANISHI
#ArduinoでMozziを使えるようにする
GitHub - sensorium/Mozzi: sound synthesis library for Arduino
Mozziライブラリ本体をダウンロード、解凍して、ArduinoにMozziライブラリを追加
Screenshot 2018-10-11_19-32-34-538.png
Mozziは軽量化されたとはいえ、Arduino側で併用するセンサによっては、処理落ちするかも。
#回路図・組立図
Fritzingで思うようなイヤホンジャックがなかったため、画像を拝借。
Fritzingで思うような
下記のローパスフィルタを回路に挿入して高周波ノイズをカット(できてるはず…)
LPF回路図.png

#プログラム
それぞれの関数の意味はこちらを参照するとわかりやすい ArduinoのオーディオライブラリMozziの基礎 - Qiita

Chladni.ino
#include <MozziGuts.h>
#include <Oscil.h> // oscillator template
#include <tables/sin2048_int8.h> // sine table for oscillator
// use | Oscil <table_size, update_rate> oscilName (wavetable), look in .h file of table #included above
Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin(SIN2048_DATA);
// use #define for CONTROL_RATE, not a constant

#define CONTROL_RATE 64 // powers of 2 please

void setup(){
  startMozzi(CONTROL_RATE); // set a control rate of 64 (powers of 2 please)
  aSin.setFreq(440); // ここの周波数を変化させることで、異なる図形をつくることができる
}

void updateControl(){
// put changing controls in here
}

int updateAudio(){
  return aSin.next(); // return an int signal centred around 0
}

void loop(){
  audioHook(); // required here
}

#クラドニ図形
##220[Hz]
560414690.111327 2.jpg

##440[Hz]/真ん中のラ
IMG_4492 2.jpg

##880[Hz]
IMG_4490 2.jpg

##1760[Hz]
IMG_4493 2.jpg

意外とクッキリ出るんだな。スピーカの位置を工夫してみると面白くなるかも

#今後の展望
テルミンの仕組みを応用して、cdsセルを応用した動的なクラドニ図形も作ってみたい。

#追記
2018/10/12 LPFの回路を修正。

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?