2017年08月10日

Roland αJunoのDCO(6)

前回、αJunoのDCOでは波形をパルス波でスイッチング(あるいは、パルス波を波形で変調)した波形が特徴だと書きました。
今回はその実現方法について考えてみます。

登場する波形は、基準の周波数をfとして

・8f, 4f, 2f, f, f/2, f/4の方形波(デューティ比50%)
・2f, fのPWM矩形波
・fの鋸波

です。

これらを使ってサブオシレータの6つの波形を生成するには、下図ように2つの波形のANDを取れば実現できます。
aj-dco-sub.png


また、鋸波の5つの波形も、下図のようにすれば生成できます。
4つの三角で表している記号はアナログスイッチです。左右の信号の接続・切断を上部の制御端子で制御します。
どの波形も基本は鋸波で、制御端子に加えている信号だけが違います。
aj-dco-saw.png


このアナログスイッチですが、実際にはトランジスタ1個で実現できます。
下図は、Roland αJunoのDCO(4)で触れたJuno-106の波形生成部分をBSch3Vで書き直したものです。
鋸波は、「SAW on/off」信号によってオンオフすることができます。
先の図で示した5種類の波形を生成するには、制御信号を「SAW on/off」へ入力すれば実現できると思われます。
wavegenerator.PNG


パルス波の3つの波形は簡単ですので省略します。

上に示したように、αJunoのDCOでは様々な制御信号を生成する必要があります。
矩形波については、8fの周波数の矩形波を分周すれば4f、2f、f、f/2、f/4の矩形波が生成できます。

若干悩むのは、PWMの波形です。
周波数がfのPWM波形は鋸波から生成できますが、2fのPWM波形は生成できません。
2fの矩形波は生成されていますが、ここから鋸波を生成してさらにPWM波を生成するのは無駄が大きい気がします。
2fのPWM波形は、SAW3でしか使用されておらず、2fの鋸波はどこにも使われないからです。

PWM波形の生成は、プログラマブル・カウンタの値がある値以上であれば出力1、そうでなければ0、というようにデジタル処理で生成することもできます。
この場合はデューティ比を離散的にしか変更できなくなりますが、αJunoのパラメータ指定はスライダが無く、デジタルのみで行いますので、デジタル方式で良いという判断はありそうです。
この方式はPWM波形専用のカウンタが必要になるものの、鋸波を発生させたりCVをホールドする回路が不要になります。
posted by boochow at 23:38| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする

2017年08月03日

Roland αJunoのDCO(5)

aj-dco1.jpg

前回まではJuno-60/106の回路図を元にDCOの動作について考えてきましたが、αJunoではJuno-60/106よりも波形のバリエーションが多くなっています。
その一覧はαJunoのトップパネルにも表示されています。
パルス波が3種類(PULSE1〜PULSE3)、鋸波が5種類(SAW1〜SAW5)、サブオシレータが6種類(SUB0〜SUB5)です。
PULSE0とSAW0は「OFF」を表します。サブオシレータはOFFを表す波形が無く、別のパラメータ(SUB LEVEL)でOFFを指定します。
alpha-juno-dco.jpg

先日購入したばかりのAnalog DiscoveryでDCOからの出力をキャプチャしてみました。
VCFへ入力される直前の信号(以下の回路図の矢印の位置)で測定していますので、フィルタの影響は全く受けていないはずです。
aj-dco2.png


まずパルス波ですが、これは特に変わったところはありません。
パルス波はLFOでPWMをかけることができ、LFOレートが0のときは任意のデューティ比に固定することもできます。
用意されているのは、上記に加えてデューティ比50%および25%の波形です。

αJuno独特の波形としては、まず鋸波を高速にオンオフした波形があります。
あるいは、パルス波を鋸波でPAM(パルス振幅変調)したものとも言えます。
周波数は、鋸波の周波数の1オクターブ上と3オクターブ上の周波数です。
aj-dco-saw2.pngaj-dco-saw4.png

さらに合わせ技?として、3オクターブ上の矩形波を1オクターブ上の矩形波でオンオフした結果の波形で鋸波をオンオフする波形があります。
aj-dco-saw5.png

また、1オクターブ上のPWM波形でオンオフした波形もあります。このオンオフに使われている波形はパルス波のPWMモードの波形と同期しています。
aj-dco-saw3.png

鋸波は、これらに素の波形を加えた5種類が用意されています。

サブオシレータについても、同様の波形が用意されています。
サブオシレータの周波数から見て2オクターブ上の矩形波および3オクターブ上の矩形波を使ってサブオシレータをスイッチングした波形です。
aj-dco-sub2.pngaj-dco-sub3.png

サブオシレータはこのほかに、素の波形、デューティ比25%の波形がそれぞれ-1オクターブ、-2オクターブで用意されていますので、都合6種類となります。

以上を周波数に着目して整理すると、以下のようになります。

