音のプログラミングの本を入手しました。今回はプログラミング言語は「Python」を使っています。
書籍は
です。「サンプルプログラム」はダウンロード可能です。
Pythonの文法は殆ど知らないのですが、少し読んだところで(第2章)、プログラムの作成に「ChatGPT」を使ってみることにしました。
「プロンプト」には「1kHzのsin波を10秒鳴らす(wavファイル)pythonのプログラムを作って!」
注)赤い文字の部分は入力を誤ったり入力し損ねた部分(下図参照)
としました。プロンプトは入力を誤った状態だったのですが、ChatGPTは賢く入力を訂正してから返事をくれました。
#プログラムここから
import numpy as np
import wave
# パラメータ設定
sample_rate = 44100 # サンプリング周波数(Hz)
duration = 10 # 秒
freq = 1000 # 周波数(Hz)
amplitude = 0.5 # 音量(0.0〜1.0)
# サイン波データを生成
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)
waveform = amplitude * np.sin(2 * np.pi * freq * t)
# 16bit PCM形式に変換
waveform_integers = np.int16(waveform * 32767)
# WAVファイルに書き出し
with wave.open("sine_1kHz_10s.wav", "w") as wav_file:
n_channels = 1
sampwidth = 2 # 16bit = 2 bytes
wav_file.setparams((n_channels, sampwidth, sample_rate, 0, 'NONE', 'not compressed'))
wav_file.writeframes(waveform_integers.tobytes())
print("✅ 'sine_1kHz_10s.wav' を出力しました。")
#プログラムここまで
このプログラムで1kHzの正弦波が出来上がるので、出来上がった波形ファイルを「Audacity」で見てみることにしました(Audacityの入手は下記)。また、出来上がったプログラムは少し書き換えるだけで、音の高さや音の長さを変えられるので(生成されたプログラムの応用も兼ねて)「ラの音」(440Hz)のファイルを生成し、Audacityに2つのトラックを作成して1kHzと440Hzを並べて表示して、音としての再生も確認しました。
(Windows版)
(Mac版)
(1kHz(上段)と440Hz(下段)とを並べている図)
余談ですが、今回はここまでの作業はWindows環境で行いました。ですが出来上がった音のファイルはMac/iPhoneでも再生してみたいので、Windows-モバイルデバイスファイル共有の設定も行いました(スマートフォン連携)。
(Windowsの「スマートフォン連携」)
(ファイルの送信)
(送信完了)
送信完了した正弦波の.wavファイルはアイコンをクリックすると音を鳴らす準備が始まります。
本格的に書籍を読むのはこれからですが、少し読んでAI(ChatGPT)を使って試してみると、ちゃんと使えるプログラムのソースコードを出力してくれるのが確認できたので、やはりAIはすごいものだと感心しました。音のプログラミングとしても、最も基本となる正弦波の音をプログラムで簡単に作ることが出来ることを確認できたことも記しておきます。







