製作モジュール一覧

ラベル ベースマシン の投稿を表示しています。 すべての投稿を表示
ラベル ベースマシン の投稿を表示しています。 すべての投稿を表示

2018年3月3日土曜日

ベースマシン まとめ 2

去年簡単にまとめた「ベースマシン まとめ(弱め)」から、筐体その他いろいろと拡張していて自分でもよくわからなくなりつつあるので、ふたたびまとめてみておきたいと思います。

筐体


基本はMDFでフレームを作り、アガチス材で作ったサイドパネルをつけて見栄えを良くしています。

ベースマシンの筐体づくり
ベースマシン 筐体のサイドパネルをニスで塗装してみた。

シーケンサー部


ブロック図

Nucleo F401RE


シーケンサーのコアとなるボードです。ユーザーインターフェースからの入力(POT/Rotary Encoder/SW)をまとめ、SPI接続のGraphic LCDにフィードバックしつつ、シンセ部(Synth)にSPI通信でシーケンスを送信します。

電源はシンセ部(synth)から+9Vの供給を受けています。

ファームウェア mbed repository:
https://os.mbed.com/users/ryood/code/BaseMachine/ Revision:29

その他は「ベースマシン まとめ(弱め)」から、大きな変更はありません。

シンセ部


ブロック図

+/-9V PSU


DC12VのACアダプタから±9Vを作る電源ユニットです。

LT1054

5V/3.3V/2.5V PSU


±9V PSUから、5V、3.3V、2.5Vを作り出す電源ユニットです。±9V電源もパススルーしています。

5V/3.3V/±2.5V安定化電源

SPI Bus Buffer


シーケンサー部からのSPI信号をバッファリングしています。

SPIバス・バッファ(TC74HC541)基板の製作


PSoC4 DCO


PSoC4 Prototyping Kitを使った矩形波/ノコギリ波のDCOです。同じパラメーターで矩形波のパルス幅、ノコギリ波⇔三角波のモーフィングができるようにしています。

PSoC 4 Prototyping Kit DCOでけた。
PSoC 4 DCO ノコギリ波~三角波を可変して出力するようにしてみた。

ファームウェア
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC/PSoC4_PrototypingKit_DCO_for_NucleoF401RE.cydsn

SVF DCF


最初はVCVS DCFを使っていましたが、仮想GNDの取り扱いに問題があり、新たにSVF DCFを製作しました。←VCVS LPFもいずれ作り直すつもりです。

SVF DCF
SVF DCF 出力のGNDを修正 仮想GNDの扱いには注意するべし

OTA DCA


NJM13700 DCAの基板でけた。


課題


KIK01とベースマシンをMIXして問題が見つかりました。

https://soundcloud.com/od-ryo/sync03

WaveSpecraでFFTしてみると

KIK01とベースマシンのMIX

1kHzとその高調波にピークが出ています。

おそらくF401REのファームウェアでRTOS Timerの1ms周期でシンセ部にSPI送信を行っているためだと思います。

ベースマシンのみ

ベースマシンのみの出音の場合は波形の歪が多く発見が困難。

KIK01のみ

KIK01は32kHz周期でエンベロープ波形を更新しているため32kHzにピーク。

上記が原因という確証はないのですが、ベースマシンの波形更新処理時間を測定するなどしてもう少し調べてみたいと思います。

ただ、mbedのRTOS Timerの割り込み間隔の最小は1msなので、更新周期を速くするにはタイマー割り込み(Tickerクラス)に変更する必要があるのでやっかいそうです。

