openframeworks:ofxmaxim

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
of:ofxmaxim [2019/05/04 16:59] – [サイン波を鳴らすSimple Example] babaof:ofxmaxim [2019/05/05 09:05] – [MaximillianのExampleで学習する] baba
行 17: 行 17:
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
-440Hzのサイン波を鳴らすだけのサンプルコードを記載します.ただし openframeworksの場合は音を再生するためにaudioOut関数と一緒に組み合わせて使うことになります. audioOutに関しては openframeworksのExamples/sound/audioOutputExample を参照してください.audioOut()関数はすでにopenframeworks上でサウンドバッファーのCallback関数として登録されているので,audioOutの名前でないといけません.setup()では基本的にopenframeworksのサウンドデバイスに関する設定のみです.少しこの設定のコードが長いですが,システム上のデフォルトスピーカを自動選択するようにしています.こうしておくと開発のときに楽ちんです.+440Hzのサイン波を鳴らすだけのサンプルコードを記載します.ただし openframeworksの場合は音を再生するためにaudioOut関数と一緒に組み合わせて使うことになります. audioOutに関しては openframeworksのExamples/sound/audioOutputExample を参照してください.audioOut()関数はすでにopenframeworks上でサウンドバッファーのCallback関数として登録されているので,audioOutの名前でないといけません. 
 + 
 +setup()では基本的にopenframeworksのサウンドデバイスに関する設定がほとんどです.少しこの設定のコードが長いですが,システム上のデフォルトスピーカを自動選択するようにしています.こうしておくと開発のときに楽ちんです.デフォルトスピーカに関してはmacの右上タスクバーにあるスピーカアイコンをクリックすると一覧表示されるサウンドデバイスで,チェックが入っている箇所です.ちなみにaltキーを押しながらクリックすると出力/入力が一緒に表示されます.右図を参照してください.またデフォルトスピーカに対して設定可能な最も高いサンプリングレートと,設定可能な出力/入力チャンネルを設定しています.setup()最後の行では,設定されたサウンドデバイスと同じ設定にMaximillian側を合わせています.
 </WRAP> </WRAP>
  
 <WRAP half column> <WRAP half column>
-{{:of:スクリーンショット_2019-05-04_16.57.36.png?600|}}+{{:of:スクリーンショット_2019-05-04_16.57.36.png|}}
 </WRAP> </WRAP>
 </WRAP> </WRAP>
行 35: 行 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(); i++ ){     for( int i = 0; i < devices.size(); i++ ){
行 47: 行 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::sampleRate = sampling_rate;
 +    maxiSettings::bufferSize = buffer_size;
 } }
 +
 +
  
 void ofApp::update(){ void ofApp::update(){
行 72: 行 87:
         buffer[i*number_channels + 1] = outputs[1];         buffer[i*number_channels + 1] = outputs[1];
     }     }
 +    
 +
 } }
  
行 78: 行 95:
  
 <WRAP half column> <WRAP half column>
-<code ofApp.h>+<code cpp ofApp.h>
 #pragma once #pragma once
  
行 105: 行 122:
 </WRAP> </WRAP>
 </WRAP> </WRAP>
 +
 +===== PANを振る =====
 +上記サンプルを利用して,サイン波が右から左へ移動するプログラムに記述し直してみます.PANの設定は
 +  mymix.stereo(wave, outputs, 0.5);
 +の0.5の部分です.このパラメータを操作することで
 +  * 0: 左のみ
 +  * 0.5: 両方
 +  * 1.0: 右のみ
 +
 +という具合に音の左右の鳴りを変更することができます.そこで,次のようにmymix.stereoを変更します.
 +  mymix.stereo(wave, outputs, ofMap(osc_pan.sinewave(1), -1.0, 1.0, 0.0, 1.0));
 + ただし,osc_pan はまだ宣言されていない変数なので,ofApp.h にこの変数を下記のように追記しておきましょう.
 +  ofxMaxiOsc osc, osc_pan;
 +  
 +これにより,osc_pan を1Hzに設定し,その値を0.0, 1.0に変更してあげることで,0.5秒おきに音源が右から左,左から右へと移動する結果となります.
 +
 +===== MaximillianのExampleで学習する =====
 +以上を抑えて,あとはMaximillian のExampleで学習しましょう.先に紹介したMaximillianのGithubからファイル一式をダウンロードすると,ディレクトリ内にmaximilianTest.xcodeprojを見つけることができると思います.こちらをXcodeで開き,Source/main.cpp を修正することですぐに動作確認することができます.動作させる際はmaximilian_examplesディレクトリのコードをそのまま main.cpp にコピーすればOKです.
 +
 +{{:of:スクリーンショット_2019-05-05_8.38.43.png|}}
 +
 +<WRAP center round tip 60%>
 +ビルドの際,32bit に関するエラーが出た場合は下の画像にある通り,valid architectureからi386を削除してください.
 +</WRAP>
 +
 +{{:of:スクリーンショット_2019-05-05_9.04.30.png|}}
 +
  
  • /home/users/2/lolipop.jp-4404d470cd64c603/web/ws/data/pages/openframeworks/ofxmaxim.txt
  • 最終更新: 2019/06/06 08:53
  • by baba