def __init__(self, mgr, sampRate=128,
chans=[str(n)+'x' for n in np.power(2, np.arange(8))/2.0],
waveform='sinusoid', freq=1.0, mix='none', pollSize=2):
"""
Construct a new wave generator source.
Args:
sampRate: Floating point value of the initial sampling frequency.
chans: Tuple of strings containing the initial channel
configuration.
waveform: String describing the type of waveform to produce.
May be 'sinusoid' or 'sawtooth' or 'square'
freq: Base frequency. Each channel is a power-of-two
multiple of this frequency.
pollSize: Number of data samples collected during each poll.
Higher values result in better timing and marker
resolution but more CPU usage while higher values
typically use less CPU but worse timing results.
"""
self.waveform = mp.Value('I', 0)
self.freq = mp.Value('d', freq)
self.t0 = mp.Value('d', 0.0)
self.t0.value = 0.0
self.pollSize = pollSize
self.lock = mp.Lock()
Source.__init__(self, mgr=mgr, sampRate=sampRate, chans=chans,
configPanelClass=WaveGenConfigPanel)
self.setWaveform(waveform)
self.mixArr = mp.Array('d', self.getNChan()*self.getNChan())
self.mixMat = (np.frombuffer(self.mixArr.get_obj())
.reshape((-1,self.getNChan())))
self.setMix(mix)
python类square()的实例源码
def setWaveform(self, waveform):
"""Set the periodic waveform to generate.
Args:
waveform: String describing the type of waveform to produce.
May be 'sinusoid' or 'sawtooth' or 'square'
"""
waveform = waveform.lower()
with self.lock:
try:
# index into keys gives us an integer id
self.waveform.value = list(waveforms.keys()).index(waveform)
except ValueError:
raise ValueError('Invalid waveform %s.' % str(waveform))
synctools2_NEW_VERSION_TEST.py 文件源码
项目:delayCoupledDPLLnet
作者: cuichi23
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def __call__(self, t):
return self.amp * signal.square(2 * np.pi * self.freq * t, duty=0.5)
def generate_chord(T=1,fs=44100,noise=True):
"""
Generate random major chord with amplitude 1
for duration T with sampling rate fs
Return chord and label (pitch class)
0 = Ab / G#
1 = A
2 = Bb / A#
3 = B
4 = C
5 = Db / C#
6 = D
7 = Eb / D#
8 = E
9 = F
10 = Gb / F#
11 = G
"""
t = np.linspace(0,T,T*fs)
n1 = np.random.randint(1+17,88-10)
chord_inversion = np.random.randint(1,6)
n3 = 0
n5 = 0
if chord_inversion == 1:
n3 = n1 + 4
n5 = n1 + 7
if chord_inversion == 2:
n3 = n1 + 7
n5 = n1 + 16
if chord_inversion == 3:
n3 = n1 + -8
n5 = n1 + 7
if chord_inversion == 4:
n3 = n1 + -8
n5 = n1 + -5
if chord_inversion == 5:
n3 = n1 + 4
n5 = n1 + -5
if chord_inversion == 6:
n3 = n1 + -8
n5 = n1 + -17
f1 = 2**((n1-49)/12.0)*440
f2 = 2**((n3-49)/12.0)*440
f3 = 2**((n5-49)/12.0)*440
phase1 = np.random.uniform(0, 2*np.pi, 1)
phase2 = np.random.uniform(0, 2*np.pi, 1)
phase3 = np.random.uniform(0, 2*np.pi, 1)
label = (n1 % 12) + 1
noise_var = np.random.uniform(0, 1, 1)
sig = signal.square(f1*2*np.pi*t + phase1) + signal.square(f2*2*np.pi*t + phase2) + signal.square(f3*2*np.pi*t + phase3)
if noise:
sig = sig + noise_var*np.random.randn(int(T*fs))
return sig/3, label-1