もらいなき

2004/06/24 放送のトリビア(trivai) の泉でこんな興味深い放送をしていました。
一青ヨウの「もらいなき」の再生速度を遅くすると(80%)、平井堅が歌っているように聞こえる

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 随分前に作成したプログラムを Windows10 & Visual Studio Enterprise 2017 の環境で動かします。
    Hello C# に習って、プロジェクト名を [Console] でプログラムします。
    音楽のテンポを遅くするには WAVE ファイルのヘッダ部に記述されているサンプリングレートと転送速度を書き換えます。
    WAVE ファイルの次の記述を書き換えて演奏して下さい。いずれも80%に落とした値です。
    Binary Editor で直接ファイルを修正してダブルクリックすると、マイミュージックが起動して平井堅が歌っているように聞こえました。
    80%に落とした WAVE ファイルをダウンロードページの Binary Editor から提供します。
    修正する項目 バイト位置 元の値 変更する値
    サンプリングレート 24~4 Byte 44AC0000 D08D0000
    データ速度 28~4 Byte 10B10200 40270200
  2. 空のプロジェクトから作成したコンソールモードの Console.cs です。
    今回は「もらいなき.wav」を入力して、再生速度を80%に落とした「w.wav」を作成します。
    事前に "C:\\data\\test\\もらいなき.wav" を格納しておいて下さい。
    //★ もらい泣きのテンポを変える    前田 稔 ★
    using System;
    using System.IO;    // for File, StreamReader
    
    class BinFileRead
    {
        public static int Main()
        {
            string file_name = "C:\\data\\test\\もらいなき.wav";
            byte[] byt = new byte[20000000];
            int    leng;
    
            if (!File.Exists(file_name)) return -1; //ファイルの有無をチェック
            FileStream reader = File.Open(file_name,FileMode.Open);
            leng= reader.Read(byt,0,byt.Length);
            reader.Close();
    
            byt[24]= 0xD0;
            byt[25]= 0x8D;
            byt[28]= 0x40;
            byt[29]= 0x27;
    
            string out_name = "C:\\data\\test\\w.wav";
            FileStream writer = File.Create(out_name);
            writer.Write(byt,0,leng);
            writer.Close();
            Console.Write("complete");
            Console.ReadLine();
            return 0;
        }
    }
    
  3. byte[] byt = new byte[20000000] で余裕を持って領域を定義します。
    byt に "もらいなき.wav" を一挙に読み込みます。
    転送速度を書き換えたデータを "w.wav" の名前で書き出します。
    平井堅が歌っているように聞こえるので演奏してみて下さい。

[Next Chapter ↓] Volume M8

超初心者のプログラム入門(C# Frame Work)