ssb8 より
非常に分かりやすい説明、ありがとうございます。 波形を変更することができました。 PROGMEM、初耳です… Arduinoやプログラミングを勉強してCAmiDionのソースコードがスラスラ読めるように精進いたします。 ありがとうございました。
View Articleotto より
PWMDAC_Synthを使わせていただき電子オルゴールを作成中なのですが、操作方法が分からず困っています。 HandleNoteOn(1,60,128);HandleNoteOn(1,60,0); で音が消えるのかなと思っていたのですが… 作りたいものはatmega328のプログラムメモリに配列として入れておいたmidiデータがボタンを押すと演奏されるというものなのですが、...
View Articlekamide より
README.txtの「MIDI関数」のところに書いたとおり、現状のライブラリの実装ではvelocity=0のnoteOnを送ってもnoteOffとして扱うようにはなっていないので音は消えません。この場合は呼び出し側でvelocityが0の場合にHandleNoteOff()を呼ぶようにする必要があります。
View Articleotto より
質問に答えていただきありがとうございます。 error: ‘HandleNoteOff’ was not declared in this scope HandleNoteOff()を入力すると上記のような表示が出てしまいました。 代わりに以下のように打ち込んだのですが、 void loop(){ PWM_SYNTH.noteOn(1,80,128);...
View Articlekamide より
setup() の中で PWM_SYNTH.setup() を呼び出していますか? PWM_SYNTH.setup() では、タイマー割り込みの周期を最短にしたうえで、PWM出力の更新に必要な割り込み処理を有効化するといったことを行っているので、Arduinoのsetup() に必ず入れる必要があります。...
View ArticleKou より
はじめまして。最近こちらのライブラリの存在を知って、 MML オルゴールを制作しています。便利なライブラリの 公開ありがとうございました。上の記述で「Velocityでの 音量調整はできない」とありますが、それ以外の方法での 音量調整は可能なものでしょうか、可能な場合、それは チャンネル単位で指定可能なものでしょうか。 是非教えてください。
View Articlekamide より
ATMEGA328では性能的にきつそうなので、ライブラリレベルでの音量調整機能は特に用意していません。 現状これで6重和音を作っていますが、PWM出力のパルス幅の段階がわずか256段階(8bit)しかなく、 音量をADSRエンベロープで256/6=42段階で制御しているのが現状です。 さらにそこからデジタル的に音量調整によって下げると、10段階とか20段階というレベルにまで落ちてしまいます。...
View ArticleKou より
お返事ありがとうございます。演算がカツカツという事で了解しました。 となると、ATmega328P の 8HMz 内蔵クロックで動かすのもちょっと 難しそうですね。スタンドアロンの MML 電子オルゴールを作ってるの ですが、素直に外付けクロックで動かすことにします。ありがとうござい ました。
View Articleika より
こんにちは。初心者です。サンプルコードを見て色々プログラムしてみましたが、力不足で、どうもどのようにして音を出せばいいのかわかりません。「ド」の音を一回だけ出すというプログラムを教えて下さいませんか?
View Articlekamide より
PWM_SYNTH.noteOn(MIDIチャンネル, MIDIノート番号, ベロシティ); ・MIDIチャンネルは1~16、とりあえず最初の1でよいでしょう ・ベロシティは0~127、とりあえず127(最大) ・MIDIノート番号は0~127のうち12の倍数なら何でも「ド」です(オクターブが違うだけ) 48、60、72 あたりを使えば、聞こえる音域で鳴ると思います。...
View Articleboochow より
はじめまして。ATmega32u4ベースのゲーム機「Arduboy」に移植してみました。タイマーを1から3に変えるだけで素直に動作しました。 音色が簡単に作れるところが良いです!
View Articlekamide より
おぉ、Timer3,4まであるAVRがあったのですね! 手元にあるのがATMEGA328、Arduino Duemilanove相当のハードだけなのでTimer2までしか実装していませんでした…。
View Articlehissy より
はじめまして。全くの初心者ですが、PWMDAC_Synthを使って簡易的なシンセサイザを制作中です。 スイッチを使って波形を切り替えたいのですが、PWMDAC_CREATE_WAVETABLEで生成した波形テーブルの使い方を教えて頂いてもよろしいでしょうか。
View Articlekamide より
最新バージョンではMIDIのプログラムチェンジを実現できるようにするため、波形テーブルとADSRエンベロープパラメータをセットにしてInstrument構造体に束ねたもの(音色データ)を、下記のように特定のMIDIチャンネルに指定して音色を変更します。 PWMDAC_Synth::getChannel(MIDIチャンネル番号)->programChange(音色データ)...
View Articlehasiboso より
初めまして。kamideさんのこのライブラリを知り電子オルゴール的なものをArduinoUNOで作れないか実験中の初心者です。 当方のミスかもしれないのですが、millis()がうまく機能しないようです。 timer0に手を加えて自分でmillis()の代わりになるようなものを作るしかないのでしょうか。解決策のアドバイスをお願いします。 IDE 1.8.2 Rev.48db018...
View Articlekamide より
Timer0を使った割り込みに関連する設定を変えてしまっているとmillis()やmicros()に影響が出たりしますが、 PWMDAC_OUTPUT_PIN 9 で定義すると、PWMDAC_Synth.hの中で Timer1 を使うように定義されるので、関係なさそうに見えますね…。 このあたりを参考にするとヒントになるかも知れません。...
View Article