ニックネーム:faker1968
性別:男
年齢:1968年生まれ
都道府県:千葉県

»くわしく見る
Make:Japan に紹介されました
2012年01月18日(水)
Make:Japan に
マルチエフェクター製作の紹介記事が載りました

Make:Japan

他の記事を読んでみましたが
皆さん個人レベルで、いろいろとすごい物を作っているんですね
見習いたいものです



2012-01-18 01:00 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/38/
※ブログ管理者が承認するまで表示されません
SOUND SAMPLE
2012年01月09日(月)

遅くなりましたが
明けましておめでとうございます

今年もゆるい感じで更新していきたいと思います



現状での音サンプルを録音してみました
音だけを投稿する方法がわからないので
無駄に絵を入れて無理やり動画としています

順番に

1) Non Effect (スルー音)
2) Distotion のみ ON
3) Delay のみ ON
4) Flanger のみ ON
5) 全て ON

で音がでます

おなじみの曲の冒頭です
演奏技術自体は無視してください
(ここ、もっとも重要です)

録音はライン取りで行っています
音量調整以外の加工は一切行っていません





現状Flangerは
ちょっと不具合があるようで
微妙にしか効かせられません
気持ちよく効かせようとすると
バリバリと唸ります

DistotionもGainをかけるので
電源ノイズっぽいのが大きくなる
ノイズ対策もまだ必要ですね。。。

歪ませ方も気持ちよくするには
もっと工夫必要だなあ。。。





2012-01-09 02:34 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/37/
※ブログ管理者が承認するまで表示されません
Flanger/Chorus 再開
2011年08月17日(水)

ちょっとしたワケがありまして
更新がしばらく中断しておりました

ようやく再開

作業途中だった Flanger/Chorus ですが
LFO の Sin波 生成で処理負荷が大きくなり
どうにもならなくなったのが前回まで



いろいろ悩んだ結果

LFO を Sin波 => 三角波とすることにしました




上手にように音を揺さぶるための LFO を
赤線に変更しました

これなら sin()関数をコールしなくても良く
簡単な算術式で生成できるので処理は
はるかに軽くなります

現在デバック中ですが
LFO が三角波でも
それなりに Flanger/Chorus っぽく
聞こえます

もう少しです

2011-08-17 01:13 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/35/
※ブログ管理者が承認するまで表示されません
問題発生
2011年06月29日(水)

プログラム中の Flanger/Chorus ですが
デバック中に問題発生

・RAMがついに枯渇

   枯渇しそうとは書いていましがデバック中に無くなりました
   とりあえず
   Delay Effect の最大遅延量を 300msec => 250msec
   にすることで対処します

・処理負荷が許容超え

   サンプリング期間 25usec (fs=40KHz)内に
   処理しきれなくなりました

   音は変になるし
   コントロールパネルに処理が回ってこないので
   ロータリースイッチが全く効きません

   原因はこいつ
 


   LFO の発生の為に Sin波を生成する必要があるのですが
   sin()関数が予想以上に時間を食うようです

   sin()関数を使用せずにLFOを構成しなければなりません


完成まで、もう少しかかりそうです。。。。
   

2011-06-29 22:45 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/33/
※ブログ管理者が承認するまで表示されません
メモリが枯渇してきた。。。
2011年06月26日(日)

プログラム中の Flanger/ Chorus
大体できてきて現在デバック中

ただ

遅延用に 45msec分のメモリを確保したのですが
すでにRAMが枯渇しそうです





Flanger/ Chorus はなんとかなりそうですが
メモリを潤沢に使用するようなエフェクトの
今後の追加は無理そうですね


2011-06-26 21:36 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/32/
※ブログ管理者が承認するまで表示されません
Flanger/Chorus 構想
2011年06月21日(火)

Flanger/Chorus のブロック図です
たぶんこれで合っていると思う
あとは効率良くコーディングできれば動くはず。。。



基本はDelayです

図中の "Dx" とあるのは遅延素子
1つ通過するごとに1サンプル分遅延します
現状のソフトではサンプリング周波数は 40KHz になってるので
1 / 40KHz = 25 usec 遅延します

遅延した信号を"Selector"で選択して元信号と足し合わせます
"Selector"がどの遅延素子からの信号を選択するかを決めるのは
"LFO" = Low Frequency Oscillator です

低い周波数で選択箇所を移動させることにより
あの揺らぎ感を与えます
イメージ的にはこんな感じかと




