<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);
}

--------------------------------------------------------------