BBD使用エフェクタについて

はじめに、ここではBBD自体の原理についての説明は他に譲って、
BBDを使用した揺れモノエフェクタについての動作機序を重点的に
説明したいと思います。

BBDを使用したエフェクタの場合、
BBDに送るクロックでバッファの出し入れを制御するわけですが、
クロックを一定とした場合には、単純にバッファに信号が入ってから
出るまでの時間(=バッファのステップ÷クロック周波数)だけ
入力信号が遅延して出力されるディレイとして働きます。

このバッファのステップについてはBBDの品種によって異なります。例えば、
MN3005/3205やSAD4096は4096ステップ
MN3008/3208は2048ステップ
MN3007/3207は1024ステップ
MN3010やSAD1024は512ステップ×2系統

このときクロックの速さを変化させると、出力される音程も変化します。
例えばアナログディレイの場合、ディレイタイムのツマミでクロックの速さを設定しているので、ディレイ作動中にこのツマミをひねると、実際に音程が変化する様子が容易に確認できます。

とはいえ、無限にクロックを速く/遅く変化させ続けるというのも無理な話(説明については下記<クロックの速度変化と音程との関係>参照)なので、次に、LFOによりクロックの速さを(適正なクロックの範囲で)周期的に変える(FM変調)ことが考えられるようになったのだと推測します。
それがコーラス/フランジャー(あとBossVB-2Vibrato等)と呼ばれるエフェクタです。

コーラスとフランジャーの違いは本質的にはあまりなく、
コーラスにおけるディレイタイムが30〜60ms程度なのに対して、フランジャーのディレイタイムは0.5〜10ms程度であること、フランジャーにはコーラスにはあまり見られないフィードバックの機能がついていることぐらいになります。

なお、一部のフランジャーでは、ディレイタイムを最小 かつ LFOの振幅を最大にした場合、LFO波形の頭でBBDの動作不良が認められる(ノイズが出力される)ことがあります。


ce2.gif
実際のコーラスの回路において、BBDのクロックをLFOでモジュレートする方法は歴史的には幾通りかあるようですが、ここではBOSS CE-2で初めて採用されて現在ではコーラス回路のデファクトスタンダードになった(ような感のある)"双曲線VCO"回路(上図)の場合を中心に、LFOの波形と音程変化の関係を考えたいと思います。


Genri1.gif
双曲線VCO回路において上図のようにLFOの波形(=クロック周波数の変化)を
sin波にすると音程の変化はcos波になり(→音が揺れるコーラス)、
三角波にすると方形波に(→音の揺れがないコーラス)、
ノコギリ波にするとグリッチを含んだ直線に(→(グリッチの大きな)ピッチシフタ)、
方形波にするとパルス波(→(グリッチの大きな)ディレイ。意味なし!)となります。

以上より、クロックの速さと音程の変化との間には、微分(差分?)の関係が認められる事となります。(この辺もう少し突っ込んだ議論は、下記<双曲線VCO回路におけるLFOの波形と音程変化の関係>参照)

ちなみにBossのコーラスは、LFOの波形をきれいな三角波にすることで、BBDの出力の音程が(コーラスの出音も)揺れるのを防いでいるとの話です。


Genri2.gif
ここで、2系統のBBDを並列に用意してそれぞれに位相の反対な三角波を送った場合、それぞれのBBDの入力が同じならば、上図のように出力の音程変化は互い違いの方形波になりますが、それら出力をミックスした場合、結果的に一定の音程で上下にデチューンされたふたつの音になります。これがいわゆるディメンションの原理です。

またデチューンされた音の片方だけ取り出せば、上のノコギリ波の場合よりはグリッチの少ないアナログハーモナイザになります。

<クロックの速度変化と音程との関係>
クロックの初速度をf0(Hz)とすると、1クロック(1ステップ)あたりかかる時間は1/f0秒になります。使用するBBDのステップ数をSとすると、音程がh倍になるためには、Sステップ後にクロックがh倍(Sステップ後の1クロックあたり時間は1/h倍)になっている必要があります。
よって、1ステップごとに1クロックあたり時間は1/h1/S倍になる計算になります。