縦軸は"Selector"が、どの位置を選択するかを示しており
横軸は単純に時間です

選択箇所が時間で移動することにより周波数変調がかかるようになります

図中にあるようにLFOの可変パラメータは

・Delay
・Depth
・Rate

の3つ
これに最初の図にある

・F.B. Level
・Effect Level

の合計 5つとします


L信号 = 元信号 + Effect信号
R信号 = 元信号 - Effect信号

とすることでステレオ化ができるのですが
残念ながら MBEDマイコンモジュールにはDACが1つしか無いので
今回は我慢です


構想が決まりましたので
これからはコーディングです






2011-06-21 22:22 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/31/
※ブログ管理者が承認するまで表示されません
次は Flanger/Chorus MBED エフェクター
2011年06月16日(木)

MBED マルチエフェクター
次は Flanger/Chorus を追加したいと思います

ソフトの構想思案中。。。

2011-06-16 00:55 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/30/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ使い方
2011年06月14日(火)

UIが完成したところで簡単に使い方です

ソースコードはMBEDのサイトにUPしてあります


何度か触れていますが
4つロータリースイッチで全てを操作します

●ロータリースイッチ1
 動作MODEを設定します
 1) PLAY : 通常の演奏
 2) EDIT : エフェクトパラメータの編集
 3) Prog Write : 編集したパラメータの書込

 ロータリースイッチの回転方向にて
 1) => 2) => 3) => 1)
 1) => 3) => 2) => 1)
 と変化します


●各Modeの説明

< PLAY Mode >
 通常演奏時のModeです

 ロータリースイッチ2 : Bank No. 指定
 ロータリースイッチ3 : Prog No. 指定

 とアサインされていて

 Bank 0〜9 , Prog 0〜9 の100通りの設定を呼び出します


< EDIT Mode >
 エフェクトパラメータを編集します
 
 ロータリースイッチ2 : エフェクトの種類を指定
               現在は DIST と DELAY のみ
 ロータリースイッチ3 : パラメータの項目を指定
 ロータリースイッチ4 : パラメータの値を設定


< Prog Write Mode >
 編集した(今、音の出ている状態の)パラメータを記録します

 ロータリースイッチ2 : 書込 Bank No. 指定
 ロータリースイッチ3 : 書込 Prog No. 指定
 ロータリースイッチ4 : 書込実施
               同一方向に1回転以上回転させることにより
               記録されます


●パラメータの記録場所

 パラメータの設定値はMBEDの外部からアクセスできるFLASH ROM
 に記録してあります
 (USBでPCとつないだときにマスストとして見える部分)

 その場所に "PRM.TXT" のファイル名で置かれていますので
 パネルのロータリースイッチでの編集が面倒な場合は
 PCから編集することが可能です


次回からは
処理が追いつく限りエフェクトを追加しています




2011-06-14 00:23 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/29/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ UI 一応完成
2011年06月13日(月)

ようやく形になりました
始めて2ヶ月以上も経過してしまいました

4つのロータリースイッチで、パラメータの変更
及び
プログラムパッチとして Bank 10 x Prog 10 = 100 の
パラメータが記憶、呼び出しができるようになりました



< 通常PLAY時 のLCD表示 >



    Bank と Prog の指定で 100通りのパラメータの
    呼び出しができます



< パラメータ編集時 のLCD表示 >



    各エフェクトの全てのパラメータを編集することが可能です



< パラメータ記録 のLCD表示 >



    編集したパラメータを指定の Bank, Prog に記憶することが可能です


2011-06-13 00:26 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/28/
※ブログ管理者が承認するまで表示されません
UI 最終段階
2011年06月11日(土)

エフェクトパラメータの全てが
4つのロータリースイッチから変更できるようになりました

あとは
それらをプログラムパッチとして
記録、呼び出しができるようにします

パッチはMBEDのUSB経由でPCからアクセスできる
FLASH領域に確保します

これで電源をOFFしても消えることがないですし
PCからもテキストエディタでパッチのパラメータが
編集できるようになる予定です

あと、もう少し。。。

2011-06-11 01:13 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/27/
※ブログ管理者が承認するまで表示されません
UI あとちょっと。。。
2011年06月07日(火)

4つあるロータリースイッチの処理
3つまで完了

あと1つインプリすれば
エフェクトパラメータが自在に変更できるようになるはず