こういう音(歪、ノイズ)と割り切る手もありそうですが(^q^;

2017年9月13日水曜日

ベースマシン 筐体のサイドパネルをニスで塗装してみた。


テスト塗装


最初はNord Leadっぽい赤色にしたいと思って、MDFにつや消しの赤色を塗装する方向で考えました。

下地づくりの手順としては

240番のサンドペーパーで磨き
とのこ塗り(半日乾燥)
240番のサンドペーパーで磨き
とのこ塗り(丸一日感想)

としました。とのこの上にサーフェーサーを塗ったほうがいいと教えてもらいましたが、最初から欲張ると大変なので下地はとのこのみです。


下が素のMDFで、上がとのこを塗って磨いたところです。色も白くなっていますが触るとつるつるします。

塗装の手順は

400番のサンドペーパーで磨き
ダイソーのつやあり白色のアクリルスプレーを塗布(半日乾燥)
400番のサンドペーパーで磨き
ダイソーのつやあり白色のアクリルスプレーを塗布(丸一日乾燥)
400番のサンドペーパーで磨き
アサヒペンのクリエイティブ・カラースプレー(つやありディープレッド)を塗布(半日乾燥)
400番のサンドペーパーで磨き
アサヒペンのクリエイティブ・カラースプレー(つやありディープレッド)を塗布(丸一日乾燥)
400番のサンドペーパーで磨き
ダイソーのつや消しクリアのアクリルスプレーを塗布

としました。

赤色を塗っているところ


バイスが赤く染まってしまいましたが、後で除光液でゴシゴシ拭いたたら無事とれました。



つや消しクリアとの比較


木目があるかまぼこ板にダイソーのつや消しクリアを吹いてみました。かまぼこ板はファーという木材が多いそうです。SPF材(スプルース、パイン、ファー)のFです。


手順としてはとの粉二度塗り、つや消しクリア二度吹きです。(間に数時間の乾燥時間を入れています)

最初のサンドがけが甘かったのかとのこが足りなかったのか、表面がボコボコしています。

比較画像

左下の木目があるのがつや消しクリアのかまぼこ板、上の暗い赤がダイソーの白を塗布せず赤色を直接塗布、真ん中の明るい赤が下に白色を塗ったものです。

比べてみると赤色は工数がかかる割に仕上がりが安っぽいので、木目を生かしたクリア塗装にすることにしました。

アガチス材につや消し透明ニスを塗ってみる。


SPFは薄くても1x4材で厚みが2cmぐらいあるので、アガチスという木材を見つけて使うことにしました。ホームセンターで600mm x 80mm x 10mmで415円と値段もまずまず。


切断はホームセンターでお願いしました。ほんとは斜めに切りたかったのですがホムセンではやってもらえず、自分で切るのも大変なので真四角で妥協。ねじ穴は現物合わせでで自分で開けました。

まずは240番、400番のサンドペーパーで磨いた後、との粉二度塗りしつつ、400番のサンドペーパーでかなりしつこく研磨しました。

との粉は磨きを入れる前に1回ごとに丸一日乾燥させました。

塗装に使ったのはアサヒペンの木工用着色ニス(つや消し透明)とペイント薄め液Sです。






ニスの種類は水性、水性ウレタン、油性などありますが、コスト重視で一番安価な油性にしました(^q^;

ペイント薄め液は薄める薄めないにかかわらず刷毛を洗うのに必要になります。

ニスの説明書きには、乾燥時間は夏場で30分~1時間と書いてあったので、磨く前に2時間ぐらい乾燥させましたがやはり1日ぐらい乾燥させた方が良かったようです。2時間程度だと触るとまだねちょねちょしていました。(←それでも強行したのは失敗)

ニス2度塗り後



まあまあきれいに塗れたのですが、液だれのせいで仕上げが汚くなったところがあります。


端の部分のは側面を塗ったときに裏側に塗料が回って、塗膜が厚くなってしまったようです。全面塗装するので裏と表(と側面)の2回に分けて塗ったのですが裏面までは気が回りませんでした。

側面は塗りムラが出てしまいました。塗り作業中の確認不足です。


つや消しなので、塗膜を何度もサンドペーパーで磨くのも馬鹿馬鹿しい感じがするので、試しに裏側になるところを1000番のサンドペーパーで軽く磨いてみると


汚くなってしまいました(^q^;;;

ケチってつや消しクリアしか使わなかったのですが、つやありクリアを何度か塗って塗膜を作ってやった後、最後につや消しクリアで仕上げたほうがいいかもしれません。

汚くなったところは目立たないところなので深追いせずこのまま使う方向で。

ベースマシンの筐体に取り付け


筐体の取り付け穴も貫通させて、2枚合わせてボルト・ナットで固定しました。


筐体の本体はダイソーのMDFのサイズの都合で、中の基板より少し小さく、背面はむき出しです。


天板は蝶番の木ネジで背面で梁として渡しているMDFに固定しましたが、やはり割れてしまいました。弱い・・・


メモ:


木材の塗装をはじめてやってみました。失敗したところはありますが、実用はできそうです。

やはり、塗装は手間というかとにかく時間がかかりますね。製作中のキックマシン(KIK01)の筐体も一部木工でやって、アナログっぽい感じにしようと思っています。

2017年8月31日木曜日

ベースマシンの筐体づくり

全部できてから記事にしようと思ってたのですが、側板の塗装にこだわりはじめたので途中までで一旦記事にします。

ダイソーのMDF板材をノコギリで切り出しました。


角になる所に三角材を木工用ボンドで接着


圧着しようと思ってダイソーで買ったF字クランプで挟みましたが


角度が中途半端で、ななめりました。

全体を接合するとこうですが


前板の部材の角度が90度ではないので接合するとずれる。


でも大枠は木工用ボンドで接着して作れました。


ここの部分は補助に使っている三角材が飛び出していたのでヤスリで削りました。


枠に合わせて厚紙を加工して配置の確認。


中の基板も厚紙で位置合わせ


位置を確認してダイソーで売っているクリップボードを加工しました。


MDFで作った枠とパネルを組み合わせ


現状ではここまでですが、両脇にサイドパネルをつければかっこいいかなと思って、塗装方法など先輩の長谷川竹光さんに教えてもらって試行錯誤中です。

2017年5月26日金曜日

ベースマシンの音出し動画


BaseMachine(SVF DCF) → TS-OD1 → PT2399-Echo
RhythmMachine

MiniMixerでMixしてAudio I/F経由で録音してみた。Over Driveをかけているので音はダーティな感じになっています。

メモ:


一応、RhythmMachineとBaseMachineはsyncさせているが、ツッコミ気味な感じがしないでもない(^q^;

TS-OD1はバイパスが欲しい。

Filter Envelopeは使いづらいのでもうちょっと考えてみる。

シーケンサーは32Stepぐらい欲しいとこだが、いっそのことMIDIで長いパターンの再生やPOTの動きを記録できるようにしてみる?

2017年5月23日火曜日

ベースマシン フィルターにエンベロープを掛けてみる。

ファームウェアを改修してFilterのCutoffにエンベロープを掛けられるようにしてみた。

構想段階では、まずはエンベロープはVCAにかけて音量を変化させることだけを考えていて、フィルターの変調は「できたらやってみる」という努力目標にしていた。

アナログ的に値を設定するPOT×8パネルの中でエンベロープの初期音量を設定する「Level」ツマミはあまり使わないので、これをフィルターにエンベロープをかける量を調整する用途で使ってみることにしてみた。


ほんとは、VCAにかけるエンベロープとVCFにかけるエンベロープを分けて2系統にできればいいんだが、Nucleo F401のI/O pinが足りなくてこれ以上はかんたんに入力デバイスを増やせない。

スイッチでエンベロープをかける対象を選択するという方法も、エンベロープを設定するデバイスが「可変抵抗」なのでなかなかむずかしい。モードを切り替えると、現在のPOTの位置が別のエンベロープの値に反映されてしまう。

これはMIDI入力デバイスでもよくあり、高価なMIDI入力機器はスライドボリュームにモーターが仕込まれていてシーケンサーから送った値でツマミの位置を力ずくで変更するようになっている。さらにタッチ・センスも仕込まれていて人が触っているかどうか判別して、ツマミの位置制御の入力/出力を切り替えるようにもなっている。

さすがに今回はそこまでやるつもりはないので、できる範囲で(ファームウェアもあまりいじらない方向で)考えることにした。

エンベロープは1波形しか使えないので、VCAのエンベロープを浅くかけるか、深くかけるかを「FLT MOD」ツマミで調節するだけ。

↓シーケンサーのプログラムの一部

void updateTicks(int ticks)
{
    uint16_t level = EnvelopeGenerator.update(sequences[SequenceSender.getStep()].isTie());
    
    // Amp
    uint16_t ampLevel = level;
    if (sequences[SequenceSender.getStep()].isNoteOn())
    {
        ampLevel = ampLevel >> 1;
        if (sequences[SequenceSender.getStep()].isAccent())
        {
            ampLevel = ampLevel * (1.0f + ((float)UIController.getAccentLevel()) / 128.0f);
        }
    }
    else
    {
        ampLevel = 0;
    }
    AmpController.outDca(ampLevel);
    
    // Oscillator
    OscController.setFrequency10(SequenceSender.getFrequency10());
    OscController.outDco();
    
    // Filter Env Mod
    uint16_t cutoff16 = FilterController.getCutoff();
    uint8_t resonance = FilterController.getResonance();
    uint8_t mod = FilterController.getModLevel();
    float modCoeff = (float)mod / (float)(cutoff16 << 1);
    cutoff16 = cutoff16 * (1.0f + ((float)level / 0x8000) * modCoeff);
    if (cutoff16 > 255) {
        cutoff16 = 255;
    }
    FilterController.outDcf(cutoff16, resonance);
    
    if (ticks == 0)
    {
        EnvelopeGenerator.init(envelope);
        playingStep = SequenceSender.getStep();
        UIController.setPlayingStep(playingStep);
    }
}

シーケンサーの本体で1msごとにシンセ(DCO, DCF, DCA)に値を送っている部分。

BaseMachineのファームウェアは最初はArduino Unoでやっていたので基本的に16bit整数演算にしていたが、Nucleo F401はCortex-M4でFPU付きなのでFilterにエンベロープをかけるあたりは単精度浮動小数点演算で妥協した。

もう少し考えれば整数演算に落とし込めると思うが、なんと言ってもめんどくさい(@@;

Cortex-M4もM0とくらべて高いわけでもないし、次にシーケンサーを作るとしたらCortex-M4の浮動小数点数演算でどこまでできるかという話になるかもしれません。

mbed repository:
https://developer.mbed.org/users/ryood/code/BaseMachine/ revision:29

メモ:


DCAのエンベロープはDACのMCP4922で受けて電流値に変換し、OTAのNJM13700をDCAとして使っているので、自然と(あ、いやLPFを一回かましているのでわざとです)アナログチックな波形になっているが、今回はDigital POTのAD8403でデジタル的に受けているので、エンベロープ波形もデジタル的だと思う。過激なので面白いと言えば面白いですが。

演算で対数カーブにするのもコンセプトとずれるし、アナログ素子を通してなんとかならないかなあ。

今日はもう疲れたので次こそは音出し動画をつくります。

やったことを書き留めておかないと1週間後には何をやってたか忘れてしまいますゆえ。

2017年5月4日木曜日

ベースマシン SVFとVCVSの出音の比較

ベースマシンのVCVS LPFとSVF LPFを交換して出音を比較してみた。


エフェクトも何もかけていない単体の出音なのでかなり情けない感じですが(^q^;

PSoC 4 DCOからはノコギリ波を出力し、CutoffとResonanceを適当にいじくっている。

VCVSの方は発振しやすいのに対し、SVFはかなりおとなしい。

SVFとVCVSでNucleoのファームウェアを切り替えられるようにするのとTieでDurationを引き伸ばすようにソースコードを修正。

mbed Repogitory:
https://developer.mbed.org/users/ryood/code/BaseMachine/ Revision:24

メモ:


VCVS LPFの回路を見直してみると、入出力とも仮想GNDで受けている。(参考「VCVS DCF シールドでけた」)

VCVS LPFをつなぐと320mA程度電源電流が流れ、SVFだと300mA以下。←メモるのを忘れていたのでちゃんと調べる

<追記:2017.05.07>

自作の電流計の電源をOFFにして0.1Ωのシャント抵抗に直接テスタを当てて電圧を測定。こうするとLED電圧表示器より精度よく測れる。


電源オフ: 2.5mV / 0.1Ω = 25mA
VCVS: 28.1mV~28.2mV / 0.1Ω = 281mA~282mA
SVF: 25.3mV~25.8mV = 253mA~258mA

VCVSの方が30mA程度多く流れているようだ。

NJM2732のDATASHEETによると


と最大出力電流が25mA程度のようなので、NJM2732の出力電流が頭打ちになっている可能性が高い。結構やばいですね(^q^;

</追記>

VCVSは基板内部で仮想GNDを作っているのでNJM2732の出力制限が効いてなんとか動作しているのだろうか?やっぱり近いうちに作り直したほうがよさそうだが、動いてはいるので悩むところ。

リズムマシンとミックスしてみたが、動画作るのがめんどくさいのでまたいずれ。

2017年4月10日月曜日

ベースマシン ダンボールとダイソーのクリップボードで筐体を試作してみた。

ボンネット風にベースマシンの筐体を作ってみた。材料は

クリップボード×2: 216円(@ダイソー)
蝶番: 250円ぐらい(@ホムセン)
ゴム足: 60円(@秋月)
蝶番の穴経に合ったボルト/ナット
アマゾンや秋月の箱
ガムテ/メンディングテープ

斜めから

上から

上面はUI系の基板を並べている。

ボンネットをあけたところ

ボンネットの中にはシンセ本体と電源を格納。

後ろから

一応、家具用の蝶番で固定している。蝶番に付属の木ネジでは薄いプラ板に固定できないので手持ちのM2のボルト・ナットで固定した。ダンボールの方は木ねじで固定(もちろんスカスカです)

外部からのアクセスはACアダプタ用のDCジャックと音声出力用のRCAジャック。底面にネジ頭がでているので、滑らないようにゴム足を付けている。

小学生の夏休みの工作レベルだが、机の上に乗るサイズになった。

さすがに強度的に不十分なので崩壊したら木板で枠をつくってみることにする。

2017年4月7日金曜日

LT1054を使った±9V電源 でけた

Ktec 12V/3A(おそらくスイッチングタイプ)のACアダプタ(参考:「ベースマシン ACアダプタを使った電源の構想」)をつないで電圧変動/ノイズ/温度を測定してみた。

負荷は+9V出力に100ΩのRを3本並列(≒33Ω)/約273mA、-9Vに100ΩのR/約-90mAをつないだ。


測定結果

+9V電圧: +8.97V
-9V電圧: -8.06V→-8.02V
電源電流: 425mA(自作の電流計で測定)

負側の電圧は10分程度計測して徐々に低下。

LT1054の表面温度

877秒で54.7℃程度まで上昇。サーミスタを固定していたカプトンテープが剥がれてサーミスタが浮いてしまったので測定中止(^q^;

7809の表面温度

866秒で49.8℃程度まで上昇。

Google+の電子工作部で教えてもらって、秋月の10mm幅のカプトンテープにしたらaitendoのものより素子に固定しやすくなったが、素子が発熱すると粘着力が弱くなるのか剥がれてしまうことが多い。もうちょっと幅広のものをハサミでちょきちょきカットして使うとか2枚重ねてガバッと覆った方がいいかな??あんまり大きくカバーしてしまうと熱がこもってしまうので痛し痒しですが。

出力波形(オシロのAC結合で測定)



ch1:+9V出力 ch2:-9V出力

ブレッドボードで実験した時(参考:「LT1054を使った±9V電源」)より電圧変動は少なくなっているが、スパイクノイズが増えているようだ。波形も逆な感じだし、ACアダプタを電源タップに挿している向きが逆なのか??←今日はもう測定環境を作るのがめんどくさいのでそのうち調べるかも?

ベースマシンに接続


ベースマシンにつないでみた。


右下が今回作製したLT1054電源。ACアダプタから+12Vを入力して±9Vを出力し、右上の5V/3.3V/±2.5V安定化電源に入力している。

ベースマシンを動作させて5V/3.3V/±2.5V安定化電源基板上の電圧を測定してみた。

+9V電圧: +9.01V
-9V電圧: -8.56V
+5V電圧: +5.12V
+3.3V電圧: +3.33V
+2.5V電圧: +2.56V
電源電流: 296~310mA

5V/3.3V/±2.5V安定化電源の電源スイッチをOFFにした場合、電源電流20mAとなった。

電源波形


ベースマシンを動作させた状態で、5V/3.3V/±2.5V安定化電源上の±9V出力をAC結合してオシロで測定してみた。


ch1:+9V ch2:-9V

スパイク状のデジタルノイズは乗っているが(電源の出力先がデジタル回路なのでしかたがないと思う)、電圧変動はあまりなさそうなのでこれで使っていくつもり。

メモ:


LT1054は400円@秋月と結構値段が高い。LT1054の製造元のLinear TechnologyはAnalog Devicesに買収されたようだが、ニュース記事を読んでみると「営業利益率4割を超える超優良企業」とあって割高なんだと思う。

同じ負電圧を作り出すNJU7660(2個で140円@秋月)もかんたんにテストしてみたがうまく動かせなかった。

どうしても単電源から負電源を作り出す必要があるならかんたんに動かせるLT1054は有用だが、ノイズや出力電流を考えると、安いACアダプタを2個使って正負の3端子レギュレータで安定化して使ったほうがコストパフォーマンスは高いと思う。


2017年4月4日火曜日

LT1054を使った±9V電源 はんだ付け完了

回路図

基板図

部品面

ハンダ面

3端子レギュレータの7809につけている放熱器はM3のねじで固定するようになっていて、今回もM3のプラねじで基板に固定した。ねじが導通しても7809のGNDとつながり、直下の導線がGND線なので金属製でもかまわないと思うが、バクチを回避(^q^;

今回は少し大きめの3.5mmのドリル穴をあけて、はんだ付け中は金属製のねじで固定してはんだ付け後、プラ製のねじに交換した。しっかり固定できた感じだ。

出力状態を測定

+9V側に100Ωの負荷をかけて(約+90mA)出力電圧は-9.04V
-9V側に100Ωの負荷をかけて(約-90mA)出力電圧は-7.99V

ベースマシンに繋ぐ前にもう少し測定する予定。

Github:
https://github.com/ryood/BaseMachine/tree/master/LT1054_%2B-9V_PSU

2017年4月1日土曜日

LT1054を使った±9V電源

手持ちの部品の関係で定数を多少変更してみた。

回路図

12V程度のACアダプタを電源として使うことを想定。ノイズ/電圧変動が低減できるので、C7は470uFのOSコン。

基板図

※配線まだ

部品並べ

C基板(サンハヤトICB-288G)に収まりそう。

LT1054のVinに入れるデカップリングコンデンサ


回路図のC6で、このコンデンサの特性によって±9V両方のノイズ/電圧変動が変わるのでもう少し調べてみた。


+9V: +8.93V
-9V: -7.48V→-7.38V
電源電流: 420mA(自作の電流計で測定)

4.7uF アルミ電解(普及品)

ch1:+9V出力(AC結合) ch2:-9V出力(AC結合)

4.7uF タンタル電解(aitendo)

2.2uF フィルム

10uF アルミ電解(オーディオ用)(nichicon FG)

いずれも正側のノイズ/電圧変動の方が出ているが、10uF アルミ電解(オーディオ用)が良さそう。

前回の測定より全体的に良くなっているので、何か測定条件が違ってるのかもしれない。