2008年春、 「Analog2.0」が発表となり、快調に更新を重ねている。このドキュメントにしたがって手作りシンセを組み立てていく上で、「あったら便利かな」なアイテムを作る事で、影ながら「Analog2.0」を支援するのが狙い。
比較的安価なワンチップCPUを使って、組み立てたシンセを楽器として演奏するのにあったら便利なミニキーボードを組み立ててみた。本格的な演奏には無理があるとしても、オシレーターのコントロールだけでなく、フィルターの調整のときなど、あったら便利に違いない。
「Analog2.0」対応が前提だけど、鍵盤部分とCPU部分は分割することができて、ほかに流用できるようにしてみた。また、鍵盤部分は、手作りシンセを作るうえで一番のネックになるかと思が、ジャンクで手に入れたキーボードや、Toyキーボードの鍵盤部分だけを使う事もできるように工夫する。
ここでは、再現性を考えて、安価なタクトスイッチをまるで鍵盤のように並べて「ナンチャッテ」キーボード風味に仕立ててみた。
なんてナ調子でダラダラやってたらあっという間に、1年が過ぎてしまい、Korgから、nanokeyが発表になった。なんか、このプロジェクトをメーカが先取りしたんじゃないかと思うぐらいコンセプト的にかぶっている。
果たして、このプロジェクト完成させる魅力のあるものなのかと疑問を感じつつも、「Analog2.0」を支援をキーに、CV+Gateに特化することで、プロジェクトとして延命する方針を固めた。
鍵盤(タクトスイッチ)を押すとCVとゲートが出る。CVは、モジュラシンセで一般的な1V/1Oct仕様。オクターブスイッチで切り替えてトータル10オクターブをカバーする。
右側の縦に垂直に並んだ2つのスイッチ(写真では黄色いスイッチ)が、オクターブの変更スイッチ。上のボタンを押せば、1オクターブ上がり、下のボタンを押せばオクターブが下がる。何度も押せるが、0オクターブ以下は出ない。上は、9オクターブまで。一番上のEのキーを押すと10オクターブ目のEが出る。
ゲートは、オンが5V。Analog2.0の仕様に準拠。
モノフォニックなので、たくさん押すと最後に押したキーのCVが出る。ミニムーグを意識したのか、マルチトリガーはしない。今押しているスイッチを離す前に次のスイッチを押すとレガート奏法になる。全部キーを離すと、当然ゲートは落ちるが、最後に押されたキーのCVが残る。
このプロジェクトには、東京秋葉原の「秋月電子通商」で2008年5月現在最安値のワンチップCPU
ATTiny2313を採用した。
CPUと聞いて、ああ、プログラム書かないと動かせないのか、と、がっかりする向きも多いかもしれないけど、プログラム済みのチップを手に入れてしまえば、BBDやその特殊なクロックジェネレーターのチップを手に入れるのと同様、工作そのものは、むしろ簡単な部類に入ると思う。ケースの加工のほうが大変だと思う。
本プロジェクトは、追試の便を図るべく、プログラム焼きこみ済みのチップの配布を検討している。詳細は別項(「プログラム焼きこみ済みCPUの頒布」)を参照のこと。
このキーボードをおして、CVとゲートが出せるほか、MIDIの入力もあり、MIDI to CV/Gateコンバーターとしても動作する。入力は1chに固定。ベンド幅も2半音に固定の簡易なものだけど、鍵盤は接続せずに、MIDI-CVコンバーターとしてだけでも使うことができる。
市販のキーボードのような立派なものでなくても、とりあえず、音程がちゃんと出てることが確認できるレベルのスイッチとしての鍵盤みたいなものってどうかな、というのが、このプロジェクトの動機。このメカでの演奏には、半田付けや、ケース加工、楽器演奏とも違う別のテクニックが要求されるに違いないけど、机の上にちょこっと乗っていたら楽しいに違いない。
モジュラシンセの上にポンとおいておき、タクトスイッチで、音色を確認することができ、さらに、音色が決まったら、シーケンサにMIDIで接続して演奏させることができる。DTM的なモジュラシンセでの音つくり支援マシンが基本コンセプト。
実は、トイキーボードの鍵盤部分だけを流用ができないか試してみようと、ゴミ置き場から拾ってきた(おい!)カシオトーンを1発ばらしてみたのだけど、いきなり撃沈。安いキーボードなどでは、キーボードが、プラスチックで一体形成の筐体の一部になっていて、鍵盤部分だけ取り出すことができなくなってたりして、それなりの工夫が要求される。
ここでは、前出の東京秋葉原、「秋月電子通商」で入手した一つ7円のタクトスイッチを利用している。100個で700円。僕は一袋手に入れて、知り合いと山分けにした。この記事では1オクターブ強の鍵盤分並べたが、後述の「バリエーション/改造」でも紹介するように、本プロジェクトでは、最大で(8X5=)40このスイッチ、鍵盤に割り振れば3オクターブ(37鍵分)に対応している。
小さなタクトスイッチは上記の写真のとおり4本足のものが多い。モノによってはグランドに落とす端子がついているものもある。足は4本でも中で2回路分入っているわけではなく、縦に遠い同士の足は内部でつながってる状態。このPCBデザインを流用してスイッチを立派なものに付け替える場合には、上下の穴のセットをジャンパで接続して(スイッチによっては不要なものもあるけどパターンを見て判断する)そこから、共通の端子同士をテスターなどでチェックしてからケーブルを引き出すようにする。
ここでは、これは、一般にキーボードマトリックス回路図と呼ばれる回路を使った。
CPU基板側に乗せた74HC138というロジックIC使って、3bitの出力をスキャンアウトの8本の線に変換している。1本あたり4つから5つのプルアップした入力ポートをつなげ、隣のスイッチの影響を受けないようにダイオードをはさんでスイッチを繋げる。
たくさんスイッチはあるけど、同時にチェックするスイッチは入力ポートの数だけ。スキャンアウトを切り替えることで、同じポートで別のスイッチの状態を読み事ができるというシカケ。
大変有名な回路で、パネルをみてスイッチが8個以上付いていたら、内部の動作にはこの方式が使われていると思って間違いない。
参考基板レイアウトは、蛇の目基板を使ったもの。秋月電子通商のBタイプのサイズに収まるようになっている。自分でPCBを起こすのなら、ケース加工図面に紹介するパターンも使える。
写真は実際にスキャナが動作している様子。上の矩形波が、CPUから出力される、スキャンアウトの指定。下のラインが、入力ポートの状態。プルアップされた状態から、落ちるときはストっと行ってるが、ニュートラルの5Vに戻る部分、ゆっくりとした立ち上がりが見える。オシロのリードアウトによれば20uS弱。間に挟まったダイオードのコンデンサ成分が、意図しないローパスフィルタを形成してしまうのが原因。プルアップに使う抵抗を小さくしてたくさん電流を流すようにしたり、コンデンサ成分の小さいショットキーバリア型のダイオードを使うことでこのカーブを小さくすることもできる。ここでは、どうせチャタリング(メカニカルなスイッチの入り切りの微妙なタイミングでスイッチがパラパラっと動作する状態のこと)がたくさんあるにちがいなので、シビアなタイミングの設計は避け、安価なスイッチングダイオードを使い、スキャンを切り替えたら、信号が落ち着くまで待ってからポートの情報を読み出すようにしてソフトウエア的に対応するようにした。
コンピュータとして動作させるためのコアな部分は全部1チップの中に収められてしまっているので、回路的には、追加のアナログ部分のみ。
大きく分けて、マイコンの出力をシンセのゲートとして使えるようにするトランジスタ1発のゲート回路と、1Bit D/AコンバーターともいえるPWMの出力をDC化するためのフィルター部分の2パート。
さらにあまったオペアンプで、アナログモノシンセならではのグライド/ポルタメント機能もつけた。
PWMとは、パルス・ワイズ・モジュレーションの事で、パルスの1周期内のオン/オフの時間のバランスを変えたパルス波を出す仕掛け。たとえば、PWMの基本周波数(キャリアという)が人の目の反応速度に比べて十分に高ければ、LEDは点滅してみえなくなる。その上で、オンの時間が長ければ明るく見えるし、逆なら暗く見える。電気的に人の目の反応速度の鈍さを再現するためにローパスフィルタを使っている。
このプログラムでは10ビット幅のPWMを使っており、CPUから出力されるPWMの波形の周期は、8MHzのCPUクロックを10ビットのカウンタで数えた周波数になり、1/1024の8k弱となる。(20MHzで動かすのなら、20kHz弱)。回路自体は、RJBさんが、PICで実装されたMIDI-CVとまったく同じ。
フィルタの定数は、パッシブフィルターツールVer3.0cをLPFモードにして、たとえば、22kと10nFでカットオフ周波数を0.7KHz程度とすると8kぐらいの減衰量は、-20dBとなる。(汎用計算スクリプトを見れば-20dbは1/10)このフィルタを3段重ねているのだから、減衰率は3倍。ほぼ-60dB。1/100。5Vのオンオフのリップルは、5mV。1オクターブで1V変化させる狙いなら半音は、83.3mVだから、5%強のぶれ。
一般には、数mV(誤差数%)のリップルなら問題ないそうなので、8MHzで動かすのはぎりぎり。20MHzで動かすのなら、かなりいい線いく感じ。
ここはむしろ、フィルタによって、時定数がついて、意図しないポルタメントがかかるほうがイヤかもしれない。この回路は別途ポルタメントを別途用意してるのでそっちでもリップルはフィルタされる。
CPU基板の参考レイアウトの入力ピンは4ビットだしてあるが、今回の製作では3ビットしか使っていない。オプションのプルアップの抵抗を追加すれば、もう1ビット入力を出すことができるので、トータルで8本のアウトと5本の組み合わせで、40スイッチ、内、2個はオクターブシフトスイッチに使うので、38鍵のキーボードまで対応することができる。
内蔵のRC発振器によるクロックを使って、ポート2ビット余分に使いたい。この場合、クロックの発振周波数はそのまま、MIDIの受信クロックにも使われるので、このクロックの精度が問われる。この調整には、リードアウトつきのオシロか、周波数カウンターが必要になる。
このソフトはタイマーをまわして、ポートをバタバタと動かすだけのもの。PORT-Dの6(11pin)に31.25KHzと、内臓RC発振による8MHzのクロックがPORT-Dの2(6pin)に出るはず。
内臓クロックは、CPUを作るプロセスのばらつきで、チップそれぞれひとつづつ、発振周波数がばらついている。このキャリブレーションのために、メーカーがCPU一つづつそれぞれ測定して書き込んだキャリブレーション値が書き込まれている。これは、AVRSPなら、
| OSCCAL | Clock freq |
| 91 | 8.18MHz |
| 90 | 8.08MHz(1%) |
| 89 | 7.98MHz(-0.25%) |
| 88 | 7.88MHz |
| 87 | 7.84MHz |
AVRSP -rf
で読み出すことができる。一番最後に「Cal:」の後に表示されるの数字がキャリブレーションの値。
この表の数字は、僕のチップの数字で、他のチップでは違う数字が出るに違いない。
ソフトのソース、31行目以降に並ぶ、
OSCCAL = 96; //RCクロックのキャリブレーション値
の値を変えることでソフトエアから、このキャリブレーションの値を書き換えることができる。
無茶な値を突っ込むと、オーバードライブすることができるけど、周辺のIOがついてこれなくなって結局こけるので、8Mぐらいで動かす。
実は、31.25KHzはMIDIの転送スピード。ソフトでどれだけ正確な周波数が出せるのか見てみたのだけど、うまくいかない。実際は、31.25kHzよりも遅くなる。
割り込みがかかった瞬間、タイマーはリセットされ、次のタイミングを数え始めている。ここでは、思ったとおり、16uS、31.25kのちょうど半分の時間。割り込み処理が始まって、ソフトウエア的にポートをオンオフする処理にたどり着くまでの時間は、毎回同じはず、という読みなのだけど、なぜか処理は遅れる。
さらに、このクロックは、RC式の発振器なので、温度が変化すると、周波数も変わってしまう。
MIDIの通信スピードは、31.25k bpsで、その許容誤差は+/-1%。温度によるクロックのズレが、そのまま、MIDIのキャリアの精度になる。逆に言えば、8Mの1%、上下に80kHzまでずれてもOK。
何時もお世話になっている、AVRのドキュメントを日本語化されているこちらのサイト(http://reef.path.ne.jp/~hero/hero.htm)に紹介されている、tiny2313の仕様書、133 ページ目にクロックの温度特性を見ることができる。
温度差対周波数を見ると、5Vで動かすと、-40℃で、7.89MHzぐらい。80℃で、8.26MHzぐらい。120℃の温度差で、370KHzずれる。グラフは、ほぼ直線にみえるのでリニアな変化とすれば、8Mの1%、80KHzの変化させるなら26℃程度。気温20度でぴったり8MHzに校正できれば、-6℃から、46℃までは周波数のずれは1%内におさまる。
送信はともかくだけど、受信に関しては、マージンはそれなりに広いはずなので、ちゃんと、初期の校正さえできていれば、室内で使う前提で、受信だけなら、内蔵RC発振のクロックで問題なさそうだ。
タクトスイッチのマトリックス状のダイオード部分のカバーに僕はアクリル板を使ってみた。この裏でLEDがボーっと光るように組み立てたらきっと美しい!
こんなサイズのアクリル板の切れ端が手持ちにあれば、安価だけど、新たに手に入れるのなら(ポルタメントのVRが取り付けられる前提で)薄い木の板を使うのもありかもしれない。ついでに、このケースにサイドウッドボードを追加してみたり。色々なアイディアで、楽しむ部分。蛇の目基板でなく、自分でPCBを起こすのならこちらに紹介したパターンも使える。
ケースの加工できれば、配線はキーボードとCPU基板を接続すればOK。
スキャンのアウトがCOM1。入力が、COM2それぞれ接続し、ケースからCOM3が出るようにケースに固定すれば、できあがり。COM3がAnalog2.0との接続。ライフライン1本で直結。
キーボード側とCPU側両方にコネクタをつけることはない。僕は、CPU基板にコネクタをつけた。鍵盤部分はケースの一部として考え、CPU基板ははずして他でも使えるようにという発想した。どちらでもいいけど、メンテナンスの際、蓋が完全にはずせるととても楽になる。
調整は、まず、オクターブダウンボタンを数回おして、一番低い電圧が出るようにする。
で、下のC(ド)を押すと0Vが出るはず。無調整で0Vが出るはず。ずれてたらずれた電圧をメモしておく。
次にオクターブアップボタンを5回押して下のCを押すと、5オクターブ上のCが出る。これが5Vのはず。CPU/アナログ基板上のトリマーを回して、5Vが出るように調整する。0.数ボルト変化させられるはずなので、5Vに対して、+/-0.5V以上ずれていたら、オクターブボタンを押しなおしてみる。(オクターブボタンを押したら、もう一度音程キーを押さないとあたらしいCVは出ない
目標の5Vに、0Vでずれていた電圧を足した値になるようにトリミングする。
どんどこしょ
Analog2.0のLifeLineに直結するれば音をだせる。さらに、このCPUには、プラスアルファの機能として、トランスポーズ機能とダンパーペダルの機能をつけてある。それぞれ、スイッチや、フットペダルを接続するコネクタをつければOK
トランスポーズは、このボタンを押している間、トランスポーズ設定モードになり、鍵盤を押しても音は出ない。この間に押した音程がトランスポーズする音程の指定になる。
オクターブは無視され、CからBまでの音程分シフトすることができる。元に戻すには、Cを再指定する。
ダンパーペダルは、踏んでいる間は、ゲートがオフにならない。踏んでも鍵盤から音を出すまでは音は出ない。市販のフットスイッチには、踏むとオフになる負論理形と、踏んだときスイッチがオンになる、正論理形の2種類がある。
どちらのスイッチにも対応できるよう、使いたいペダルを接続して電源を入れたときに接続されたスイッチの状態をみて動作モードを決めるようにした。
電源を入れるときにスイッチ踏みっぱなしにしておくと、この機能をだますことができるが、使い物にならねえ!と、ひどい目にあうのはあなただ。
先にケースを作ってしまい、あとから、トランスポーズや、ダンパーの機能を付け足したので、僕のケースには若干の無理がある。
一般に、ピアノのペダルは踏んでる間だけダンパーが利く(音が出っ放しになる)が、これをモーメンタリーモードとする。ここでは、一度踏むと、ダンパーが掛かり、もう一度踏むまでダンパーが掛かりっぱなしになるという特殊な、いわば、オルタネートモードのダンパーペダルとも言う機能をつけた。
CPUの5pin、何も接続してないときには、そのまま、普通のダンパーモードだけど、これをグランドに落とすと、オルタネートモードダンパーに切り替わる。
この機能はライブでスイッチすることができるので、トランスポーズボタン同様、スイッチをパネルに出して使える。
どうせたくさんの引き合いはねえだろうと読みつつも、いくつか在庫の用意ありますって、アマチュアのやる事だからね、なん百もあるわきゃないです、ほんの数個です。これが掃けたら、別途チップを手に入れて、こちらにご郵送ください。書き込んで返送する形にします。
また、東京秋葉原にて不定期に開かれている、オフ会「ビートニックな僕らの基本は"路上にて"」に参加される場合には事前にお知らせいただければ、100円でお渡しすることができます。
詳細はアナログ震世界の「アナログシンセ掲示板」の過去ログを参照してください。
以上、2008年5月ルールとしますが、多くの人に末永くトライしてほしいと思っております。トライするときにお問い合わせくださって結構です。
ないと思うけど、プロフェッショナルな使用はご遠慮ください。それなりに気合は入ってますが、あくまでアマチュアのおもちゃです。性能に関する一切の保証はありません。