あと
ちょっと。。。。

2011-06-07 02:05 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/26/
※ブログ管理者が承認するまで表示されません
UI 途中まで
2011年06月06日(月)

ロータリースイッチの処理
4つあるうちの2つまで(SW1 & 2)終了しました

残りあと半分

エフェクト処理のプリグラムの方が
全然楽ですね

早いところ済ませて
エフェクトの追加をしたいです




2011-06-06 01:51 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/25/
※ブログ管理者が承認するまで表示されません
LCD表示はこんな感じで
2011年06月02日(木)

肝心要のエフェクト処理から離れっぱなしですが
液晶の表示はこんな感じにしたいと思います

20X4文字ですので、そんなに情報満載にはできませんね





色分けしているところが各ロータリーSWで
変わるようになる予定です

 

2011-06-02 00:23 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/24/
※ブログ管理者が承認するまで表示されません
UI仕様はこうしよう MBED マルチエフェクタ
2011年05月31日(火)

いきなりオヤジギャグですいません

思いつきでなんとなくはじめたBlog
訪問していただける方があるのか疑問だったのですが
最低でも日に2桁の方々に訪問いただけているようです
感謝いたします

更新が滞っておりますが
気長に見守っていただければと思います


では、本題です

UI (ユーザインタフェース) の仕様です

エフェクトパラメータの変更等をパネル上の
4つのロータリースイッチだけで対応させます



将来的にはパラメータをパッチとして呼び出せるように
したいと思っています

今はまだ、歪系と遅延系の2つしかありませんが
SWへの割り当てを次表のように決定しました



これで雛形のプログラムを作成してしまえば
あとは簡単にエフェクトを追加していくことができます

ソースコードはこれから。。。


2011-05-31 00:04 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/23/
※ブログ管理者が承認するまで表示されません
Delay 処理を追加 MBED エフェクター
2011年05月20日(金)

仕事が忙しくてなかなか手がつけられない。。。

やっと Delay を追加することができました
歪系 + 遅延系 の2つになりましたので
これでやっとマルチエフェクタと堂々と言えます

仕組みについては既にいろいろなところで
公開されていますので、ここでは省略

メモリが潤沢にあるわけではなく
後々、変調系にもメモリが必要ですので
最大遅延時間は 300[msec] としました



取得した出力波形です
設定は遅延時間 300[msec] ,FeedBack量 50[%]
全弦ミュートして1発ストロークしたもの



300[msec] ごとに遅延した音が減衰しながら
出力されているのがわかります
実際の音もそれなりでいい感じです



前回のように処理負荷を確認してみます



Hi になっている区間が処理にかかっている時間で

歪系のみのときは 9.2[usec]
Delay追加して 9.6[usec]

わずかしか処理負荷が増加していません
まだまだ処理を追加できそうです


ちなみに現状ソースコードでのメモリ使用量



Delay用のバッファを大量に消費したせいで
RAMの残りが、だいぶ少なくなっています


本日までの状況では、Delayのパラメータが
パネルから変更できる状態になっていません

UIを考えて各エフェクトのパラメータを
変更できるようになったら
ソースコードを公開したいと思います

2011-05-20 00:32 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/22/
※ブログ管理者が承認するまで表示されません
処理負荷を確認してみた MBED エフェクター
2011年05月12日(木)

マルチエフェクト化の前に歪系処理だけでの
処理の負荷がどれくらいか確認してみます

タイマー割り込みで処理されている

・AD変換
・エフェクト処理(現在歪系処理のみ)
・DA変換

の3つの処理の始まりと終わりで I/O Port をトグルして
処理にどの程度かかっているかを確認してみます




Hi区間(約 9usec)が処理中になっています
現状サンプリングレートを 40KHz (25usec) にしているので
まだ処理的には余裕ありそうです

この波形が Hi になりっぱなしになったらサンプリングレートを
落とさざるをえません
エフェクト処理を追加するたびに確認していきたいと思います

それにしても
このプローブf特がイマイチですね。。。
やっぱり安物はだめか。。。






2011-05-12 00:24 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/21/
※ブログ管理者が承認するまで表示されません
仮ケースに入れてみた MBED エフェクター
2011年05月08日(日)

基板からイロイロぶら下がってきたので
裸のままでは、そろそろ扱いずらくなってきました

