ハマっている「お菓子」を教えて!

こんばんは。PICやH8などのマイコンを使って遊んでいます。プログラムの開発にはC言語を使用しています。
メロディを演奏するのに、どうしたら簡単に楽譜を入れることができるか、皆さんの知恵を貸してください。

圧電サウンダーをH8/3052Fに繋げて、
- オクターブ3のラ(220Hz)~オクターブ5のラ(880Hz)の音を出す
- 十六分音符~全音符で音の長さを決める(付点、休符もOK)
- テンポ60~テンポ160でメロディラインのスピードを制御する
まではできて、次のような構造体で耳コピで作ったドラえもんのイントロ部分を演奏するところまでできました。

/* ドラえもんの曲の頭のつもり */
#define TEMPO TEMPO_140
static const short DoraemonIntro[8][2] = {
 { Do4, EIGHTH_NOTE },
 { Fa4, EIGHTH_NOTE },
 { Fa4, EIGHTH_NOTE },
 { La4, EIGHTH_NOTE },
 { Re5, QUARTER_NOTE },
 { La4, QUARTER_NOTE },
 { Do5, HALF_NOTE },
 { Do5, QUARTER_NOTE },
};

しかし、このように耳コピ+手打ちで楽譜を作っていたのでは、簡単な曲を1曲入れるだけで数時間かかってしまいます。もっと楽をしたいのですが、どうやったら楽に楽譜を入力出来るでしょうか?

全然別なやり方でも歓迎いたします。
また、簡単な曲の楽譜がある場所なども教えていただけると助かります。

A 回答 (2件)

この程度の音源であれば、MML(Music Macro Language)を使うのが一番かと思います。


MMLは楽譜を単純に文字列で表現する方法です。MMLコンパイラを自作して構造体を吐かせるのもよし、インタープリタのように逐次解釈するのもよしといったところです。

MMLの文法そのものについては、Googleで検索するなどすれば入手できると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
MMLという言葉ははじめて聞きました。Googleで検索してみたら、かなりの数がヒットしました。しかし、MMLの仕様は皆さん独自に定義しているように見えたのですが、オリジナル(源流)はどこにあるのでしょうか?

MMLの楽譜もインターネット上で公開されているようですね。
C言語用の構造体を吐き出すMMLコンパイラ(というより、各音の高さと長さに切り分けるパーサーで十分?)くらいなら作れそうな気がしますので、チャレンジしてみます。

お礼日時:2005/09/03 01:40

> しかし、MMLの仕様は皆さん独自に定義しているように見えたのですが、オリジナル(源流)はどこにあるのでしょうか?



源流は私もよくわかりません。
BASICと同様に方言だらけですが、入手可能な最も詳しい仕様にあわせるのが現実的でしょうね。
    • good
    • 0
この回答へのお礼

度々ありがとうございます。

> 入手可能な最も詳しい仕様にあわせるのが現実的でしょうね。

あまり難しいことをしようとすると実装が追いつかなくなりそうです。入手できた仕様から私にとって不要なものを切り捨てて、シンプルな独自仕様で望もうと思います。

お礼日時:2005/09/05 16:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報