Re: FileSystem selection on RedHatLinux9(kernel-2.4.20-8)
<bhqu9m$29h0$1@nwall1.odn.ne.jp>の記事において
wnabe@par.odn.ne.jpさんは書きました。
>>いや、通常のサウンド(AC97とか)や beep音を利用した pcsp? ではなくて、昔の
>>BASIC の PLAY 文風 MML で鳴らないかなと思ったんです。納品時に付いていたサ
>>#いつだったか fj.comp.oldies で見かけた 'o4D8G4A8B4A8G8C8C8C8D8E2D8F...'
>>#を鳴らしてみたかっただけとも言うが。
どこで拾ったか全く記憶にないのですが、
HDDを探したら出てきました。
fjだったかもしれません。
rootのsuidなりsudoなりで実行しましょう。
% ./play "c1defg"
--------------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/kd.h>
int normal_table[]={374, 333, 629, 561, 500, 471, 420};
int sharp_table[]={353, 314, 594, 529, 471, 445, 396};
int duration_table[]={0, 300, 200, 150, 100, 75, 50, 37, 25, 18};
void beep(unsigned int ms, unsigned int freq)
{
int fd, arg;
if(freq){
if((fd = open("/dev/console", O_RDWR)) < 0){
return;
}
arg = (ms << 16) | (freq/2);
ioctl(fd, KDMKTONE, arg);
close(fd);
}
usleep(ms << 10);
}
int main(int argc, char *argv[])
{
char *p, c, nc;
int *table = normal_table;
int n, oct=2, duration=75;
if(argc == 1){
beep(duration, 1600);
exit(0);
}
for(n=1; n<argc; n++){
for(p = argv[n]; *p; p++){
c = tolower(*p);
nc = *(p+1);
if('a' <= c && c <= 'g'){
if(isdigit(nc)){
duration = duration_table[nc-'0'];
p++;
}
beep(duration, table[c - 'a'] << oct);
table = normal_table;
}else if(c == 'r'){
beep(duration, 0);
}else if(c == '#'){
table = sharp_table;
}else if(c == '+' && oct > 0){
oct--;
}else if(c == '-' && oct < 5){
oct++;
}
}
}
exit(0);
}
--------------------------------------------------------------
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735