最終的には黒のアルミケースか何かに組み込みたいのですが
フットSW をどうするか決まっていない
パラメータ変更等のユーザインターフェースも決まっていない
でアルミケースが選べません

と、いうことで仮のケースに入れてみます

仮なので
当然コストはかけたくない
加工に時間もかけたくない

行き着いた先が、100円ショップ
CD用のケースを入手、カッターで1.5時間ほどで加工終了です
以下が完成品写真

まずは正面から



液晶は見にくかったので白色バックライト付き SC2004CSWB に変更しました


次に側面



側面にあるノブは入力 OPAMP の Gain 調整用です


次は背面



入力(左)と出力(右)のφ6.3ジャック


開けるとこんな感じ




これで不意な事故で線材が切れたり、どこかショートしたりする
心配は無くなり、扱いが非常に楽になりました

取っ手もついているので持ち運びも楽チンです

これから歪み系以外のエフェクトを追加して
マルチエフェクター化していきます

2011-05-08 23:01 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/20/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ パネル関係 その3
2011年05月07日(土)
ロータリーエンコーダの読み取りと
液晶表示のプログラムです

エフェクト処理はタイマー割り込みで動作しているので
その合間合間に処理されることになります

下図は入手したロータリーエンコーダの仕様です



この仕様がちょっと曲者

普通(?)の A,B ch が位相差をもって ON/OFF を繰り返すものと
勝手に思っていたのですが違うようです

定常状態では A,B ch は共に OFF状態
上図の縦線が入っている位置が定常位置

クリック位置から次のクリック位置の間に位相差をもって ON
クリック位置でまた OFF になる仕様のようです

検出は

C.W.  Ach OFF=>ON のときに Bch OFF
C.C.W. Ach ON=>OFF のときに Bch OFF

という具合にエッジ検出する必要があります

液晶部分については公開されているものを
そのまま利用させていただいています

プラグラム全体のソースコードはこちらに公開してあります

公開しているプログラムでは以前の記事での Clipping 方法も変更できるように
対応しています

・Pattern 1 の a = b と a/2 = b
・Pattern 2 の a = b

ということで変更できるパラメータは

1) Clipping Mode
2) Input Gain
3) Clipping Level
4) Output Gain

これらを4つのロータリーエンコーダにアサインしました



入力をコンパイルスイッチで内部信号に切り替えて取得した
波形が以下


< Dist Mode 1 (Pattern 2) >




< Dist Mode 2 (Pattern 1 a=b) >




< Dist Mode 3 (Pattern 1 a/2=b) >




これで歪系の機能としては一通りできたかと思います
歪具合を心地よくするために Clipping 方法を少し改善する
余地があるのですが、それは追々やっていきたいと思います

実際の音も公開したいのですが
どの方法が良いか検討中

2011-05-07 22:06 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/19/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ パネル関係 その2
2011年05月05日(木)
配線したので写真を

まずはロータリーエンコーダから
手持ちのL字ピンヘッダに半田付け、線材ちょっと長すぎか?





次に液晶モジュール
モジュールの基板に直接線材を半田付け
線材反対側にピンヘッダを半田付け
表示濃さを調整する半固定抵抗は表面実装用の物を使用
モジュール基板左側の端子部分に直接半田付けします
ケースに組んだら触れなくなりますが、一度調整したら
動かさないと思うので、この場所で良しとします





最後にメイン基板
MBEDモジュールの両側に上の2つを接続するためのヘッダーソケット
ロータリーエンコーダ用のプルアップ抵抗を追加しました

ジャック類への配線はノイズ面から同軸ケーブルに変更してあります





配線図はこちら






次回はロータリーエンコーダの検出と
そこからエフェクトパラメータへ反映させるソフト編です


2011-05-05 21:08 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/17/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ パネル関係 その1
2011年05月03日(火)

ケースに組んだときにパネルになる部分の製作です
とりあえずは回路図から


エフェクトのパラメータを変更するための
ロータリースイッチの回路図



回路図というほどの物ではないです
スイッチに直接線材を半田付けしてヘッダーピンとソケットで
基板とをつなぎます


パラメータ等を表示するための液晶周りの回路図




部品リスト
-------------------------------------------------
R41〜48  抵抗 10K
VR51 半固定抵抗 100K 表面実装用
SW41〜44 ロータリーエンコーダ RE160F-40E3
LCD 液晶 20x4文字 SC2004CSLB-XA-GB-K
--------------------------------------------------

