電音の工場ブログ

当ブログは…

自作エフェクターシンセサイザ製作のネタや開発覚え書きなど、筆者の電音活動を記録しています。お探しの記事が見つからない方は、検索カテゴリ一覧をご利用ください。

スパマーが来訪すると、ときどきコメントをはてなユーザのみに絞ったり開放したりすることがあります。

2013-01-04

新年の工作 ― LFO for FX rev.2

|  新年の工作 ― LFO for FX rev.2  - 電音の工場ブログ を含むブックマーク はてなブックマーク -  新年の工作 ― LFO for FX rev.2  - 電音の工場ブログ  新年の工作 ― LFO for FX rev.2  - 電音の工場ブログ のブックマークコメント

マイコン自作シンセに便利に適用しようという活動を行なってきた中で、機能をワンチップマイコンに詰め込むものをいくつか企画してきた(no title)。

それをエフェクタに適用したい、ギターエフェクタ用のコーラスフランジャをターゲットとしたLFO機能を担うワンチップソリューションが欲しいというインプットを大塚センセから頂いたのが2010年の1月(エフェクタ用8pin AVR LFO検討 - 電音の工場ブログ - E-Musicグループ)。約1年前に LFO for FX として形にすることができた。

そして大塚センセの試用を経て、追加仕様をいただいていた。

基板を途中まで作ったものの(うりゃ - 電音の工場ブログ - E-Musicグループ)、その後ずっと放置してしまっていた。

このままではイカンと巳年元日から仕様と実装を思い出す作業をして、基板の完成・コードの改修をこなし、なんとかいつもの例会に間に合わせることが出来た。

出来上がりが以下の写真。

http://25.media.tumblr.com/5e11061eb901ed882f49ccead093681c/tumblr_mg2pf6Tb7f1qzm0xlo1_1280.jpg

