ニコニコ動画で、PC-8801系の動画をいくつか
眺めてて、チップチューンのことをモヤモヤと
思い出した。
Bio100%の潜水艦のゲーム、Super Depth。
http://bio100.jp/game_review/game01.html
ご存知のとおりの、あのSuper Depthなんだけど、
BEEP音(単音)で無理やり和音を出力してるって
いうのもひとつのポイントだったと思うんだけど、
今となっては、やっぱりノスタルジーすら感じる
チープな音色。
で、ノスタルジジイとしては、むしろそのチープ
な感じを、チップチューンの音源にできないかと
妄想し出す。
以前、
http://nekosan0.bake-neko.net/connection_synth1.html
Arduinoで正弦波の8ポリ出力が出来るMIDI音源とか、
http://picavr.uunyan.com/avr_m2_ppsg.html
似非PSG音源とかを作ったんだけど、これとはまた違う
チップチューンで使えそうな、チープな音源を作れ
ないかなぁ?と。
で、手っ取り早くこの手の音源を作るといえば、
やっぱArduinoでサクッと実験。
http://arduino.cc/en/Tutorial/Tone
ArduinoチュートリアルのページのTone関数の
サンプルを弄って、4和音を出してみる。
#include "TimerOne.h"
#include "pitches.h"
int melody[][8] = {
{NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5},
{NOTE_C5, NOTE_B4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C4},
// { 0, 0, 0, 0, 0, 0, 0, 0},
// { 0, 0, 0, 0, 0, 0, 0, 0},
{NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6},
{NOTE_C6, NOTE_B5, NOTE_A5, NOTE_G5, NOTE_F5, NOTE_E5, NOTE_D5, NOTE_C5}
// {NOTE_C3, NOTE_D3, NOTE_E3, NOTE_F3, NOTE_G3, NOTE_A3, NOTE_B3, NOTE_C4},
// {NOTE_C4, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_F3, NOTE_E3, NOTE_D3, NOTE_C3}
};
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
4, 4, 4, 4,4,4,4,4 };
int notes[4];
void callback() {
static int pattern = 0;
//tone(8, melody[thisNote],noteDuration);
if (notes[pattern] != 0) {
tone(8, notes[pattern]);
} else {
noTone(8);
}
pattern++;
if (pattern == 4) {
pattern = 0;
}
}
void setup() {
Timer1.initialize(1000000 / 100); // initialize timer1, and set a 1/100 second period
Timer1.attachInterrupt(callback); // attaches callback() as a timer overflow interrupt
for (int i=0; i// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8; thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
//tone(8, melody[thisNote],noteDuration);
for (int i=0; idelay(noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
//noTone(8);
for (int i=0; ivoid loop() {
}
(ヘッダファイルは、チュートリアルページに
載ってるので、それをそのままコピペで使用)
D8ピンに圧電素子とか繋げば、それなりに音がでて
くることは判った。
処理方式としては、Toneが当然単音なので、Super
Depthのように、時分割で音程を切り替える方式。
1/100秒ごとに音程を切り替えるようにしてみた
んだけど、とりあえず、オクターブ3以上は問題なく
出てるみたい。
オクターブ2以下は実験してないのでわかんないけど、
1/100秒ごとに切り替えるのと、タイマ割り込みと
微妙に影響しあうと思うので、低音を優先するなら
タイマ割り込み周期を1/50とか、長く設定すれば
よいかと。
(あまり長くすると、音が濁っちゃうけど)
とりあえず、4ポリくらいは、処理能力的には全然
問題ないことが判った。まぁ、そりゃそうだな。
無理があるとすれば、処理能力の方じゃなく、
処理方式に伴う音の濁りの方。
4ポリが出れば、とりあえずセブンスコードくらいは
鳴らせるので、簡単な曲はこれだけでも鳴らせるはず。
http://www.weblio.jp/content/%E3%82%BB%E3%83%96%E3%83%B3%E3%82%B9%E3%83%BB%E3%82%B3%E3%83%BC%E3%83%89
で、音がそれなりに出ることが判ったので、コイツに
MIDIライブラリを組み合わせて、MIDI音源化したら、
チップチューンの音源になりそうかなぁ…と。
メインではなくても、ワンポイントのおかず的に。
MIDI化は、8ポリシンセでやってることの半分なので、
造作ないだろうなと。
https://www.youtube.com/watch?v=Nk6XYuK4QeI
このArduino MIDI音源ライブラリ、詳細が載ってる
ページが見てみたいなぁ。
http://ascii.jp/elem/000/000/943/943505/
へぇ。蛍石を人工的にサクサク作れるようになるみたい。
そしたら、高性能なレンズがジャンジャン作れるように
なるわな。
それは大歓迎としても、蛍石って、経年劣化で曇ったり
変色しちゃうんだよな。人工のでもやっぱりそういう
欠点は継承しちゃうのかな?
あと、硬度が低いから、傷つきやすいとか。最近のは
そうでもないのかな。
http://page13.auctions.yahoo.co.jp/jp/auction/r119536529
あぁ、この8ビットのナツカシPCカタログはお宝だったな。
ちょっと手が出ない値段だったけど。