ロータリーエンコーダ、液晶は例によって秋月電子で購入です

2011-05-03 16:54 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/16/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ 歪系 その2
2011年04月30日(土)

インプリができたので波形を見てみる
ギターの入力だとわかりにくいので、コンパイルスイッチで
内部信号に切り替える (1KHz Sin波)

まずはディストーションブロックの設定を
入力ゲイン 0dB, クリッピング電圧 3Vpp, 出力ゲイン 0dB
にしたもの

要はそのまま加工されずに出力される状態の波形




次は、クリッピング電圧を下げてみます



波形がクリップして歪んでいるのが確認できました
ギターに差し替えてもそれなりな感じになっています

処理はいたって簡単
歪を処理する関数内の記述はたったこれだけです

--------------------------------------------------

#define inputGain (1.0)
#define clipLevel (15000)
#define outputGain (1.0)

#define LIMIT_P (32767)
#define LIMIT_N (-32768)

int distotion(int iEffectIn) {

int iSignal;

// Input Gain
iSignal = iEffectIn * inputGain;

// Clip
if (iSignal >= clipLevel)iSignal = clipLevel;
if (iSignal <= -clipLevel)iSignal = -clipLevel;

// Output Gain
iSignal *= outputGain;
if (iSignal >= LIMIT_P)iSignal = LIMIT_P;
if (iSignal <= LIMIT_N)iSignal = LIMIT_N;

return iSignal;

}

--------------------------------------------------

プログラム全体はこちらに置いてあります
ソースファイル一式

このままでは歪具合やゲイン等の変更はプログラム自体を書き換えないといけません

次は液晶表示部とパラメータを変更するロータリースイッチを作成していきたいと思います

2011-04-30 23:04 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/15/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ 歪系 その1

やっと本題のエフェクト処理部分に入る
まずは歪系のディストーションから

ソフトの構成は非常に簡単で下図のとおり



1) 入力波形を増幅
2) 歪を出すためのクリッピング処理
3) クリッピングによって減少した波形を増幅

クリッピング部分については処理としてはいろいろあり
処理によって、オーバードライブ、ディストーション、ファズ etc...
と呼び名が変わるようではありますが、私がぱっと浮かぶのは
下図の2つ



これらはクリッピング部分の入出力特性を示したもの
クリッピング電圧である a,b をそれぞれ違う電圧に
することによっても倍音成分が変化して音色が変わります

まずは Pattern 1 で a = b の状態でインプリしていきます





2011-04-30 22:44 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/14/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ ベースプログラム
2011年04月27日(水)

何のエフェクトもせずに、ただ入れて出すだけの
基本的なプログラムを組んでみる

C言語のスキルはそんなに無いので
おかしいところもあるかも知れないけど
そこは愛嬌ということで。。。

サンプリングは 40KHz で設定
25[usec]ごとに割り込みをかけてAD入力とDA出力を
一定間隔で行うようにする

コメントアウトしてある

// Effect Func();

は、割り込み処理の中に入れてある
ここにエフェクト処理をする関数をCallするように
追加していきます

ただし
割り込み周期である 25[usec]以内に処理を終えるように
プログラムする必要があります
Mbedモジュールの実力とプログラマの実力(一番怪しい)が
発揮されるところです

同様に

// Parameter Setting Func()

の部分にはSWやロータリーエンコーダで
エフェクトのパラメータを変更する関数をCallするように
追加していきます

ここも
割り込み処理のあまった時間に回ってくるだけなので
うまく処理できるように工夫する必要があります

デバック用モードとして

#define TEST_SIGNAL_ENABLE (0)

のコンパイルSWを作っておきました
"0" の部分を "1" とすると AD変換をしたフリをして
Sin波を入力されたように振る舞います
周波数と振幅も変更できるようになっています

コレでギターつないでも一応音は出ています
これからエフェクト処置部分をコーディングしてく予定です

以下 ソースコード

見にくいので次回からソースコードは Mbed の Web に
公開していこうかと思います



/*****************************************************/
/* MBED MULTI EFFECTOR */
/* */
/* */
/*****************************************************/

#include "mbed.h"

Ticker sampling;
AnalogIn Ain(p17);
AnalogOut Aout(p18);

