Python and the Tell-Tale Heart

I was browsing through SciPy documentation this evening and ran across a function in scipy.

misc called electrocardiogram.

What?! It’s an actual electrocardiogram, sampled at 360 Hz.

Presumably it’s included as convenient example data.

I wrote a little code using it to turn the ECG into an audio file.

from numpy import int16, iinfo from scipy.

io.

wavfile import write from scipy.

misc import electrocardiogram def to_integer(signal): # Take samples in [-1, 1] then scale to 16-bit integers m = iinfo(int16).

max M = max(abs(signal)) return int16(signal*m/M) ecg = electrocardiogram() write(“heartbeat.

wav”, 360, to_integer(ecg)) I had to turn the volume way up to hear it, and that made me think of Edgar Allan Poe’s story The Tell-Tale Heart.

I may be doing something wrong.

According to the documentation for the write function, I shouldn’t need to convert the singal to integers.

I should just be able to leave the signal as floating point and normalize it to [-1, 1] by dividing by the largest absolute value in the signal.

But when I do that, the output file will not play.

Related posts Creating siren sounds Cepstrum, quefrency, and pitch The Monosyllabic Raven.

Leave a Reply