[小ネタ] 踏切の警報音を作る

投稿者: | 2021/08/03

Generation of railroad crossing alarm sounds by Python.

今日は小ネタです。

皆さん、踏切の警報音がどんなのだか御記憶でしょうか?

 (今はなき、石勝線夕張支線の踏切)

クルマを運転する人(でなくても)にとっては、踏切の警報音というのは「あちゃー。電車来ちゃったよ。あら!? 反対からも電車が来るのか…orz」という具合に、あまり好ましくない印象がありますが、多くの方が、そういえば、2つの音の不協和音みたいなやつだよな、くらいは御記憶なのではないでしょうか。

調べてみたところ、こんな資料がありました。

なるほど、なるほど。700Hz と 750Hz の電鐘を和音にして、1分間に 130回の頻度で鳴らせばいいんだそうです。

さっそく Python でコードを書いてみました。えいっ。

import numpy as np
import os
from scipy import signal
from scipy.io import wavfile

FS = 32000  # sampling frequency
MAX_AMP = np.iinfo(np.int16).max
FILENAME = "fumikiri.wav"

DECAY_RATE = 3.0
LEN_SEC = 60 / 130

t = np.linspace(0, LEN_SEC, int(LEN_SEC * FS))

# '** 0.5' due to converting power attenuation to amplitude attenuation
envelope = np.exp(- DECAY_RATE * t / LEN_SEC) ** 0.5

amp = 0.48 * MAX_AMP

s1 = amp * envelope * signal.square(2 * np.pi * 700 * t)
s2 = amp * envelope * signal.square(2 * np.pi * 750 * t)
s = np.tile(s1 + s2, 10)

wavfile.write(FILENAME, FS, s.astype(np.int16))
os.system("afplay " + FILENAME)

最後の行だけが、macOS 依存となっています。スミマセン。

電鐘というのがどんな構造と仕組なのか分かりませんが、奇数倍音を多く含む矩形波で作ってみました。「鐘」ですので減衰のエンベロープも掛けています。(自分で以前に書いた、こんな記事も参考にしました。)

時変フィルタとか掛けて、最初は倍音を多く、時間が経つにつれて倍音を減らし…、とかこだわるのはメンドーなので、この辺で御容赦ください。(実際の踏切の警報音は、もっと濁った感じに聞こえたような気もします。)

音を貼っておきます。こんな感じです。(音が鳴ります。職場などで鳴らすと顰蹙を買いますので御注意! 🙂 )

 

今日はここまで。

お問い合わせ(ある訳ないか…)はお気軽に!

お問い合わせを頂いた後、継続して営業活動をしたり、ニュースレター等をお送りしたりすることはございません。
御返答は 24時間以内(営業時間中)とさせて頂いております。もし返答が届かない場合、何らかの事情でメールが不達となっている可能性がございます。大変お手数ですが、別のメールアドレス等で督促頂けますと幸いです。