/*******************************/
/* For Test Signal */
/*******************************/
#define TEST_SIGNAL_ENABLE (0) // 1 : InternalSinWave for Debug
#define TEST_SIGNAL_FREQ (1000.0) // Frequency [Hz]
#define TEST_SIGNAL_AMP (30000.0) // Amplitude
#define PAI (3.14159)

/*******************************/
/* For ADC & DAC Setting */
/*******************************/
#define SAMPLING_TIME (25.0) // ADC Sampling Rate [us]

volatile unsigned int *g_usiAd0cr, *g_usiAd0dr2; // ADC Reg
unsigned int *g_usiDacr; // DAC Reg
unsigned int g_usiFinalOut;
short g_ssBuff;
float g_fTestWaveT;

/*******************************/
/* Effect Process */
/*******************************/
void effectProcess() {
// Line Out & In
*g_usiDacr = g_usiFinalOut;
// ADC Start
*g_usiAd0cr = 0x01200204;

#if (TEST_SIGNAL_ENABLE == 1) // Test Signal Sin Wave
g_ssBuff = TEST_SIGNAL_AMP * sin(g_fTtestWaveT) - 32768;
g_fTestWaveT = g_fTestWaveT + 2.0 * PAI * SAMPLING_TIME * TEST_SIGNAL_FREQ / 1e6;
if(g_fTestWaveT >= (2.0 * PAI))g_fTestWaveT = 0;
#endif

//
// Effect Func();
//

#if (TEST_SIGNAL_ENABLE == 0)
while(1){
if((*g_usiAd0dr2 & 0x80000000) != 0)break; // ADC Finish ?
}
g_ssBuff = (short)((int)(*g_usiAd0dr2 & 0x0000FFF0) - 32768);
#endif

g_usiFinalOut = 0x00010000 | (unsigned int)((int)g_ssBuff + 32768);
}


/*******************************/
/* MAIN */
/*******************************/
int main() {

g_usiAd0cr = (unsigned int*)0x40034000;
g_usiAd0dr2 = (unsigned int*)0x40034018;
g_usiDacr = (unsigned int*)0x4008C000;
sampling.attach_us(&effectProcess, SAMPLING_TIME);

while(1){

//
// Parameter Setting Func()
//

}
}

2011-04-27 23:28 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/12/
※ブログ管理者が承認するまで表示されません
基板側ノイズ対策
2011年04月24日(日)
ノイズ対策をいくつかやってきた
有効だった内容は下記の3点

1) 基板上 GND配線の変更
2) コンデンサ追加 4つ
3) 入力ゲイン決定用 VR ボディー底面にGND配線

上記3つを入れ込んだときのノイズ状況
前回 4/14 と同じ条件で測定、効果はかなり出ていると思われる
聴感上も大幅に良くなってきた



対策前はこれ




対策後の回路図
コンデンサ4つ追加







対策後の基板パターンで紫のパターンが今回変更ポイントです




オーディオに深い方なら、こんな対策ダメと言われそうですが
聴感上はかなり良くなりました
引き続きノイズ対策はやっていきますがソフト編に入りたいと思います


2011-04-24 03:06 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/11/
※ブログ管理者が承認するまで表示されません
MBEDモジュールのノイズ実力改善
2011年04月23日(土)

なかなか本質に入れない状況ではあるが
ブレッドボードにMBEDモジュールを移して
ADC のノイズの実力を確認してみることにする

MBED の 40pin の 3.3V 出力を 10K - 10K の抵抗で
電圧分割して ADC に入力する

GND側の抵抗には 100uF と 0.1uF のコンデンサをパラ付け


測定のためのプログラムは以前に試した ココ と同じ

結果はこの通り



スパイク状のノイズが乗っているのが見える
これではまだダメそうなので MBEDモジュール自体に手を入れてみる

ADC回路ブロックへの基準電位や電源の美しさが肝だと思う
モジュールの回路図 を見てみると 10uH と 1uF の LCフィルタを経て
供給されているようである

が、

見える限りの基板パターンではなんとも心細い感じがする

で、

試してみたのがこれ
LCフィルタの C 1uF にケミコン 100uF をパラ付け



元々ついているチップコンデンサの電極がはがれないように
LSIの上に厚手の両面テープをつけてケミコンを固定して半田付け


そして写真の状態で測定してみたのがコレ



なかなかいい感じになりました
使っているうちの振動や衝撃でチップの電極が剥離する可能性があるので
ケミコンの固定方法は別途考えなおす必要はあるかと思います