この実装はしばらく使っていただいて評価待ちということになるが、BBDを直接ドライブする信号を生成できるLFO一体のワンチップもテーマとして健在であり、こちらの開発も進めていきたいと考えている(http://emusic.g.hatena.ne.jp/Chuck/?word=%5BLFO%5D%5BBBD%5D)。

今年もよろしくお願いいたします。

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20130104

2012-02-15

うりゃ

| うりゃ - 電音の工場ブログ を含むブックマーク はてなブックマーク - うりゃ - 電音の工場ブログ うりゃ - 電音の工場ブログ のブックマークコメント

風邪が結構長引いて気合が戻るのに時間がかかってる。ここらで気合い入れツイート。ツイートじゃない記事ポスト。

上向きになっているこの勢いで以前、LFO for FX 完成 - 電音の工場ブログ - E-Musicグループ として形にしたエフェクタ用のLFOモジュールの追加仕様版も仕上げるぞ、と決意する寒い朝。

いただいている仕様は、

  • 出力波形は加工した正弦波だけでよいが、正相と逆相を用意する
  • 踏むと固定位相から始まるスイッチを2つ用意する
    • ひとつをONするとLFO波形が単調増加となり
    • もうひとつでは単調減少となる
    • (ほぼ)同時に押されたときの対策を入れる

新しい仕様にあわせてLFO波形テーブルROMを調整した。0~180°で波形が単調増加するようにして、180~360°で単調減少となるような位相の調整ね。

スイッチ部分は固定時間でサンプリングして状態変化(ON/OFF)を取得するのだけど、チャタリング・バウンスの時間がスイッチによってまちまちなのが悩みのタネ。とりあえずは「良い」スイッチを使っておいてソフトウェアの開発を進めておきますか。

ということでソフトウェア開発プラットフォーム作り開始しました。

f:id:Chuck:20120215043919j:image

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20120215

2012-01-30

よっしゃー

| よっしゃー - 電音の工場ブログ を含むブックマーク はてなブックマーク - よっしゃー - 電音の工場ブログ よっしゃー - 電音の工場ブログ のブックマークコメント

ハンダでちょいなちょいなするのはさくっと抵抗なく(いや、抵抗器は使いますよ)出来るんだけど、ケース加工やソフト開発とか準備とか開発環境を整えたりとかそういう段取りが深い奴に対しては腰が重いというか腰が痛いというか、腰が痛いので4000円のバランスチェアに手を伸ばしてみたら(いや、足か)意外と良かったなぁとかそんなこんなで、ここんとこプリアンプとかパルスパターンジェネレータとかAFレベルメータとか新作の試作とかやって、ハンダセラピーは順調な感じに推移して、よっしゃー、いっちょケース加工やソフト開発でもするかという方向を向きつつある。

数日前には秋葉原に行って、大塚センセ本、いわゆる ハンドメイドプロジェクト ver.3 に載っている Reverse DI を作るべく部品を買ってきた。ちょっと大きめの箱 YM-150 にうちに転がってたラグ板で組もうかな、と。大きい箱にしたくせに妙に土地をケチって XLR と TRS のコンボなコネクタなどを買ってきた。そして24mmのホルソーも。これでXLRは怖くない(ハズ)。

もう何年も放置していたFPGAのスターターキットを取り出してきてLEDやら7セグをピカピカさせて遊んだり(開発環境を整えるのに数時間かかりましたがね)。ピカピカはいいけど何作るか考えていないんだけど、まぁ任意波形ジェネレータとかFM音源とかかしら。

上向きになっているこの勢いで以前、LFO for FX 完成 - 電音の工場ブログ - E-Musicグループ として形にしたエフェクタ用のLFOモジュールの追加仕様版も仕上げるぞ、と決意する寒い朝。

ラスボスは暖かい布団。

おーつかおーつか2012/01/31 14:31新しいLFO,うふふ。楽しいなっ。

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20120130

2011-02-14

ここしばらく

| ここしばらく - 電音の工場ブログ を含むブックマーク はてなブックマーク - ここしばらく - 電音の工場ブログ ここしばらく - 電音の工場ブログ のブックマークコメント

ここんとこしばらくは部屋の整理に邁進しておるです。

で、部屋がまったく使えない状態、散らかりまくり。

そんななか、「みんなで自らの作業を見せ合う」という怪しい会が催され、行ってきた。そうやって場所と時間をひねくり出して使えない部屋からの逃亡。


実はDATも整理しようと思って出してきて、そしてソニーのDATプレイヤなんぞを持っているので処分するにあたって音を確認していたらやはり音質がいいので処分を取りやめてしばし常用しようと思った矢先に電池ボックスの蓋ツメをとめるプラスティックが割れてしまって、使うにも売るにもイマイチな状態になってしまったけれど、電源アダプタのジャックがEIAJ統一プラグ#1 だったものだから、作業会の前に秋葉原で買ってきて、合わせて単三2本の電池ケースも買ってきてアリゲータクリップで繋いで実験くん。見事にDAT動いて嬉しい。電池ケースに#1プラグをはんだづけして常用しようと思う。


BBDのドライバとLFOをワンチップにする件、実エフェクタではどうなっているのだろうか、ということで YAMAHA の PSE01シリーズ、FL-01 と CH-03 を持ち込んでオシロを借りてパルス計測。depth/rate/(manual) を振ってパルスの周波数を観測してきた。結果は後日。ただLFOがどんな波形で揺すっているのかはパルスを見ているだけではわからなかった。F/V変換器を作って調べてやる必要があるかなぁ。


ESM-2を箱入れしようと通販でタカチのFC-5-20-20を購入。事前に設計しておいて、作業会の現場でケがいてオプティカルセンターポンチの実演まで。しかしあれだ、他の人と話をしながらやっていたら穴をあけないはずのところにまでポンチしてしまった。ポカを避ける段取りが不十分だったなぁ。


これまた作業が止まっているギタマガの回路図採り。作業会はそれなりに集中できるいい場だったので持ち込んだが、時間切れ! くやしい、早々に回路図採取しなくては。

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20110214

2011-02-02

BBDドライバその後

| BBDドライバその後 - 電音の工場ブログ を含むブックマーク はてなブックマーク - BBDドライバその後 - 電音の工場ブログ BBDドライバその後 - 電音の工場ブログ のブックマークコメント

BBDのドライバの方は実機フランジャのCP周波数を測定しようということにして、しかし部屋が片付かないのでペンディングしている。今は作業するだけの土地がとれない…

実は来週信号処理関係者が集まって巣鴨でうだうだと遊ぶ会が開かれる予定なので、その場にフランジャコーラス(今手元にあるのはYAMAHAのPSE01シリーズのだな)を持ち込んでオシロを借りてその場で測ろうかと…

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20110202

2011-01-30

BBDドライバ w/ LFO さらに

| BBDドライバ w/ LFO さらに - 電音の工場ブログ を含むブックマーク はてなブックマーク - BBDドライバ w/ LFO さらに - 電音の工場ブログ BBDドライバ w/ LFO さらに - 電音の工場ブログ のブックマークコメント

ATtiny25/45/85内蔵のTimer1を使い、分周器のついた8bitのカウンタをPLLクロック(64MHz)で動かして、15Hz~16MHzまで矩形波生成できることがわかった(速報 - 電音の工場ブログ - E-Musicグループ)。さらに検討を進める。


前回こんな図面を出した。

とりあえずPCKの分周比とトグルモードのPWMにしてBBDドライブ用のパルスを生成するとこんな感じの周波数になりそうですよ、と。

f:id:Chuck:20110125160403p:image 大きいサイズはこちら

BBDドライバ w/ LFO - 電音の工場ブログ - E-Musicグループ

これは分周比をパラメータ(1, 2, 4, 8, 16)にしてOCR1C値(0~255)に対応するクロックパルスの発振周波数をグラフ化したものだ。logスケールで線形となっている。ちなみに分周比はさらに32, 64, ..., 16384 とすることができて、最も分周すると15Hzまで作ることができる(分周比16384)。


グラフの一本化

パラメータ化されたままでは逆関数の定義ができないし扱いづらいので、定義域をひとつに、グラフを一本化した。

入力を 0~4095 の 12bit に範囲拡張して以下のとおり定義域を場合分けしている。

入力範囲 IN分周比OCR1C値
0~255 (IN[11:8]=b0000)10~255 = IN[7:0]
256~511 (IN[11:8]=b0001)2128~255 = IN[8:1]
512~1023 (IN[11:9]=b001)4128~255 = IN[9:2]
1024~2047 (IN[11:10]=b01)8128~255 = IN[10:3]
2048~4095 (IN[11]=b1)16128~255 = IN[11:4]

これで散布図を描くと以下のようになる。

f:id:Chuck:20110131073422p:image 大きいサイズ

実機でも16MHzまでの発振を確認したが、まぁ、実際使う発振域は 10kHz~1MHz ぐらいでしょう。

ディジタル設定なので得られる値は離散的なものになります。16MHzの次は10.7MHz とか 1MHzの次は969.7kHzとかですね。ある程度OCR1C設定値が大きいほうが値間隔が細かくなります。分周比が1以外のところでは、入力範囲が分周比に応じて飛び飛びになる。例えば1024の次は、ここは分周比が8の領域であり、1032になる。入力範囲は表中のルールで丸められる(510も511も、分周比2、OCR1C値255となる)。

ところで当初使えると思っていたトグルは ATtny25/45/85 の Timer1 の CTC な PWM では使うことが出来ないとわかった。ということで、Fast PWM にせざるを得ないが、これにともなって duty 50% が保証できなくなる。ざっと10kHz~1MHzの範囲で 50%~50.77% になります(duty 最悪値は分周比1、OCR1C=64、OCR1A=32とした984kHz)。これもあまり問題にならないでしょう。CP1 と CP2 が同時にONして、アナログスイッチが筒抜けになることのほうが(音的に)イマイチでしょう。


入力設定値 対 得られる遅延量

クロックパルスの周波数で考えてもピンと来ないので、実際にBBDに適用したときの遅延量(単位 秒)を表してみた。

f:id:Chuck:20110131073424p:image大きいサイズ

入力設定値と得られる遅延量の関係は線形となっていることがわかる。

グラフ中で入力設定値の定義域は16~4095とした。入力設定値16はCPでは2MHzにあたる(その時の遅延量は1.024msec)。入力設定値4095では約260msecの遅延量が得られる。

入力設定値の分解能が最も細かい(分周比が1だから)定義域を16~255とした部分を拡大表示してみると、次の図のとおりとなる。入力設定値255では遅延量は16.32msec となっている。

f:id:Chuck:20110131073423p:image大きいサイズ


得られたグラフの逆写像を利用して、どれだけの遅延量が欲しい時の設定値はいくつにすれば良いか、ということがわかる。

今後は、実際のエフェクトで必要な遅延時間とその変化の度合いを調べ、マイコンで生成できるようマッピングアルゴリズムを考えていく。


ところで精度の話

今回のクロックパルスの生成は ATtiny85 の内蔵PLLに依っている。内部RC発振したものをPLLで逓倍して64MHzが出ているので、温特やら電圧特性やら影響を受けて発振周波数は変化するものと思われる。


ついでに電流値

ICEを接続した debug可能の状態、CPU停止、PLL/PWM系が動いている状況で実測 消費電流は12mAだった。debug可能状態では電流が多めに出るらしいとは聞いているが、現状こんなものということで。いずれ debug wire disabled の状態でも測ってみる。

2011-01-29

速報

| 速報 - 電音の工場ブログ を含むブックマーク はてなブックマーク - 速報 - 電音の工場ブログ 速報 - 電音の工場ブログ のブックマークコメント

ATtiny85 で 15Hz ~ 16MHz の矩形波生成を確認した(うちのオシロだと16MHzは鈍っているが)。二相のパルスが出力でき、さらにデッドタイムも付けられることも確認。しかもこれらはペリフェラルだけで出来て*1CPUはまるまる別のことができる。これならじゅうぶんBBDのドライバになると思われる。

あとは実際のコーラスフランジャに適用するなら Frequency / Depth / Manual と 生成パルス幅 とのマッピングを考える必要があります。

*1CPUが止まっていてもOK

おーつかおーつか2011/01/30 16:21素晴らしい!!
せっかく作っていただいたアンチログ出力付きLFOですが、これに期待して、組み込みはちょっと待ちます。なんつってもドライバが不要になるのが魅力!
16MHzまでは要りませんよ。多分BBDは動かんでしょ、高すぎて。
これまでの機材では、BBDクロックの最高は1MHzでした。だから2MHzくらいまで、矩形波がきれいに出れば、まったく問題無しです。
2MHzならナマらないですよね?
嬉しいな嬉しいな、っと。

ChuckChuck2011/01/31 11:54どうもです。1MHz、2MHzはしっかりした矩形波でしたのでイケルと思います。あとは揺する値範囲と揺すり方をどうしたものか…

2011-01-26

BBDドライバ w/ LFO

| BBDドライバ w/ LFO - 電音の工場ブログ を含むブックマーク はてなブックマーク - BBDドライバ w/ LFO - 電音の工場ブログ BBDドライバ w/ LFO - 電音の工場ブログ のブックマークコメント

BBDドライバ with LFO が、机上検討ではなんとなくいけそうな気がしてきました。


きっかけはtwitterだった。

Ganさんが、

synth-diy ML にウェーブテーブルオシレータつくるぜスレッドができててすげー面白そうなんだが…

Ganさんのツイート: "synth-diy ML にウェーブテーブルオシレータつくるぜスレッドができててすげー面白そうなんだがもう昼に切り替えねばならない。あと15分でメシおわらせてシャワーあびてヒゲそらんとならん"

とツイート*1していたので見てみたところから始まる。

最近目が疲れるので英語は苦しいのだが、ざっと1分でスキミングした理解によれば、ROMに波形データ書いておいて、MIDIノートのピッチに合わせて回して読みたい、マイコンを使いたいということのようだった。クロッキングはどうするんだ?というあたりから話がそれたのか、アセンブリ言語だ、FPGAだという話にも飛んでいた。残念ながらフェーズアキュームレータでDDSという話には行かなかったようであったので、私としては追跡をやめた。

いやー、ときどき読むデータを飛ばさないと高音で苦しいでしょう。真面目に1周期分のROMテーブルを全部読み出していたら高音ではずいぶんと高速クロックになってしまう。どうしてもやりたいならマイコンからはピッチ周波数を出して1周期分のアドレス数だけPLL LSIで逓倍したクロックでカウンタ回してアドレッシングするのが無難じゃね?とか思うわけであった。

しかしこの問題は、実は、私にも無関係とは云えない。

とはいえATtiny45BBDドライバを作ろうとすると似た問題に当たるんだよね。

Chuck Timberさんのツイート: "とはいえATtiny45でBBDドライバを作ろうとすると似た問題に当たるんだよね。 RT: @dennon_no_kouba: スキミングしてみましたが「うーん」な感じでした。 RT: @analog20: synth-diy ML にウェーブテーブルオシレータつくるぜスレッドが&quo

BBDモジュール - 電音の工場ブログ - E-MusicグループシンセBBDモジュールについて言及したが、そのなかでマイコンBBDドライバをできないかという点にも触れており、コメント欄でも燃料を投下していただいていた。記事を書いた時点では 10kHz から 1MHz までをひとつのスキームでやるのは難しいという印象だった。すなわち 分周したクロックアウト のやり方と タイマで割り込んでポートをON/OFF というやり方を発振周波数によって切り替えることになるかなぁと考えていた。

が、ちょっと考えればわかることだったが、Timer1 を PCK*2で動かして CTCモードにしておけば OCR1Cの値をトップ値としてカウンタをリセットできる。PWM A/B をトグルで使えば64MHzのクロックをカウントしてパルスを出せるはず。タイマに供給する PCKの分周比 と タイマクリアのトップ値(OCR1C) と コンペア値(OCR1AまたはOCR1B)をテーブル管理して、LFOの周期でゆすりながらPWMしてやれば 10kHz~1MHz が生成できるかも。PWMの波形生成はトグルモードにしてやれば値管理も楽。しかも OC1A/OC1A_n の二相出力だし、dead timeも付けられる。これらは全部マイコン内部のハードウェアモジュールがやるのでソフト側ではLFO関連処理に集中できる、と。

とりあえずPCKの分周比とトグルモードのPWMにしてBBDドライブ用のパルスを生成するとこんな感じの周波数になりそうですよ、と。

f:id:Chuck:20110125160403p:image 大きいサイズはこちら

さっそくテスト用にコードを書き始めました。

目下の問題は、LFOの周波数だけじゃなくて Depth と Manual もマイコン側で演算しないといけないね、というところ。幸いにも ATtiny48/85 は A/Dコンバータが豊富なのでピン数は足りる。ていうかぎりぎりぴったり。A/D 3本(Frequency, Depth, Manual)、CP1/CP2 (OC1A, OC1A_n)、電源、GND、RESET。8本ぴったり。

Depth と Manual の変化幅も問題で、結局 美味しい値はどうなのか、そのときクロックパルスはいくつだったらいいのか、といったあたりを探らなくてはいけません。

とりあえず手元にケースが壊れてなかばジャンクのYAMAHA PSE01シリーズ、FL-01 があるのでオシロで当たってみましょうかねぇ…

*1:twitterのstatusを引用するのに良い はてなモジュールはないのかしら?

*2PLLクロック、最高で64MHz

2010-12-28

LFO for FX 完成

| LFO for FX 完成 - 電音の工場ブログ を含むブックマーク はてなブックマーク - LFO for FX 完成 - 電音の工場ブログ LFO for FX 完成 - 電音の工場ブログ のブックマークコメント

いろいろあってぐずぐずしたけれど、先週末に(コンパクト)エフェクタ向けLFOビルディングブロック をとりあえず完成とした。

  • マイコンATtiny85を使用して、
  • 電源は+5V
  • 8-bit PWM出力をふたつ備え、一方は正弦波、もう一方は正弦波をアンチログに通した波形を出力する
    • それぞれ値は0~255に正規化してある
    • 波形テーブルのサイズはひとつあたり1Kbyte (8bit×1024)
    • 高いPWMキャリア周波数なので、PWMのフィルタはRCで簡単にしている
  • ひとつのピンをA/D変換に使い、0~5Vを与えるとそれに応じた周波数の波形となる
    • 0→5V : 0.125→32Hz
    • 対数変化表現用に 32bit×128 のテーブルを持つ
  • 空きピンにLEDを付けて周期を確認できるようにしてある
  • 全体のプログラム容量は 3Kbyte / 8Kbyte
    • ATtiny45にもインプリできる
    • もっとテーブルを持てる(要検討:切り替え方法)

使っていたデバイスで、検討の最後にデバッグモードから抜ける際に失敗してしまったのか、それ以降ツールと通信ができなくなってしまった。LFOとしての動作は問題ないのでこのデバイスは、これはこれとしてキープ。

もう一個焼いて試してみなくては。


「それ以降ツールと通信ができなくなってしまった」件

回路の負荷が重くてISPとして機能していないということだとわかった。ジャンパ線で切り離せばOKなはず。

おーつかおーつか2010/12/28 17:41良いですねぇ。早く使わせてください。
フランジャ、作りたいです。
ver.3の内容変更になるかもしれません(また延びる?)。

ChuckChuck2010/12/31 06:55では恒例の(?)「おーつかセンセを囲む会」でお渡しするのはいかがでしょう?グループの方で日程の相談をしましょう。

2010-12-25

LFO for FX 進捗

| LFO for FX 進捗 - 電音の工場ブログ を含むブックマーク はてなブックマーク - LFO for FX 進捗 - 電音の工場ブログ LFO for FX 進捗 - 電音の工場ブログ のブックマークコメント

できた…

詳細は追って。

トラックバック - http://emusic.g.hatena.ne.jp/Chuck/20101225