In [1]:
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Audio, display
from scipy import signal
from scipy.io import wavfile
%matplotlib inline

In [2]:
rate, song_array = wavfile.read('Daft_Punk.wav')

In [3]:
display(Audio(data=song_array, rate=rate))



In [4]:
segment_len = 1024
t_start = 155

In [5]:
song_segment = song_array[44100*t_start:44100*t_start+segment_len]
fig1 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(song_segment)
plt.xlabel('Time [s / 44100]', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Song segment', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, segment_len])
plt.show()



In [6]:
window = signal.hamming(segment_len)
fig2 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(window)
plt.xlabel('Point number', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Hamming window', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, segment_len])
plt.show()



In [7]:
fig3 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(window*song_segment)
plt.xlabel('Point number', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Apodized song segment', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, segment_len])
plt.show()



In [8]:
pad_len = int(segment_len/2)
window_pad = np.ones((pad_len,)) * window.min()

window_hamming_50ol = np.hstack((window_pad, window)) + np.hstack((window, window_pad))
fig4 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(window_hamming_50ol)
plt.xlabel('Point number', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Sum of 2 Hamming windows, 50% overlap', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, len(window_hamming_50ol)])
plt.show()



In [9]:
rate, song_array = wavfile.read('Tiesto.wav')

In [10]:
segment_len = 1024
t_start = 5

In [11]:
song_segment = song_array[44100*t_start:44100*t_start+segment_len]
fig1 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(song_segment)
plt.xlabel('Time [s / 44100]', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Song segment', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, segment_len])
plt.show()



In [12]:
fig3 = plt.figure(figsize=(10, 8), facecolor='white')
plt.plot(window*song_segment)
plt.xlabel('Point number', fontsize=18)
plt.ylabel('Intensity', fontsize=18)
plt.title('Apodized song segment', fontsize=18)
axes = plt.gca()
axes.set_xlim([0, segment_len])
plt.show()