
BGMも効果音も0円で自作|Claude Code × Python で数字から作曲する方法
結論:音は「波」なので、Python と NumPy で数字を計算すれば作れます。数字の列を並べるとそのまま曲になり、Claude に「不穏な場面の BGM を」と言葉で頼めば、場面に合う音を作ってくれます。楽器も作曲ソフトも使いません。
なぜ自分で作るのか
フリー素材にも、それぞれ利用規約(表記の決まり・使える範囲)があります。自分で作った音なら、どこで使っても気にしなくていいうえ、長さや雰囲気を場面に合わせてすぐ変えられます。
動画で見る
森のIT屋さん:BGMも効果音も0円で自作 | 2026.11.02 公開予定音の正体は「波」
いちばん単純な音はサイン波です。1秒に440回ふるえる波が「ラ」の音になります。音の高さは、音の番号から計算できます。
# 音の番号 → 1秒にふるえる回数(Hz)
def hz(m):
return 440 * 2 ** ((m - 69) / 12)
# 69 がラ(440Hz)。番号が1つ上がると半音高い
波の形を変えると音色が変わります。倍音(高い音の成分)を足し、だんだん小さくすると、「ピー」が「ポロン」というはじく楽器のような音になります。
注意:音が急に始まる・終わると「プツッ」と雑音が出ます。はじめと終わりを短く大きく・小さくする(フェード)と消えます。高い音・大きい音は耳に痛いので、小さめから試します。
数字を並べて曲にする
mel = [72, -, 76, 79, -, 76, 74, ...] # 72はド、76はミ。「-」は休み bass = [48, -, -, -, 55, -, -, -, ...] # 1つの数字を 0.18 秒ずつ鳴らす(ここを変えると速さが変わる)
メロディと低い音(ベース)の数字の列を並べるだけで、プログラムはほぼ全部です。
場面ごとの曲と効果音
動画では4曲を使い分けています。ふだん(とぼけた明るい曲)・不穏(低い音+心臓の音)・しんみり(オルゴール)・緊迫(低い音を刻む)。どれも同じやり方で、数字と波の形を変えただけです。
{"text": "……だれか、いる",
"mood": "kurai"} # この行から不穏な曲
台本に「空気」を書くと、動画を作るプログラムが自動で曲を切りかえます。BGM は声の10分の1くらいの大きさがちょうどよく、同じ曲が長く続くと飽きるので場面で切りかえます。
効果音も同じ作り方です。「ポン」はたった3行です。
# 音を高くしながら、すぐ消す f = 500 + 900 * t # 高さがぐっと上がる s = sin(f) * exp(-t * 12) # すぐ小さく
ほかにも、チャイム(章が変わるとき)・ドドン(大事なテロップ)・シュッ(一気に寄るとき)を作って使っています。


