Skip to content

Commit c970f44

Browse files
committed
Shift functions fixed
1 parent 86a96be commit c970f44

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

main.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
from sound import Noise,Hn
22
#
33
# s1 = Noise(path='./M1.wav', name='M1')
4+
# s1.draw()
45
# s1.draw_fft()
56
#
67
# s2 = Noise(path='./M2.wav', name='M2')
8+
# s2.draw()
79
# s2.draw_fft()
810
# #
9-
s3 = Noise(path='./M3.wav', name='M3')
10-
shifted = s3.shift_right(0.001)
11+
# s3 = Noise(path='./M3.wav', name='M3')
12+
# s3.draw()
1113
# s3.draw()
1214
# s3.hear_noise()
1315
# print(s3.when_max())
1416
# Reading Hn
15-
hn = Hn(path='./Hn.txt')
17+
# hn = Hn(path='./Hn.txt')
1618
# hn.draw()
19+
# hn.draw_phase()
20+
21+
import numpy as np
22+
23+
# conv = s3 * hn
24+
# shifted = conv.shift_right(0.001)
1725

18-
# conv = s3.convolve(hn)
1926
# print(conv.get_duration())
2027
# slc = conv.get_slice(float(0.2))
2128
# print(slc.get_duration())

sound.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,17 @@ def __init__(self, **kwargs):
3939
def draw(self):
4040
plt.title(self.name)
4141
plt.plot(self.points[0], self.points[1])
42-
plt.xlabel('Rate')
42+
plt.xlabel('Time (s)')
4343
plt.ylabel('Amplitude')
44+
plt.savefig('{}'.format(self.name))
45+
plt.grid(True)
4446
plt.show()
4547

4648
def draw_phase(self):
4749
plt.title(self.name + 'Phase spectrum')
4850
plt.phase_spectrum(self.points[1])
51+
plt.savefig('{} Phase spectrum'.format(self.name))
52+
plt.grid(True)
4953
plt.show()
5054

5155
def __str__(self):
@@ -97,7 +101,7 @@ def get_fft(self):
97101
return self.fft
98102

99103
def get_energy(self):
100-
return np.sum((np.abs(self.data) ** 2) / (self.sample_rate ** -1))
104+
return np.sum((np.abs(self.data) ** 2)) / len(self.data)
101105

102106
def get_duration(self):
103107
return len(self.data) / float(self.sample_rate)
@@ -119,20 +123,23 @@ def when_max(self):
119123
return when
120124

121125
def shift_right(self, slc):
126+
if slc < 0:
127+
return self.shift_left(abs(slc))
122128
amount = int(slc * self.sample_rate)
123129
filename = path.join(mkdtemp(), 'newfile.dat')
124-
fpath = np.memmap(filename, dtype='int16', mode='w+', shape=amount + len(self.data))
125-
fpath[amount::] = self.data
130+
fpath = np.memmap(filename, dtype='float64', mode='w+', shape=len(self.data))
131+
fpath[amount:] = self.data[:-amount]
126132
logging.info('{} {} shifted right'.format(self.name, amount))
127133
return Noise(name='{} time shifted right {}'.format(amount, self.name),
128134
data=fpath, path='')
129135

130-
# Todo: check this function
131136
def shift_left(self, slc):
137+
if slc < 0:
138+
return self.shift_right(abs(slc))
132139
amount = int(slc * self.sample_rate)
133140
filename = path.join(mkdtemp(), 'newfile.dat')
134-
fpath = np.memmap(filename, dtype='int16', mode='w+', shape=amount + len(self.data))
135-
fpath[::len(self.data)] = self.data
141+
fpath = np.memmap(filename, dtype='float64', mode='w+', shape=len(self.data))
142+
fpath[:-amount] = self.data[amount:]
136143
logging.info('{} {} shifted left'.format(self.name, amount))
137144
return Noise(name='{} time shifted left {}'.format(amount, self.name),
138145
data=fpath, path='')

0 commit comments

Comments
 (0)