差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
楽器をつくる:シーケンサ編 [2018/12/26 13:46] – [設計] baba | 楽器をつくる:シーケンサ編 [2020/06/20 11:28] (現在) – [発音] baba | ||
---|---|---|---|
行 106: | 行 106: | ||
} | } | ||
void update() | void update() | ||
- | { | + | { |
// マウスがボタン上にあるとき(ボタン押下処理) | // マウスがボタン上にあるとき(ボタン押下処理) | ||
- | if ( sqrt( pow(x-mouseX, | + | if ( dist(x, y, mouseX, mouseY) < size/2 ) { |
- | + | ||
// マウスボタンが押されている、且つ一つ前の状態では押されていなかったとき | // マウスボタンが押されている、且つ一つ前の状態では押されていなかったとき | ||
if ( mousePressed == true && previous_mousePressed == false) { | if ( mousePressed == true && previous_mousePressed == false) { | ||
status = !status; // falseならtrue, | status = !status; // falseならtrue, | ||
- | | + | |
// trueなら明るめのグレーにする | // trueなら明るめのグレーにする | ||
if( status == true ){ | if( status == true ){ | ||
行 124: | 行 124: | ||
} | } | ||
} | } | ||
- | | + | |
previous_mousePressed = mousePressed; | previous_mousePressed = mousePressed; | ||
} | } | ||
+ | |||
int x; // x座標 | int x; // x座標 | ||
int y; // y座標 | int y; // y座標 | ||
行 135: | 行 135: | ||
boolean previous_mousePressed; | boolean previous_mousePressed; | ||
} | } | ||
+ | |||
Button[] button = new Button[16]; | Button[] button = new Button[16]; | ||
- | + | ||
void setup() | void setup() | ||
- | { | + | { |
- | + | size(500, 500); | |
- | size(500, 500); | + | |
for ( int i = 0; i < 16; i++ ) { | for ( int i = 0; i < 16; i++ ) { | ||
button[i] = new Button(); | button[i] = new Button(); | ||
行 149: | 行 146: | ||
} | } | ||
} | } | ||
- | {{ : | ||
void draw() | void draw() | ||
{ | { | ||
行 160: | 行 156: | ||
</ | </ | ||
- | ここらで少しButtonクラスの記述が増えて来たので、別ファイルにクラスの記述を移します。クラスの記述部分をすべてButtonというタブに移します。 | + | ここらで少しButtonクラスの記述が増えて来たので、下記のスクリーンショットのようにクラスの記述を別ファイルに移します。クラスの記述部分をすべてButtonというタブに移します。 |
{{ : | {{ : | ||
====== タイムライン(自動演奏のための時間)機能を追加 ====== | ====== タイムライン(自動演奏のための時間)機能を追加 ====== | ||
- | では次にタイムラインを追加します。タイムラインは決められたテンポで順番にボタンのON、OFFに従って自動演奏を行います。そこでまず決められたテンポを算出するクラスとして、Metroクラスを作ります。常時このMetroをupdate()することで、指定テンポでtrueを返す設計にします。まずは次のようなクラスを作成します。下記コードは先程のButtonクラスと同様に、新規タブからMetroとして作成してください。 | + | 各ボタンのON/ |
<file .pde Metro.pde> | <file .pde Metro.pde> | ||
行 184: | 行 180: | ||
} | } | ||
int ms; | int ms; | ||
- | long ms_stamp; | + | long ms_stamp; |
} | } | ||
</ | </ | ||
行 300: | 行 296: | ||
* {{ : | * {{ : | ||
- | ではsound libraryを利用して、それらを読み込み、シーケンスのタイミングに合わせて発話するようにします。今回はCHH.wavを利用します。 | + | ではsound libraryを利用して(Minim Libraryでもよいですが,Version3以上からはsound libraryが公式の音を扱うライブラリになった為)、それらを読み込み、シーケンスのタイミングに合わせて発話するようにします。今回はCHH.wavを利用します。 |
<file .pde sq.pde> | <file .pde sq.pde> |