develop開発と成長この広告は、90日以上更新していないブログに表示しています。2016-11-03ProcessingのblendMode()の使い方ProcessingProcessingではblendMode()で色を重ねたときにどう表示するかを決定するすることができます。これを使うと発光表現を簡単に作ることができるらしいのですが、いまいち公式リファレンスを読んでも何がどうなるかがわからず敬遠していました。今回はblendModeの設定だけを変えて同じものを描画し、色を重ねたときにどうなるかを検証してみました。BLENDBLENDはデフォルトの設定です。上段は3色を、下段は単色を重ねています。左側は背景が黒色、右側は背景が白色になっています。そのため、全部で4つの設定を比較しています。以下では、同じものをblendModeの設定だけ変えて描画しています。BLENDの場合は、alpha値を設定しないと色を重ねても上書きされるだけです。ADDADDでは、色を重ねるとどんどん白に近づいていきます。そのため、背景が白い場合は何も表示されません。ADDで色を重ねると発光表現になるみたいです。SUBTRACTSUBTRACTはADDと逆で、白からどんどん色を抜いていき、黒に近づいていきます。白に色を重ねた場合、表示されるのがその補色なので使用するのが難しそうです。DARKESTDARKESTは重ねたときに各RGB値の値が小さい方を新たなRGB値にして表示します。0)なので何も表示されません。LIGHTESTLIGHTESTはDARKESTと逆に、重ねたときに各RGB値の値が大きい方を新たなRGB値にして表示します。255)なので何も表示されません。DIFFERENCEDIFFERENCEは背景色と重ねた色の差をもとに新たな色を決定しています。EXCLUSIONEXCLUSIONはDIFFERENCEと同じ処理をしていますが、その処理がやや抑えめになっています。MULTIPLYMULTIPLYでは重ねると色が暗くなります。SCREENSCREENはMULTIPLYと逆で、重ねると色が明るくなります。これも発光表現に使えるようです。対照になっているようです。SUBTRACTとDARKESTは重ねた色の補色が表示されるので、感覚的に使うのは難しそうです。150)は以下のようになります。マウスクリックでblendModeの設定を変更することができます。Processing3で動作を確認しています。Processing2ではblendModeがうまく機能しませんでした。Processingで楽器を作ろうここではProcessingで音を扱うためのライブラリであるMinimについて解説します。スピーカーから音を鳴らすまずはMinimの基本的な使い方を確認していきましょう。次のコードはスピーカーから440Hzのサイン波を鳴らすものです。}}このコードを順に解説していきます。ddf.minim.effects.*;はじめにMinimのライブラリを読み込みます。これはメニューの次のところを選択することで自動で入力されます。oscil;次に音を鳴らすために必要な変数を宣言します。これらのクラスについては後ほど説明します。oscil.patch(out);}setup関数ではまず、Minimクラスのインスタンスを作成します。これはMinimを使う場合には必ず作成します。AudioOutputはMinimで音を出力するために作成します。Oscilは、サイン波や三角波、矩形波などの波を作成するためのインスタンスです。第1引数が周波数、第2引数が振幅(音量)、第3引数が波の種類です。このOscilをAudioOutputにパッチして(繋げて)います。これにより波を音としてスピーカーから出力できます。このパッチングがMinimでいろいろな音を鳴らす上での肝となります。引数を変更すると音程や音量が変化するのがわかると思います。Oscilで作成できる波の種類には以下のものがあります。}}draw関数内では、出力している音の波形をステレオの左右ごとに描画しています。ファイルから音を再生する今度は、ローカルにあるサウンドファイルをMinimを用いてProcessing上で鳴らしてみましょう。次のコードでは、マウスクリックでサウンドファイルを頭から再生します。サウンドファイルはソースファイルと同じディレクトリに置いてください。}}ファイルを再生するには、AudioPlayerインスタスンスをminim.loadFile()により作成します。mousePressed関数内では、はじめにrewind()でサウンドファイルの頭に再生位置を移動させ、play()で再生を始めます。AudioPlayerでは、同じファイルを何度も再生するにはrewind()でサウンドファイルを巻き戻す必要があります。マイクから入力した音をスピーカーから出力するPCについているマイクから音を入力して、それをそのままスピーカーから鳴らすコードです。}}マイクから音を入力するには、LiveInputクラスを使います。LiveInputを先述したAudioOutput型変数に直接パッチすることで出力しています。PCのスピーカーから音をそのまま出力するとハウリングする可能性があるので、その場合はイヤフォンを使うなどしてください。LiveInputとAudioOutの間に音を加工する処理を入れるとエフェクターになります。MinimにはLiveInputの他にAudioInputという音を入力するためのクラスがありますが、LiveInputのほうが入力した音を加工することが簡単にできます。Instrumentインターフェースを使う最後にInstrumentインターフェースの使い方を説明します。Instrumentインターフェースを使うことで音を鳴らす一連の処理をまとめることができます。以下のコードでは、マウスクリックに応じてドレミを鳴らします。}Instrumentインターフェースはimplementsで自作クラスに継承します。自作クラスにはnoteOn関数とnoteOff関数を作成する必要があります。noteOn関数は音を鳴らし始めるときに行うパッチングなどの処理を書きます。noteOff関数は音を鳴らし終えるときに行うパッチを外す処理などを書きます。このように作成したクラスはplayNoteメソッドに引数として渡します。playNoteメソッドの第1引数はnoteOnを始めるまでの時間(秒)、第2引数はnoteOnを始めてからnoteOffで終わるまでの時間(秒)です。第2引数はnoteOn関数に渡される引数(duration)になります。この記事はProcessingで楽器を作ろうの第1回目です。Processingで楽器を作ろう最近、ProcessingのMinimとControlP5で楽器を作っています。Processingこのノウハウを折角なので、まとめていきたいと思います。MinimはProcessingで音を扱うためのライブラリです。Minimを使うことで、ファイルから音を読み出して再生したり、音を合成して鳴らすことができます。CompartmentalControlP5はProcessingでGUIを作成するためのライブラリです。通常、Processingで入力となるのはマウス位置やクリック、キーボードくらいです。それだけだと複雑な楽器のパラメータを扱うには貧弱すぎます。ControlP5で作成したGUIからパラメータを操作できるようにすると楽器の操作性を上げることができます。controlP5以下が内容の予定です。MinimとControlP5の基本的な使い方から初めて、最終的にはリズムマシンやシンセサイザーを作りたいと思います。【第3回】Processingでキーボードを鍵盤にする【第4回】Processingでサンプラーをつくる【第5回】Processingでエフェクターをつくる【第6回】Processingでリズムマシンをつくる【第7回】Processingでシンセサイザーをつくる動作はProcessing2で確認していきますが、たぶんProcessing3でも動くと思います。15:58Processingで楽器を作ろうTweet広告を非表示にするもっと読むコメントを書く2016-10-15ProcessingでパラメータをGUIで操作できるBoidsProcessingProcessingでパラメータをGUIで操作できるBoidsを作成しました。Boidsはパラメータが多数あるので、これでパラメータの影響がわかりやすくなると思います。Boids自体は、前に作成した3D版と同じようにProcessingのSampleにあるFlockingを参考にしています。GUIはControlP5を用いています。develop操作可能なパラメータは以下のとおりです。点で表示するProcessig3での動作を確認しました。Processing2では、fullScreen()をsize()に変更すれば動くと思います。3DProcessingで3DのBoidsを作成しました。群れをつくって3D空間を飛んでいます。基本的にはProcessingのSampleにある「Topics/Simulate/Flocking」を3Dになるように書き換えただけです。AGENTS」で解説されています。Processing3で動作確認済みです。Processing2ではfullScreen()を使えないので、size()を使ってください。OpenProcessingにも上げておいたので、ブラウザでも見ることができます。OpenProcessingBoidsはパラメータで挙動がいろいろ変わると思うので、次はGUIでパラメータを操作できるようにしたいと思います。21:59Processingで3DのBoidsTweet広告を非表示にするもっと読むコメントを書く2016-10-04ProcessingのlerpColor()でグラデーションを作るProcessingOpenProcessingでlerpColor()という便利な関数を教えてもらったので、メモ代わりにまとめておきます。OpenProcessinglerpColor()は簡単に言うと、lerp()というある2つの値の間を0.0〜1.0の比率で指定して取得することができる関数の色版みたいなもの。横方向に変化するグラデーションを作るには、以下のように書く。height);}これを、lerpColor()を使わずに書くとこうなり、RGBを分割してそれぞれ計算しなければならないため、若干めんどくさい。height);}以下、lerpColor()を使って、いくつかのグラデーションをつくってみた。}}lerpColor()のリファレンスはこちら。音楽ドラム音の合成についてわかりやすい動画があったので、自分用にまとめておきます。基本的には、ピッチとボリュームにエンベロープをかけた正弦波か三角波と、ボリュームにエンベロープをかけたノイズ音を足し合わせて、それぞれのドラム音をつくっているようです。ノイズ音には、ハイパスフィルターをかけて、高音部だけを使うこともあるようです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。