・f PULSE1、PULSE2、SAW1〜5
・f(PWMあり) PULSE3
・f/2 SUB0〜3
・f/4 SUB4、SUB5
・2f SAW2、SAW5およびSUB2をスイッチング
・2f(PWMあり) SAW3をスイッチング
・4f SUB3をスイッチング
・8f SAW4、SAW5をスイッチング

次回はαJunoのDCOの内部構成について考えてみます。
posted by boochow at 15:28| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする

2017年07月31日

Analog Discoveryを買ってみた

analogdiscovery.jpg

このところシンセサイザーの話ばかり書いていますが、おかげで「(デジタルでない)電子回路」に30年ぶりくらいに興味がわいてきました。
アナログの電子回路については私はまったくの素人なのですが、やはり波形が見えたほうが学習しやすいだろう・・・というわけで、オシロスコープが欲しくなってきます。
先日作ったポケットオシロも意外と便利なのですが、波形が見えるともう少し詳しく調べたいという欲も出てきます。
巷で人気のRIGOL DS1054Zを調べたり、オークションの古いアナログオシロスコープも見たりしましたが、結局「Analog Discovery」(2じゃない方)を入手しました。
他に、BNCコネクタ拡張ボードプローブも入手しました。

Analog Discoveryは高速なFPGAにADコンバータ、DAコンバータを組み合わせた、PCにUSB接続するモジュールです。
WaveForms 2015」というソフトウェアと組み合わせることで、オシロスコープ、ロジックアナライザ、アナログ信号発生器、デジタル信号パターン生成器になります。
内蔵メモリや信号線の本数で制約はありますが、これらの機能は同時に使用することができます。
また、オシロスコープとしての帯域は5MHzとなっていますが、これは減衰が0.5dbという条件の場合で、この帯域だとほぼ正確な波形が観測できることになります。
オシロスコープの一般的な性能指標である3dbの減衰なら20MHzくらいいけるようです。

早速、内蔵のウエーブジェネレータで矩形波を発生させ、プローブを校正しました。
入手したプローブの説明書にあるとおり、1KHzの信号を10x側で観測してトリマコンデンサで矩形波になるように調整します。
WaveForms 2015もよく出来ていて、安定していますし十分高速です。
こういうものを手にすると、いろいろ測定してみたくなってしまいます。
posted by boochow at 00:44| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年07月23日

Roland αJunoのDCO(4)

pwm.jpg

JunoシリーズのDCOは、マスターオシレータの信号から鋸波を、さらに鋸波から矩形波を生成します。
鋸波と矩形波は同時に用いることができるので、1DCOながら比較的複雑な波形をつくることができます。

今回は鋸波以外の波形の生成方法を見てみます。
次の図はJuno-60のメンテナンスマニュアルに掲載されている矩形波生成の解説です。
他のシンセサイザ(山下シンセとか)でも使われている手法で、鋸波や三角波と、パルス幅を指定する電圧をコンパレータ(水色の部分)に入力して比較するというものです。
wavegen2.png

PWM制御のための信号はスライダやLFOで制御します。
Juno-6ではLFO・スライダ・エンベロープから選択するようになっていたようです。
Juno-60は音色をメモリできるようになったため、設定値をいったんA/DでCPUに取り込み、D/Aで制御信号を生成しています。

Juno-106も同様にD/AでPWMの値を生成しています。
このとき用いられるDAコンバータは、前回紹介したDCOの鋸波用CV信号を生成していたDAコンバータを時分割で共用しています。

次に、サブオシレータの信号生成を見てみます。
サブオシレータは、メインのオシレータより1オクターブ低い音を生成して、低音の厚みを増す働きがあります。
Junoシリーズのサブオシレータは矩形波のみで、鋸波はありません。
生成メカニズムも比較的単純で、Juno-6/Juno-60/Juno-106では8253で生成された矩形波をフリップフロップで1/2に分周するだけです。
以下がその部分の回路です。
wavegen4.png

Juno-106では、これまで見てきた鋸波、PWMつき矩形波、サブオシレータの3つの波形生成をカスタムチップ(MC5534A)に納めています。
ワンチップで2チャンネル分が入っていますので、1台のJuno-106に3つのMC5534Aが入っています。
mc5534a.png

これはASICではなく、専用基板上に表面実装したモジュールをプラスチックでモールドしたものです。コストダウンのためというより、小型化のためかもしれません。
海外では、互換チップも作られています。

D5534A JUNO-106 MC5534A WAVE GENERATOR IC REPLACEMENT

最後に、ノイズジェネレータを見てみます。
ノイズジェネレータはチャンネルごとにあるのではなく、共通のノイズジェネレータの信号が各チャネルにミックスされています。
次の図はJuno-60の回路図です。
図で右側からピンクのラインで入力されているのがノイズ信号です。
juno60dco.png

Juno-106でも、同様にノイズ信号はMC5534Aの出力(1つ前の図の14番ピン)とミックスされているだけです。