ここで、トータル経過時間Tと、時間Tだけ経過した時の周波数f(Hz)を考えます。

T=1/f0+1/h1/S・1/f0+1/h2/S・1/f0+・・・+1/h(n-1)/S・1/f0
=(1-1/hn/S)/(1-1/h1/S)・1/f0
(等比級数の公式を使用)

このとき、1/f=1/f0・1/hn/Sなので、

∴T=1/(1-1/h1/S)・1/f0-(1/hn/S)/(1-1/h1/S)・1/f0
=(1/f0-1/f)/(1-1/h1/S)

f→∞のとき、T→(1/f0)/(1-1/h1/S)となり、有限の値に収束してしまいます。つまり、ずっと周波数をh倍し続けるという方法によるピッチシフトは、原理的に有限時間しか持続しないことになります。
(逆に、ずっと周波数を1/h倍し続ける方法によるピッチシフトは、いずれ入力信号がBBDを通り抜ける時間が∞になってしまう)

例えば、初速度f0=10kHz,音程2倍、BBDステップ数1024のとき、
T=(1/f0-1/f)/(1-1/h1/S)=0.147(秒)以上ピッチシフトを持続させることは理論上できません。

まあ、BBDのクロック周波数にも上限/下限周波数があるので、無限に周波数を上げ続ける(下げ続ける)ことなどもちろんできるわけがないのですが。


<双曲線VCO回路におけるLFOの波形と音程変化の関係>
ce2.gif

LFOによるCVはQ4でバッファリングされ、電流逆流防止用のダイオードD1を経てインバータの入力(MN3101の7ピン)の下限電位を決定します。電源電圧とこのCVによる下限電位との電位差 および R38で決まる電流が、C22に充電されます。なお、この回路のクロックジェネレータMN3101の縦列インバータ(シュミットトリガ)とC22は、リセット型VCOを構成しています。
 流れ込んだ電流がC22に充電されることにより、インバータ入力の電圧が上がります。この電圧がシュミットトリガのしきい値を超えると、出力(MN3101の5ピン)がHの状態になります。出力がONになると、Q5がONしてコレクタ電位が下がり、D2が導通してC22に溜まった電荷を放出して、結果的にインバータ入力が下限電位にリセットされ、出力もLの状態にリセットされます。

graph01.gif

この一連の動作におけるインバータの入力(MN3101の7ピン)の状態を図示したのが上図のグラフ上側です。aの傾きは単位時間あたりの充電量で、電源電圧とR38で発生する電流 および C22により決まります。(もちろんインバータ入力の電位が上がってくるとR38の両端にかかる電圧が下がるため、aの傾きもなまってくるはずですが、電源電圧がしきい値に対して十分高いならば、aはほぼ一定であると考えてしまってもよいように思います。)
充電により電圧がONしきい値V0を超えると、シュミットトリガの反応時間だけ遅れてQ5のベースに電圧がかかり、その後Q5のON時間だけ遅れてC22が放電されます。C22の放電により、入力の電圧がOFFしきい値を下回ると、出力は0Vにリセットされます。この一連の動作におけるシュミットトリガ出力は、グラフ下側のようなt0の幅をもったパルス波になりますが、外部からのCVがない場合は、上記の要因のみでこのパルス間隔tn(発振周波数の逆数)が決まります。

tn=V0/a+t0

graph02.gif

外部からのCVがある場合、 発振周波数f0≫LFOの周波数 ならば1サイクルを考えた時のCVの電位はほぼ一定と考えられます(上図の緑色の部分)。また、電源電圧≫CVの変化量 ならば、電源電圧とこのCVによりゲタをはかされた下限電位との電位差 および R38で決まる電流 ならびに 単位時間あたりの充電量aもほぼ一定と考えることができます。この場合において、LFOの波形をg(t)と置いてパルス間隔tn'を考えると、以下のようになります。

