差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン両方とも次のリビジョン | ||
of:ofxmaxim [2019/05/04 16:48] – [最もシンプルなExample] baba | of:ofxmaxim [2019/05/05 09:05] – [MaximillianのExampleで学習する] baba | ||
---|---|---|---|
行 6: | 行 6: | ||
にて作者が詳しく発表している動画がありましたので,ここに共有しておきます.教育におけるツールキットとして考えているので | にて作者が詳しく発表している動画がありましたので,ここに共有しておきます.教育におけるツールキットとして考えているので | ||
- | Exampleが非常に基礎を抑えたいい内容になってるんですね. | + | Exampleが非常に基礎を抑えたいい内容になってるんですね.libpdに関しては,とてもusefulだけど幾らかのケースにおいて,over-engineered(過剰スペック)であるとも述べています.ofxPdもとても優れているので一長一短だと思います. |
===== ofxMaximとは ===== | ===== ofxMaximとは ===== | ||
ofxMaximはMaximillan をベースにしたopenframeworks用のaddonになります.Maximillan自体はC++のみで記載されてる波形生成ライブラリになります. | ofxMaximはMaximillan をベースにしたopenframeworks用のaddonになります.Maximillan自体はC++のみで記載されてる波形生成ライブラリになります. | ||
行 15: | 行 15: | ||
===== サイン波を鳴らすSimple Example ===== | ===== サイン波を鳴らすSimple Example ===== | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
440Hzのサイン波を鳴らすだけのサンプルコードを記載します.ただし openframeworksの場合は音を再生するためにaudioOut関数と一緒に組み合わせて使うことになります. audioOutに関しては openframeworksのExamples/ | 440Hzのサイン波を鳴らすだけのサンプルコードを記載します.ただし openframeworksの場合は音を再生するためにaudioOut関数と一緒に組み合わせて使うことになります. audioOutに関しては openframeworksのExamples/ | ||
+ | |||
+ | setup()では基本的にopenframeworksのサウンドデバイスに関する設定がほとんどです.少しこの設定のコードが長いですが,システム上のデフォルトスピーカを自動選択するようにしています.こうしておくと開発のときに楽ちんです.デフォルトスピーカに関してはmacの右上タスクバーにあるスピーカアイコンをクリックすると一覧表示されるサウンドデバイスで,チェックが入っている箇所です.ちなみにaltキーを押しながらクリックすると出力/ | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
<WRAP group> | <WRAP group> | ||
行 25: | 行 37: | ||
ofSetFrameRate(60); | ofSetFrameRate(60); | ||
| | ||
- | settings.setOutListener(this); | ||
- | settings.sampleRate = 44100; | ||
- | settings.numOutputChannels = 2; | ||
- | settings.numInputChannels = 1; | ||
- | settings.bufferSize = 512; | ||
- | |||
// set System Default Output Device | // set System Default Output Device | ||
+ | int sampling_rate; | ||
+ | int number_output_channels; | ||
+ | int number_input_channels; | ||
+ | int buffer_size = 512; | ||
auto devices = soundStream.getDeviceList(); | auto devices = soundStream.getDeviceList(); | ||
for( int i = 0; i < devices.size(); | for( int i = 0; i < devices.size(); | ||
行 37: | 行 47: | ||
cout << devices[i].name << endl; | cout << devices[i].name << endl; | ||
settings.setOutDevice(devices[i]); | settings.setOutDevice(devices[i]); | ||
+ | sampling_rate = devices[i].sampleRates[devices[i].sampleRates.size()-1]; | ||
+ | number_output_channels = devices[i].outputChannels; | ||
+ | number_input_channels = devices[i].inputChannels; | ||
} | } | ||
} | } | ||
+ | | ||
+ | settings.setOutListener(this); | ||
+ | settings.sampleRate = sampling_rate; | ||
+ | settings.numOutputChannels = number_output_channels; | ||
+ | settings.numInputChannels = number_input_channels; | ||
+ | settings.bufferSize = buffer_size; | ||
soundStream.setup(settings); | soundStream.setup(settings); | ||
+ | | ||
+ | // set Maximillian same as sound device setting. | ||
+ | maxiSettings:: | ||
+ | maxiSettings:: | ||
} | } | ||
+ | |||
+ | |||
void ofApp:: | void ofApp:: | ||
行 62: | 行 87: | ||
buffer[i*number_channels + 1] = outputs[1]; | buffer[i*number_channels + 1] = outputs[1]; | ||
} | } | ||
+ | | ||
+ | |||
} | } | ||
行 68: | 行 95: | ||
<WRAP half column> | <WRAP half column> | ||
- | < | + | < |
#pragma once | #pragma once | ||
行 95: | 行 122: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | ===== PANを振る ===== | ||
+ | 上記サンプルを利用して,サイン波が右から左へ移動するプログラムに記述し直してみます.PANの設定は | ||
+ | mymix.stereo(wave, | ||
+ | の0.5の部分です.このパラメータを操作することで | ||
+ | * 0: 左のみ | ||
+ | * 0.5: 両方 | ||
+ | * 1.0: 右のみ | ||
+ | |||
+ | という具合に音の左右の鳴りを変更することができます.そこで,次のようにmymix.stereoを変更します. | ||
+ | mymix.stereo(wave, | ||
+ | | ||
+ | ofxMaxiOsc osc, osc_pan; | ||
+ | | ||
+ | これにより,osc_pan を1Hzに設定し,その値を0.0, | ||
+ | |||
+ | ===== MaximillianのExampleで学習する ===== | ||
+ | 以上を抑えて,あとはMaximillian のExampleで学習しましょう.先に紹介したMaximillianのGithubからファイル一式をダウンロードすると,ディレクトリ内にmaximilianTest.xcodeprojを見つけることができると思います.こちらをXcodeで開き,Source/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | ビルドの際,32bit に関するエラーが出た場合は下の画像にある通り,valid architectureからi386を削除してください. | ||
+ | </ | ||
+ | |||
+ | {{: | ||