とりあえずこれで入力さえ美しく入れればそれなりの結果になる確証は得られたかと

次回は配線済みのユニバーサル基板の対策となります

2011-04-23 01:37 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/10/
※ブログ管理者が承認するまで表示されません
ノイズ がっ
2011年04月20日(水)

ノイズが減りません。。。

ブレッドボードにして基礎的な検討に
戻る必要があるかと。。。

決して放り投げているわけではありません

2011-04-20 01:05 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/9/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ 火入れしてみた
2011年04月14日(木)
半田付けした基板のチェックが済んで
いよいよ電源を投入。。。。。



ノイズ酷い

なんとなく予感はしていたのだが
ちょっと愕然
実用レベルとは程遠い感じ

Webでプロトダイバーズの追試をされている方々の
公開されている録音データと同じ感じ

きちんと半田付けすれば、そこそこ行くかと思っていたのは
甘い考えだったのを実感

明らかにMBEDモジュールが揺さぶっているようなノイズと
レコード聴くときのプチプチノイズと同じようなノイズがあります
(若者にはわからないかな)

最初に実用レベルにすると宣言しているので
ノイズ対策をしていこう

とりあえず対策の有効性を比較するために
簡単なソースで現状を把握する

以下 ソースコード

----------------------------------------------------

#include "mbed.h"

AnalogIn Ain(p17);
Serial pc(USBTX, USBRX);

int main() {
unsigned short sig[10000];
int i;

wait(10);
for(i=0;i<10000;i++)sig[i] = Ain.read_u16();
for(i=0;i<10000;i++)pc.printf("%d\r",sig[i]);
}

----------------------------------------------------

A/D Port から 10000回 連続サンプリング
終了したら PCへUSB経由でシリアル出力するもの

入力ジャックには Hot と GND ショートしたプラグを挿している
理想的には A/D変換後のデータは一定であるはず

それをグラク化したのが下



それなりにノイズが出ている感じ
グラフをはみ出している一箇所が、おそらくプチプチノイズの元で
1900mV程度ある

このグラフを基準に赤色の面積をなるべく少なくするように対策をしていきたい

早くファームウェア編に入りたいなと 。。。

2011-04-14 00:17 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/8/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ 入出力部
2011年04月12日(火)

残りの配線をする
MBEDと入出力のOPAMP回路の部分



MBEDとOPAMPはソケット使用して抜き差しできるようにしてみた

配線図では入力ゲイン調整用は半固定にしていたけど
ケースに組むとなると使い勝手が悪いのでボリュームに変更

ジャックとボリュームの配線は後でシールドケーブルに変える予定

夜も遅くなってしまったので
配線チェックと動確はまた別の日に

なかなか進まない。。。

このブログは誰か興味を持ってくれてるのだろうか?

2011-04-12 00:49 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/7/
※ブログ管理者が承認するまで表示されません
MBED エフェクタ 電源部作成
2011年04月09日(土)
部品がとどいたのでユニバーサル基板に半田付け
ユニバーサル基板はサンハヤト ICB-504

レイアウトは先日のパターンのとおり



一通り半田付け終了したところで
ACアダプタ接続して出力測定してみる
配線あってますように。。。。

D5V : 5.0V
A+5V : 5.3V
A-5V : -5.3V

無負荷なのでDC/DCの出力が若干高めですが
まあ問題ないでしょう

次はいよいよ MBED と OPAMP 部分

2011-04-09 14:25 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/6/
※ブログ管理者が承認するまで表示されません
Mbed エフェクタ 配線図
2011年04月07日(木)
大体回路図を書いたところで悩みどころがひとつ
基板をどうするか?

選択枝としては

1) 自分でエッチング
2) パターン図描いて業者へ委託
3) ユニバーサル基板で手配線



1)はエッチングする環境をそろえないといけない
 かつ廃液処理がとても面倒くさい

2)はWeb巡回してみると個人でもやっている方々が
 多くいらっしゃるようで、非常にあこがれます
 ノイズ等、性能を重視したい場合は絶対有利です
 でも、1枚しか必要ないのでコストが合わない。。。

という事で

3)に決定
 (結局はコスト重視、趣味なので)
 ノイズがひどかった場合は切った貼ったの力技で
 対応しようと思います

ユニバーサル基板はサンハヤト ICB-504を想定しての配線図
GND引き回しがかなり気に入らないですが、作って様子を
見てから次を考えようと思います