tn'=(V0-g(t))/a+t0

この時、BBDの入出力における周波数変化h(t) および 音程変化s(t)を考えると、

h(t)=fn[0]/fn[-1]=tn[-1]/tn[0]
s(t)=log(h(t))=log(tn[-1]/tn[0])

fn[0]:現在の周波数
fn[-1]:現在よりmステップ前の周波数
tn[0]:現在のパルス間隔
tn[-1]:現在よりmステップ前のパルス間隔
(m:BBDのステップ数)

ここで tn'=(V0-g(t))/a+t0 より、

tn[0]=(V0-g(t))/a+t0
tn[-1]=(V0-g(t-tn[0]))/a+t0
(t-tn[0]:現在よりmステップ前の時間)

tn[0]-tn[-1]=(V0-g(t))/a+t0-((V0-g(t-tn[0]))/a+t0)
=(-g(t)+g(t-tn[0]))/a
a(tn[0]-tn[-1])=-g(t)+g(t-tn[0])
a(tn[-1]-tn[0])=g(t)-g(t-tn[0])

∴a(tn[-1]/tn[0]-1)=(g(t)-g(t-tn[0]))/tn[0]

このとき右辺の式は、tn[0]が限りなく0に近いとすると、導関数g'(t)で近似できる。

a(tn[-1]/tn[0]-1)=(g(t)-g(t-tn[0]))/tn[0]=g'(t)
tn[-1]/tn[0]-1=g'(t)/a
tn[-1]/tn[0]=g'(t)/a+1

∴h(t)=tn[-1]/tn[0]=g'(t)/a+1

以上より、BBDのクロック周波数≫LFOの周波数 で、BBDのステップ数がそんなに長くなくて、かつ LFOの振幅がONしきい値に対して大き過ぎない場合は、fn[0]とfn[-1]の差分によりきちんとLFOの波形の接線が近似できるために、ほぼ微分の関係と捉えても問題ない状況になるのだと思います。

なお音程変化s(t)は、以下のようになります。

