Exemplo n.º 1
0
def populate_figure(figure):
    wave1, sample_rate = sine_wave(frequency=1000,
                                   phase_radians=0,
                                   num_periods=2,
                                   samples_per_period=250)
    wave2, sample_rate = sine_wave(frequency=2500,
                                   phase_radians=np.pi / 3,
                                   num_periods=5,
                                   samples_per_period=100)
    return populate_figure_wavesum(figure, wave1 * 5, wave2 * 3, sample_rate)
Exemplo n.º 2
0
def populate_figure(figure):
    axes = figure.add_subplot(1, 1, 1)
    wave, sample_rate = sine_wave(num_periods=2, samples_per_period=44.1)
    axes.stem(wave * 32767, markerfmt='.', basefmt=' ')
    format_waveform_plot(figure)
    axes.set_xlabel('Time (samples)')
    axes.set_ylabel('Sample value')
    axes.set_yticks([-32767, -16384, 0, 16384, 32767])
Exemplo n.º 3
0
def populate_figure(figure, wavefilter=lambda x: x, include_detail=False):
    wave, sample_rate = sine_wave(frequency=1000, num_periods=3)
    wave = wavefilter(wave)
    axes = figure.add_subplot(1, 1, 1)
    waveform(axes, wave, sample_rate)
    format_waveform_plot(figure)
    if include_detail: annotate_amplitude(axes, wave)
    axes.set_xticks([])
    axes.set_xlabel('')
    axes.set_ylabel('')
Exemplo n.º 4
0
def populate_figure(figure):
    axes = figure.add_subplot(1, 1, 1)
    # These are the default matplotlib colors, but we're hardcoding them
    # because they are mentioned explicitly in the accompanying text.
    for plot in plots:
        wave, sample_rate = sine_wave(frequency=1000,
                                      num_periods=2,
                                      phase_radians=np.radians(
                                          plot['phase_degrees']))
        waveform(axes,
                 wave,
                 sample_rate,
                 linestyle=plot['linestyle'],
                 color=plot['color'],
                 label=str(plot['phase_degrees']) + '°')
    format_waveform_plot(figure)
    axes.legend(loc='upper right')
    axes.set_yticks([])
Exemplo n.º 5
0
def populate_waveform(axes):
    speed_of_sound = 343
    length = 0.03
    num_periods = int(length * frequency)
    base_wave, sample_rate = sine_wave(frequency=frequency,
                                       num_periods=num_periods)
    length_samples = int(length * sample_rate)

    wave = np.zeros(length_samples)
    for source in sources:
        distance = geometry.distance(source, listener)
        delay = distance / speed_of_sound
        wave += np.pad(base_wave / distance,
                       int(sample_rate * delay),
                       mode='constant')[:length_samples]
        axes.axvline(delay * 1000, linestyle='--', color='C1')

    waveform(axes, wave, sample_rate)
Exemplo n.º 6
0
def populate_figure(figure):
    wave, sample_rate = sine_wave()
    return populate_figure_wavesum(figure, wave * (2 * np.sqrt(2)),
                                   wave * (5 * np.sqrt(2)), sample_rate)
Exemplo n.º 7
0
def populate_figure(figure):
    return populate_figure_wave(figure,
                                *sine_wave(frequency=1000, num_periods=3))
Exemplo n.º 8
0
def populate_figure(figure):
    return populate_figure_wave(figure,
                                *sine_wave(frequency=1000),
                                ymin=-20,
                                ymax=0)
Exemplo n.º 9
0
def noisy_sine_wave(num_periods):
    samples_per_period = 100
    wave, sample_rate = sine_wave(frequency=1000, num_periods=num_periods)
    return wave + noise(wave.size) * 0.5, sample_rate
Exemplo n.º 10
0
def populate_figure(figure):
    axes = figure.add_subplot(1, 1, 1)
    wave, sample_rate = sine_wave(frequency=1000, num_periods=2)
    waveform(axes, wave*1.41, sample_rate)
    format_waveform_plot(figure)
    axes.set_ylabel('Voltage (volts)')
Exemplo n.º 11
0
def populate_figure(figure):
    wave1, sample_rate = sine_wave(phase_radians=np.pi)
    wave2, sample_rate = sine_wave(phase_radians=0)
    return populate_figure_wavesum(figure, wave1 * (2 * np.sqrt(2)),
                                   wave2 * (5 * np.sqrt(2)), sample_rate)
Exemplo n.º 12
0
def populate_figure(figure):
    axes = figure.add_subplot(1, 1, 1)
    wave, sample_rate = sine_wave(frequency=1000, num_periods=2)
    waveform(axes, wave*0.356, sample_rate)
    format_waveform_plot(figure)
    axes.set_ylabel('Sound pressure (Pa)')
Exemplo n.º 13
0
def clipped_sine_wave(num_periods):
    samples_per_period = 100
    wave, sample_rate = sine_wave(frequency=1000, num_periods=num_periods)
    return np.fmin(np.fmax(wave * 1.2, -1), 1), sample_rate