エンベロープ・ジェネレータ

By 酔漢 - Last updated: 火曜日, 2月 14, 2017

雲仙用のドッグ・フードを食べる企画として作成しているシンセサイザー。Youtubeではすでに音が出る様子を公開していますが、ブログでは粛々と個々のモジュールを紹介していきます。

エンベロープ・ジェネレータは音の特徴を左右する重要なブロックです。ある意味シンセサイザーの顔とも言えるでしょう。VFOの周波数変調に使うやりかたもあるのですが、お試しシンセとしてひねらずに振幅制御に使うことにします。

Read the rest of this entry »

Filed in シンセサイザー

状態変数フィルタ

By 酔漢 - Last updated: 日曜日, 2月 12, 2017

シンセサイザー用に状態変数フィルタを実装しました。

このフィルタはコントロール周波数およびQを独立に操作することが可能で、かつLPF、HPF、BPFとして同時に利用することができます。 Read the rest of this entry »

Filed in シンセサイザー

DC Blocker

By 酔漢 - Last updated: 木曜日, 2月 9, 2017

雲仙のドッグフードとして作っているシンセサイザーの続きです。VFOの後ろにDC Blockerを置きました。

今回作ったVCOはDC成分をそのまま出力しています。三角波の場合、DC成分は振幅のちょうど中点ですので計算に簡単に取り除くことができます。矩形波の場合もあらかじめデューティー比がわかっているので計算で取り除くことができます。しかし、後で手を加えたときに再計算をするのが面倒なのでDC Blockerをかけました。

Read the rest of this entry »

Filed in シンセサイザー

VFOを雲仙に組み込む

By 酔漢 - Last updated: 土曜日, 2月 4, 2017

前回はやっつけでVFOクラスを作りましたが、今回は作ったVFOを雲仙に組み込みます。もともとは「ドッグフードを食べる」ことで雲仙を鍛えるのが目的の企画ですので、どちらかというと前回より今回の方が本筋です。

Read the rest of this entry »

Filed in シンセサイザー

VFO

By 酔漢 - Last updated: 木曜日, 2月 2, 2017

手始めにVFOを実装します。

Read the rest of this entry »

Filed in シンセサイザー

ドッグフードを食べる

By 酔漢 - Last updated: 火曜日, 1月 31, 2017

先日、雲仙フレームワークについてスケルトン・プロジェクトと一群の文書を公開しました。

これで気が向いたときに好きにいじり回せるオーディオ信号処理プラットホームが完成しました。あとは好きなときに遊べば済みます。が、

「はい完成です」

では味気ないですし、自分が使う段になってトラブルが発覚すると気分が萎えるものです。そもそも、公開したものを自分が使ってないというのもどうでしょうか。

ということで、自分で作ったものの実験台になることにしました。ドッグフードを食べる、というやつです。しばらく実験プロジェクトを続けます。

お題はシンセサイザーです。

Filed in シンセサイザー

雲仙オーディオ・フレームワーク用のスケルトンを公開しました。

By 酔漢 - Last updated: 日曜日, 1月 29, 2017

以前作ったmbed用のオーディオ・フレームワーク『雲仙』用にプロトタイプ用のスケルトンを公開しました。

このスケルトンは、雲仙を使うために必要な初期化作業があらかじめ作り込まれており、利用者は穴埋めをするだけで簡単にオーディオ信号処理を行うこと事が出来ます。信号処理ブロックサイズとサンプル周波数は、main.cppの冒頭で簡単に変更できます。

また、UI基板『浮舟』に対応しており、ユーザーは外部のボタン、LED、ボリュームを簡単に利用できます。

Filed in 日記

音の加工

By 酔漢 - Last updated: 水曜日, 1月 25, 2017

Scilabについてメモ。

WAVファイルの読み込み:

w = loadwav("ファイル名");

ステレオからモノラルへ:

x = w(1,:)+w(2,:);mat

ベクトルを音として再生する:

sound(w(1:1000000),fs);

ここでfsはサンプル周波数。ただし、wが2列の場合ステレオになるはずだが、サンプル周波数を倍にしなければならないかも知れない。wをスライスして使っているのは、大きなベクトルをsoundに与えると、手元のScilab 5.5.0 64bit版がエラーを返すから。

FIR LPFを作る:

h = ffilt( 'lp', taps, f_cuttoff);

f_cutoffは7.5kHz @ Fs=48kHzならば1.5625。

FIRフィルタにかける:

y = convol( h, x );

 

Filed in Scilab

mbedライブラリのバージョンに躓く

By 酔漢 - Last updated: 日曜日, 1月 15, 2017

昨晩、mbedでコンパイル中に妙なエラーに悩まされました。

Error: Symbol __asm___15_arm_scale_q15_c_05e3aacf____REV16 multiply defined (by arm_scale_q7.NUCLEO_F746ZG.o and arm_scale_q15.NUCLEO_F746ZG.o).

シンボルが多重宣言されていると言うエラーですが、宣言箇所はいずれもライブラリとしてmbed公式から引っ張ってきたものです。
一晩寝て頭を冷やし、漸く思いつきました。ライブラリをアップデートして解決です。プロジェクトを育てながら時折ライブラリをインポートしていくと、このようなことが起きるようです。

Filed in 日記

ベンチ検討中

By 酔漢 - Last updated: 金曜日, 1月 13, 2017

作業用のベンチを作ろうと画策しています。

昨年の頭頃に、

「いい加減、ちゃぶ台で半田づけするのは嫌だ」

と思い始めてベンチを作ろうとあれこれ調べていました。結局昨年は公私共々に多忙になってそういったことを考える余裕が無かったのですが、年も明けて、だいぶ前向きな考え方ができるようになってきました。

当初は3メートルくらいの台を作って、左でPC、右で作業と考えていました。広く作業できるのが利点ですが、部屋の窓へアクセスできなくなるため、家族が難色を示していました。夏熱いですしね。ところが、Twitterの「電子工作愛好家の作業環境が見たい」タグを見て、だいぶ考えが変りました。

今考えているのはPCのモニタ+ステレオスピーカーの幅に抑えて、横にメタルラックを立てると言うものです。奥行きは少し深め。こうすると机の横から余裕を持って部屋の窓へアクセスできます。また、奥行きを深く持つことでモニタの後ろにラジオやオーディオインターフェースを置き、マウント・アームでモニタを跳ね上げて使うことで、スペースを効果的に活用できます。モニターのハネ上げは、半田付けで汚れることの回避にもなりますね(ラジオが汚れる…)

毎回引っ張り出すのに難儀しているオシロスコープや顕微鏡はラックに収納しておけば手軽です。机が今より広いため、アームと照明のついたルーペをマウントすることもできます。

なかなか夢が広がります。

Filed in 日記