結局GPV予報の通り雲がでてしまったので、話し合いの
結果今日は断念。大人しく昨日のMIDIシンセの続きやる。
とりあえず8ポリで、ベロシティーもそれなりに対応
出来るところまでやったので、次の一手を考える。
(1)全16チャンネルまぜこぜの入力に対応する
(2)ノートオンでサステイン効きながら減衰する
(3)Wave Tableを正弦波じゃなく弦楽器的音色に
といったあたり。(3)は最後にオプションでやる
として、んで(1)は最大の難関。まずは残った
(2)に手を付ける。
割り込みが20000回/秒なので、適当に間引きして
1オペずつ舐めながら、ベロシティーを減衰させていく
という感じで、昨日のスケッチに修正を入れてみる。
こんな感じ。
(修正したのはタイマ2割り込みベクタの飛び先だけ)
/* process at timer2 interruption occurred */
ISR(TIMER2_COMPA_vect) {
int i;
static unsigned char j = 0;
char k;
static int l = 0;
for (i=0;iif ((l++)==100) {
l=0;
j++;
k = (j & 0b111);
if (op_using[k] != 0) {
if((op_velocity[k] -=1) <= max_notes) {
op_velocity[k] = max_notes;
}
}
}
}
(もちろんこの中で更新掛けている配列op_velocity
の宣言にはvolatileつけておく)
この関数の主に下半分が追加部分。とりあえず色々
鳴らしてみる。うん。まぁ、満足レベルとは
いえないけど、まぁこの程度の動作ならいいかな。
減衰している感じはある。ちなみに、ノートオン
している間は最小音量まで行ったらそれ以上
は減衰させないというつくり。(余韻)
ロジック的にはもはや8オペが大前提になって
しまった。(0b111とand取ったり、固定値で100回
舐めて減衰の掛かり方を決めてたり)
まぁ、とりあえず最低限それっぽく動くことを
大前提にしているので、その点では及第点。
次。全チャンネルの入力に対応するための情報収集。
MIDIライブラリの中身を開いて眺めてみる。
案の定、色々厄介な処理をしていることは判った。
MIDIの信号は、エクスクルーシブメッセージを除いても
1~3バイトの可変長なので、いま可変長メッセージの
どこまで処理しているか、とか、ありえない順番で
メッセージが来たらどう処理するかとか、メッセージに
よって振り分けを大量に行わないといけないので、
意外に厄介。
ArduinoのMIDIライブラリでは特定の1チャンネルしか
同時に選べないようになっているんだけど、こいつを
継承で作り直すのも大変。機能限定なんだから自分で
MIDI入力周りを作った方が多分楽。
とはいえ、MIDIインのNoteオン、Noteオフや
ピッチベンド程度に対応するだけでも、その他の
メッセージを支障なくこなす必要はあるし、
ランニングステータスも間違えずに判断させる
必要があって、これを「エラー」か「ランニング
ステータス」かをきちんと分けないといけないので
コード書くのが結構厄介。
シリアル入力自体は、Arduinoはコアプログラムを
読むと、64バイトだか128バイトだかのリングバッファ
を組んでくれているので、31250bpsならまぁあふれる
ことはないでしょう。純粋にMIDI周りだけ考えて
置けば大丈夫そう。ちょっとずつ考えよう。
この手のモノはやっぱライブラリを拝借するのと
自前で作るのは、敷居の高さが全然違うな。
(3)は、何かナイロン弦の弦楽器持ってきて生音を
録音して、そいつを256バイトのWaveTable用に変換
すればなんとでも鳴るでしょう。まぁ当然ウクレレ
使うんだけど。
まぁとりあえず、1歩前進と前向きに解釈。
http://headlines.yahoo.co.jp/hl?a=20120219-00000017-yom-bus_all
この、乳酸菌の嫌気性を使ってドラッグデリバリーする
って言うのはなかなか。他の嫌気性バクテリアでも
いいのかもしれないし、なんにしてもがん細胞の
あるところにだけ薬剤AとBを別々に運んで効果を
もたらすって言うのはスゴイ。ふとポリスノーツを
思い出した。
http://www.jiji.com/jc/v?p=foresight_9101&rel=y&g=soc
逆オイルショックか。要は危機要因を作り上げて、
価格を高止まりさせないともう下がってしまう局面
に来ているっていう裏返しだな。それはともかく、
メタンハイドレートの採掘、うまく行くといいな。
http://headlines.yahoo.co.jp/hl?a=20120216-00000017-mai-bus_all
韓国から東電に引き抜き。大体こういう場合は優秀な
人間は居なくなって、居なくなってもいい人は残る
んだよな。一時的でもいいんだけど、優秀な人には
残ってもらう為に報酬を上げて、そうじゃないひとの
報酬を下げたりしないと、安定供給だけじゃなく
安全性の担保もおぼつかなくなるんじゃないかな?
今後も原発をエネルギーポートフォリオの中心に
置くのか、それとも代替エネルギーに軸足を移す
のか考え時だろうな。
http://headlines.yahoo.co.jp/hl?a=20120214-00000079-mai-pol
八丁原発電所はパッと見、景観を損ねるような
発電所じゃなかったけどな。地熱発電、もっと
普及するといいのに。
地熱発電所って、熱源の温度が下がったときに、
上にある発電所の建物ごとどこか別のところに丸ごと
移動するとか出来ないのかな?震災のときにタイから
ガスタービン発電所を海上輸送してきたように。
あと、風力発電や太陽光発電は、発電量を平滑化する
ために、揚水発電をセットにしたらうまく動かない
のかな?台風とかは厳しいのかな?
http://headlines.yahoo.co.jp/hl?a=20120217-00000004-isd-game
うわ、今の時代にカラテカ?どんなモンに
なるんだろう?
http://headlines.yahoo.co.jp/hl?a=20120217-00000022-yom-sci
こういう宇宙ごみの掃除ロボって、日本ががんばって
やれないモンなのかな?基礎技術自体は日本で開発
して、実際に打ち上げて掃除するのは各国でお金出して
もらって、「ニッポンの技術で除去してます、えっへん」
って言ってよさそうなところじゃないのかな?
http://headlines.yahoo.co.jp/hl?a=20120219-00000007-zdn_n-inet
こういう記事ばっかだな。個人情報を意図的に抜き出す
コードを書いているんなら、単に改善だけじゃなくて
再発防止とか色々考えることあるだろうに…