s(t)=log(h(t))=log(g'(t)/a+1)=log(g'(t)+a)-log(a)
∴s(t)=log(g'(t)+a)-log(a)


(この項終わり)

投稿者 fff : 05:10 PM | コメント (0)

Maxon AD900 Analog Delay

この記事は備忘的なメモです。何書いてるかわからなかったらすいません。

SA571コンプレッサー → 3段バタワースローパスフィルター(fc=3.2kHzぐらい)→BBD(MN3005×2) → 5段バタワースローパスフィルター(fc=3kHzぐらい?)→SA571エキスパンダー

特に中開けて再認識したのは、BBD×2をまとめて後段の5段ローパスフィルターに通していること。
データシートより204.8msのときクロックが10kHz(のはず)なので、300msの場合、クロックは6.8kHzぐらい。5段ぐらい急峻なフィルターじゃないとノイズを落とし切れないんだろうか(BOSS DM-2も5段だけど)。それぞれのBBDにフィルタかけなくても大丈夫なのか?

投稿者 fff : 04:10 AM | コメント (0)

ものぐさ1点アース

ffffff.JPG

アースの引き回しに悩んだらこんな手抜きな方法も・・・

まあ迷信みたいに思われがちな1点アースですが、たとえばBigmuffとかであえてめちゃくちゃなグランドラインの引き回し(2段目と3段目のエミッタ抵抗を直結してからアースに落とす、とか)をしてみたりするとわりと簡単に発振するようになるので、特にFuzzfaceやBigmuffなど電源変動の影響を受けやすいシンプルなディスクリートものの場合は意識したほうがよいと思っています。

投稿者 fff : 01:08 AM | コメント (0)

ラッチングリレー研究1


コンパクトエフェクタのトゥルーバイパス化に際して、リレーを使う方法をかなり以前から模索だけはしておりましたが、リレー自体の電力消費の多さに二の足を踏んでおりました。(電池駆動が現実的でなくなる。しかも地球にやさしくない)

ある時、「ラッチングリレーを使うと電力消費が切り替え時だけで済む」という記事を見かけ、試してみようと思い立ったのがこの項の端緒です。とはいえふつーのリレーの使い方すらわからない自分にとってはかなりの難産ではありましたが。


<ラッチングリレーとは>
ふつーのリレーは、コイル(電磁石)に電気を入れっぱなしにしないとSET状態を保持できません(電気を消すとバネかなんかの力でRESET状態に戻る)。SET状態を続けるためにコイルに電力をかけ続けなくてはいけない分、電力の消費がかさみます。

ところがラッチングリレーの場合は、1回コイルに(パルス状の)電気を入れると、電気を消した後も(永久磁石かなんかの力で)その状態を保持します。SET状態を続けるためにコイルに電力をかけ続ける必要はなく、その分省電力であると言えます。

ラッチングリレーには、構造上1巻線型と2巻線型があります。1巻線型はコイルがひとつしかなく、コイルに正のパルスをかけたときにSET状態,負のパルスをかけたときにはRESET状態になります。
対して2巻線型はSET用およびRESET用のふたつのコイルがあります。SET用のコイルにパルスをかけたときにSET状態,RESET用のコイルにパルスをかけたときにはRESET状態になります。
(ここでは便宜上SET,RESETという表現をしておりますが、もちろん通常のON-ONスイッチと同様、2回路の切り替えもできます)

ただ、通電は切り替え時の一瞬のみ、という仕組み上、外部からの振動(たとえばライブの時にシールドを引っ張ってしまった、蹴っ飛ばしてしまった等)によりステータスが変わってしまうことが予想されます。どの程度振動に弱いかは、実装した後実際に使ってみて評価したいと思います。


ここでは、オムロンのメーカー資料に1巻線ラッチングリレーのドライブ回路そのものが載っていたので、まずはそのままパクらせていただくこととします。
(リンク先ページ)→ プリント基板用リレー 共通の注意事項(673KB) 21ページ目(B-40)

<上の回路の説明>
現在入手が一番簡単なラッチングリレーは、おそらく松下電工のTQシリーズ(制御機器Qサービスを利用)だと思います。こういう企業からすると非常に面倒くさい(と思われる)試作およびリテールに対するサービスを用意していただけている(しかも割合対応が早い)ことに感謝します。もし量産等でラッチングリレーをお使いになる方がいらっしゃったら松下電工でお買い求めいただければと思います。わたしと松下電工との間に特別な利害関係があるわけでもないですが。

それはさておき、上記のような入手性および使用回路上の理由で、ここでは松下電工の1巻線ラッチングリレーATQ219(5V)を使用しています。(もし入手できたらオムロンのリレーでも試してみます。ドライブ回路を参考にさせていただいたので)リレーが5V用なので制御回路全体の電源を5Vで統一しました。ただ、スイッチからT-Flipflop Moduleまでは9Vで駆動しても問題ないかもしれません。

R1,C2はチャタリング防止用です。スイッチにcarlingのモメンタリSWCarling110-PMを使った場合には、C2の値を0.1μFにした方がよいです。Bossのエフェクタに使用されているような軽量級(?)スイッチの場合は、0.01μFぐらいの方がよさそうです。この辺は実際のスイッチの特性に合わせて現物合わせ的に決定する必要がありそうです。T-Flipflopはここでは4027(JK-Flipflop)を使って実現しましたが、4013(D-Flipflop)を使っても実現できるそうです。ただいずれにせよ2回路あるうちの片方しか使わないので不経済(?)です。RohmのBA634という専用ICは1回路T-Flipflopなのでエフェクタに内蔵する場合等スペースファクターが重視される場合には使い勝手がよさそうです。

スイッチを踏むごとにT-Flipflopにより出力信号が0→1→0→・・・と切り替わります。T-Flipflopの出力そのままではリレーを駆動できないので、間にBufferをはさみます。Bufferとしてここではデジタルトランジスタを使っていますが、なければ2SC1815+2SA1015+抵抗10kΩ×4で実装してもかまいません。省スペース性は損なわれますが。

実はこのBufferで信号が反転するのですが、今回はとにかくリレーが切り替わればよいので無問題とします。多少気持ち悪いですが。ただ、実際に使ってみて反応時間やチャタリング等の問題が顕在化するようであれば、シュミットトリガインバータでもぶち込んでみます。

Relay Drive Moduleで重要なのはR3とC3の定数です(図中赤色の部分)。今回はカット&トライで数値を決定しました。大体♪=144ぐらいの連打までは行けるようです。あまり反応性が速くてもチャタリングに弱くなるのと、使用目的が足踏みによるオルタネート切り替えなのでさすがに高橋名人の16連射(古い!)とかはしないと思うのとで、こんなものかと思っています。
リレーのメーカーや品番を変えた場合,反応性の好みが異なる場合 および 別の用途に使用する場合は定数を調整してください。(Bufferの能力にもよると思いますが)R3を少なくすると概ね反応が速くなるようですが、C3は大きくし過ぎると今度はチャージに時間がかかるので、最適な条件を決定するのは案外難しいです。

Relay Drive Moduleの動作機序は、切り替え時にC3への充放電によってパルスが生成すること、およびパルスによってQ3が一瞬ONになることを利用したものと思います。D1はONの信号のみを流す整流に、D2はQ3の保護に使われているのでしょうか。

Indicatorは本当はこのように直結するとリレーの反応性に悪影響を与えるのだと思いますが、Bufferに多少の余裕がありそうだったので、とりあえず問題ないことにしています。

<長所>
○ラッチングリレー研究2の回路より電圧降下に強い。7Vぐらいまでは行けるはず。
○消費電力はON時5.3mA,OFF時2.62mA(フリップフロップとしてBA634を使用)
○原理的に逆起電力に強い。

<欠点>
○反応がもっさり。フットスイッチではぎりぎりOKでもコンタクトスイッチではまず使えない。
○スイッチを押したのに反応しないこともありそう。反応しなかった場合、インジケータの表示と回路の切り替わりが同期しないことも・・・。

投稿者 fff : 12:51 PM | コメント (0)

単電源から±電源を生成する方法

単電源から±電源を生成するICとして、チャージポンプICと呼ばれる一連のICが
あります。これらチャージポンプICのうち、9V以上で使用可能な型番として、
ブーストモードなしのICL7660/7662,JRC7660等の7660系と、
ブーストモードありのLTC1044/1044A/1144,MAX1044等の1044系の2系統が
広く知られております。

ちなみにICL7662(絶対最大定格22V)はICL7660の高耐圧版、
LTC1044A(絶対最大定格13V),LTC1144(絶対最大定格18V(瞬間値20V))は
LTC1044の高耐圧版になります。

電圧をダウンレギュレーションするならまだしも、トランスなしで昇圧/±反転させるとは
どういうことでしょう? 説明のため、大雑把かつシンプルな図解をしてみます。

1044_1.gif<図1>

この切り替えのスピードをスイッチング周波数と言います。
スイッチでつなぎ替えられるコンデンサC1には、電源に接続されている間電荷が蓄えられるので、
スイッチング周波数が十分高い場合には、概ね下図のような感じになります。

1044_2.gif<図2>

よって、スイッチとコンデンサC1,C2の働きにより、単電源から±電源が生成されることになります。

次に、実際の±9V生成回路を図に示します。

1044.gif<図3>

1044/1044A/1144においては図中の赤い部分を結線してブーストモードとすることができます。
ブーストモード時にはスイッチング周波数が約6〜7倍になります。
(概ね30〜40kHz程度と言ったところでしょうか)

エフェクタ等音響機器の電源として使う場合、スイッチング周波数が人間の可聴帯域
(一般に20Hz〜20kHz)にかぶるとスイッチングノイズが電源から信号経路に漏れ出てしまいます。

ブーストモード採用によりスイッチング周波数を可聴帯域外に追いやることで、
この電源由来のピーノイズを聞こえなくすることができます。
また、周波数が上がることにより、電源インピーダンスも低減されます。
(ただし電源のリプルが消えるわけではない。)

スイッチング周波数については、とにかく可聴帯域外になる もしくは
電源インピーダンスが下がることが重要で、あまり正確さを求められない
用途が多いためか、結構個体によるばらつきはあるようです。
(余談ですが、スイッチング周波数を正確にコントロールしたい場合は、
外部のオシレータを使います)

他にこれらチャージポンプICを使った倍電圧へのコンバートも可能です。
(データシートにもそのものズバリの回路が載ってたりします)
ショットキーダイオードを使うと、ダイオードによる電圧降下が多少改善されます。


実装上の注意点としては、コンパクトエフェクタ用のアダプタを使用する場合には、
耐圧10Vの1044はそのままでは使えない、ということがあります。

エフェクタに使われる9V電源アダプタには、定電圧化されていないものもあります。
定電圧化されてないアダプタでは、無負荷状態では電圧が12V程度に達することも
あるようです。(手持ちのアダプタでも実測による確認済)

この状態で耐圧10VのICL7660/LTC1044を使うと過電圧で破壊されます。このような用途の場合は、ICL7662/LTC1144を使用しないといけません。
(LTC1044は耐圧が10Vで、少々オーバーぐらいでも故障する。アダプタによっては
絶対最大定格13VのLTC1044AでもOKかも)
自分の場合、楽器内蔵用には1044を、単体のエフェクタにはLTC1144を使うことにしています。


チャージポンプICの欠点として、回路の消費電流が増えると電圧降下が顕著に現れる点
(=電源インピーダンスが高い)があります。
(例えば、LTC1144のデータシート(下記リンク先参照)に消費電流と電圧降下の相関図が出ています)

リニアテクノロジのデータシートによると、電源インピーダンスは大雑把に言って
1/(fc/2)のオーダーとのことです。(f:スイッチング周波数,c:コンデンサの容量)
f:20kHz,c:10μFのときは10Ωになる計算となります。
ただスペック上では、例えばLTC1044ではf:10kHzの場合200Ω,f:10kHzの場合60Ω
となっており、あくまでも目安と考えた方がよさそうです。

この式からすると、コンデンサの容量を増やせばいくらでも電源インピーダンスを
減少させることができそうにも思えるのですが、正確にはこの辺の議論はかなり複雑で、
内部のCMOSスイッチ自身の抵抗やコンデンサのESR等もそれなりに効いてくる
(らしい)ので、一筋縄でいかないようです。
少なくとも、コンデンサのESRが周波数によって変化する点 および 特に
スイッチング周波数が高い場合、内部のCMOSスイッチのON抵抗が効いてくる点を
考慮する必要がありそうです。

上記程度の理由ですが、一応コンデンサはESRの低いOSコンを勧めておきます。
故障モードがショートなので(タンタルと同じ)、ちょっとやな感じですが。
容量が足りれば積層セラを使っても悪くないかもしれません。

また、内部のCMOSスイッチのON抵抗が電源インピーダンスに効いてくる場合には、
ICを2個並列に使用すれば単純に電源インピーダンスも1/2になるようです。
(これまたデータシートにそのものズバリの回路が載ってたりします)

<参考>メーカーおよびデータシートへのリンク
http://www.linear-tech.co.jp/
https://www.maximintegrated.com/jp.html

http://www.linear-tech.co.jp/product/LTC1144
http://www.linear-tech.co.jp/product/LTC1044
http://www.linear-tech.co.jp/product/LTC1044A
https://www.maximintegrated.com/jp/products/power/charge-pumps/MAX1044.html

投稿者 fff : 01:43 PM | コメント (0)