案無しのまま配線に入るとろくな事にならないので
一応 CAD で描いてみます
回路図は手描きが好きなのですがパターンは考えながら
修正していく作業が多いので

ToolはPCBEというフリーソフトを使用しました
ここからダウンロードできますVector PCBE

このようなToolを無償で提供していただけるのに感謝です


部品面視で
緑パターン : 裏面銅箔面パターン
赤パターン : 部品面ジャンパー






ここまで机上で毎日更新でしたが
部品入手までちょっと休憩

2011-04-07 00:06 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/5/
※ブログ管理者が承認するまで表示されません
Mbed エフェクタ アナログ入出力部
2011年04月06日(水)
本日はギターからの入力部とMbedからアンプへの出力部分

ほとんどここのパクリです
武蔵野電波のプロトタイパーズ



大きな違いは正負電源になっていることと、LPFのカットオフ周波数を
若干高めに設定しているところでしょうか


部品表
------------------------------------------------------
C23,24,27,30,31 : 積層セラ 0.1uF
C20 : 電解コン(無極) 10uF
C25 : 電解コン 10uF
C26 : 電解コン 100uF
C28 : 電解コン(無極) 100uF
C21,22 : ポリプロピレンフィルムコンデンサ 1000pF
C29 : ポリプロピレンフィルムコンデンサ 4700pF
R21,24,25 : 抵抗 10KΩ
R22,23 : 抵抗 8.2KΩ
R26,27 : 抵抗 2.2KΩ
R28 : 抵抗 1.8KΩ
VR20 : 可変抵抗 100KΩ
D20,21 : ショットキーダイオード 11EQS04
IC20,21 : OPAMP NJM4580DD
φ6.3標準ジャック x 2
------------------------------------------------------


最初のブロック図にはLCDとパネルSW類があったけど
これでとりあえず組み立て(半田付け)に入ろうかと

2011-04-06 00:43 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/4/
※ブログ管理者が承認するまで表示されません
Mbed エフェクタ 電源ブロック
2011年04月05日(火)
電源ブロックの回路はこんな感じにしようかと

MbedのADCはフルスケール3.3Vのようです
なるべくフルスイングで入れた方が良いと思うので
OP AMP用に±5Vを用意することにします

ACアダプタからRegで5V生成してMbedへ
並列にDC/DCへ入れて±5Vを生成してOP AMPへ



部品は秋月電子通商で入手予定

部品表
------------------------------------
C1,4,7,8,9,10 : 電解コン  100uF
C2,3,11,12 : 積層セラ  0.1uF
C5,6,7 : 積層セラ  1uF
R1 : 抵抗 1KΩ
L1,2,3 : インダクタ 220uH LHL13NB221K
IC1 : 5VReg TA4805S
IC2 : DC/DC MAU106
2.1mm標準DCジャック
ACアダプタ 9V GF12-US0913
------------------------------------


2011-04-05 01:33 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/3/
※ブログ管理者が承認するまで表示されません
Mbed エフェクタ ハードウェア構成
2011年04月04日(月)
ハードウェアの構成を考えてみる
そこそこ実用になる物にしたい

・きちんとケースに組む
・設定パラメータがパネルから設定できるように
・Mbed ADC 入力 D-Range を最大利用できるように

ということで構成的にはこんな感じかなと




2011-04-04 00:52 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/2/
※ブログ管理者が承認するまで表示されません
MBED マルチエフェクターできるかな?
2011年04月03日(日)
今更ながらBlog開設してみました
そのきっかけとして趣味としての電子工作を綴ろうと思います

でもって、見つけたのがこれ Mbed
クラウドでコンパイルできるという優れもの

学生の頃(ん十年以上前)と比べるとマイコン開発環境も
格段に敷居が低くなってることに驚きです

楽器用にエフェクタでも作れるんでは無いかと模索していたんですが
すでにDelayとしては公開されているようです 武蔵野電波のブレッドボーダーズ

2番煎じではつまらないのでマルチエフェクタに挑戦したいと思います
チップのパフォーマンス的には歪み系 + MOD系 + Delay系位はいけるのではと期待

細々とやって行きたいと思います



2011-04-03 02:24 | 記事へ | コメント(0) | トラックバック(0) | MBED マルチエフェクター |
トラックバックURL:http://blog.zaq.ne.jp/faker1968/trackback/1/
※ブログ管理者が承認するまで表示されません