このノイズ信号を生成するノイズジェネレータですが、次の図の上がJuno-60、下がJuno-106のノイズジェネレータです。
見て分かるようにほぼ全く同一の回路です。
juno60noise.png
juno106noise.png

方式自体は一般的なもので、トランジスタ(2SC945)のベース・エミッタ間にに逆電圧をかけて降伏させ、発生したノイズをOTAで増幅しています。
増幅に「BA662」というチップが用いられていますが、これはローランドの製品に数多く用いられているローランドのオリジナルのチップだそうです。
これも、海外では互換品が作られています。

BA662 Clone | Open Music Labs

これで基本的な波形生成は終わりなのですが、実はαJunoには、αJunoだけの特有の波形があります。
残念ながらαJunoのDCOはチップ化されているため、内部は推測するしかありませんが、次回はαJunoのDCOについて考えてみます。
posted by boochow at 16:23| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする

2017年07月22日

Roland αJunoのDCO(3)

saw.jpg

前回はマスタークロックからピッチ信号を生成する仕組みについて書きました。
ここで生成されるのはタイマーで生成された矩形波ですが、Junoシリーズでは、この矩形波の周波数に従って鋸波を生成し、さらにそこからPWM制御された矩形波を生成しています。

鋸波の生成については、前々回で基本的な仕組みを書きました。
コンデンサを放電させるタイミングを制御することによって、周波数を制御しています。
juno-dco.png

この仕組みを実現した実際の回路は、Juno-60のメンテナンスマニュアルでは以下の図ように示されています。
プログラマブル・タイマ8253で生成された矩形波は微分回路を通り、パルス波に変換されます。
パルス波はトランジスタに入力され、コンデンサC7を放電させます。
コンデンサC7はオペアンプと共に積分回路を構成しており、トランジスタのコレクタ・エミッタ間が導通していないときは一定の電流でC7が充電されます。
このため、パルス波が来るまで、オペアンプの出力電圧がだんだん上がっていきます。
(実際には、オペアンプは反転入力なので、波形は0Vから負電圧方向へ電圧が増加していきます。)
wavegen1.png

この際、C7を充電する電流は発生したい周波数に応じて調節する必要があります。
C7を充電する速度がいつも同じだと、高い周波数ではC7があまり充電されていないのに放電させることになり、結果的に生成される鋸波の音量が小さくなってしまうからです。

そうならないように、鋸波の電圧上昇の傾きを制御しているのが、上の図で緑のオペアンプから出力されている制御電圧(CV)信号です。
緑のオペアンプは、入力された電圧を記憶するホールド回路となっています。
ホールド回路が必要な理由は、6ch分の制御電圧を時系列で生成しているためです。

MIDIでは、ノートナンバー0(C -1)からノートナンバー127(G9)まで指定可能ですが、対応する波の周期は次の図に示すように122msecから79.3μsecまで変化することになります。(実際には、さらにピッチベンダなどにも対応しなければなりません。)
制御電圧は、この周期でちょうど同じ高さの波が生成できるような値である必要があります。
wavegen6.png


次の図がJuno-60での制御電圧生成部のブロック図です。
右端がホールド回路で、4051によるデマルチプレクサが時系列に生成されたCV信号を6個の音源へ振り分けています。
制御電圧を決めているのは図左端の7bit D/Aコンバータですが、ここではCVを等差級数的に生成し、Anti-Log Ampで等比級数的な電圧変化に直してるようです。
楽器の音程は等比級数(1オクターブあたり2倍)になりますので、制御電圧も等比級数的になるからです。
wavegen3.png

ちなみにD/Aが7bitということは、0〜127の範囲で変わるということですから、おそらく鍵盤のキー1つ1つに対応してCVが生成されているということだと思います。
ピッチベンダ等で周波数がスイープするときには7bitの解像度では不十分なはずですが、その補正はAnti-Log Ampにあるもう1つの入力で行っているようです。

Juno-60の後継であるJuno-106では、D/Aは12bitになっています。
前回書いたように、Juno-106ではマスターオシレータの周波数は固定され、ピッチベンドやLFOの情報もタイマーの設定値に反映されますが、同様に波形生成のCVについても、全てCPUから指定するようになっています。
回路図を見ると、次の図のような構成になっているようです。
wavegen5.png

D/Aは12bitとなっており、4050でバッファした後、R-2Rラダー型のDAコンバータで電圧を生成します。
その出力は4051によって6チャンネル分の音源部へ分配されるほか、サブオシレータのレベルの指定やVCF、VCAなどのレベル指定にも使われています。
分配された信号はJuno-60同様にホールド回路で保持されます。

また、前回書いたとおり、Juno-106ではDCO RANGEの指定により1オクターブ上・下の音を生成することができますので、DCO RANGEの設定を反映させるために4052で3種類の抵抗を切り替えています。

鋸波の生成については以上ですが、次回はPWM、サブオシレータ、ノイズ生成の回路を紹介します。
posted by boochow at 18:38| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする
人気記事