|
|
当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内
情報セキュリティおよび個人情報の取り扱いについて コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。 |
cat eva_op.mid | aplaymidi -p 16:0 -そうとなれば、(cat eva_op.mid に相当する部分を) C プログラムにて MIDI データファイル(.mid)を上述の如くパイプで結合すれば、うまく行くだろうと踏んでいました。そのために、CATコマンド に相当するプログラムを作ってもみました。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define FILENAME "eva_op.mid"
int main(void) {
FILE *fp;
int c;
char a[2];
if ((fp=fopen( FILENAME, "rt"))==NULL) {
printf( "file open error:%s\n", FILENAME );
exit(1);
}
while(( c = fgetc(fp)) != EOF ){
a[0] = (char)c;
a[1] = 0;
fprintf(stdout,"%c", a[0]);
}
close (fp);
}
当然、CAT 相当のプログラムですから置換しても問題なく動作しました。ところがしかし、「バイナリ・エディタ」で音符の数を適当なデータに書き換えてみると、まったく動きません。| オプション指示 | 生成される曲内容 |
| 指定なし | "ソ"だけの曲 |
| -b | 音色変更 |
| -h | 和音生成 |
| -a | 複数チャネル |
| 実行 | 生成内容の表示(16進) |
| ./so | 4d 54 68 64 0 0 0 6 0 0 0 1 0 20 4d 54 72 6b 0 0 0 c 0 91 43 55 40 81 43 11 0 ff 2f 0 |
| ./so -b | 4d 54 68 64 0 0 0 6 0 0 0 1 0 20 4d 54 72 6b 0 0 0 f 0 c1 7b 0 91 43 55 40 81 43 11 0 ff 2f 0 |
| ./so -h | 4d 54 68 64 0 0 0 6 0 0 0 1 0 20 4d 54 72 6b 0 0 0 1c 0 91 3c 55 0 91 40 55 0 91 43 55 40 81 3c 11 0 81 40 11 0 81 43 11 0 ff 2f 0 |
| ./so -a | 4d 54 68 64 0 0 0 6 0 0 0 1 0 20 4d 54 72 6b 0 0 0 17 0 c2 7f 0 92 43 55 0 91 43 55 40 81 43 11 0 82 80 11 0 ff 2f 0 |
case 2:
/* 和音を発音 */
zero(); /* すぐ次に */
tone_do(); /* "ド"を発音 */
zero(); /* すぐ次に */
tone_mi(); /* "ミ"を発音 */
zero(); /* すぐ次に */
tone_so(); /* "ソ"を発音 */
wait(); /* 待つ */
tone_stop_do(); /* "ド"を停止 */
zero(); /* すぐ次に */
tone_stop_mi(); /* "ミ"を停止 */
zero(); /* すぐ次に */
tone_stop_so(); /* "ソ"を停止 */
zero(); /* すぐ次に */
b = sizeof(end); /* トラック終了 */
hexset(end, b, 1);
hexout();
break;
● 最終段階のプログラム作り./sd.bsh | 作ろうとしているプログラム(下述の m.c)のように使います。
#! /bin/sh
while true
do
sleep 1; echo "17:22:38 20"
sleep 1; echo "17:22:38 21"
sleep 1; echo "17:22:38 22"
sleep 1; echo "17:22:38 23"
sleep 1; echo "17:22:38 25"
sleep 1; echo "17:22:38 80";
sleep 1; echo "17:22:38 110"
sleep 1; echo "17:22:38 5000"
sleep 3
sleep 1; echo "17:22:38 21"; echo "17:22:38 23"; echo "17:2:38 25"
sleep 3
done
# 20 ftp/data
# 21 ftp
# 22 ssh
# 23 telnet
# 25 smtp
# 80 http
# 110 pop3
# 5000 test
次回は最終回で、プログラムを完成し、音を聞いてみます。このブログ記事を参照しているブログ一覧: MIDI で遊ぶ 《tcpdump を音で見る》(3)
このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/2177
おすすめ書籍 |
![]() |
コメントする