diff --git a/analyze-single.py b/analyze-single.py index 3b32d76..5e205a8 100644 --- a/analyze-single.py +++ b/analyze-single.py @@ -17,21 +17,26 @@ output_file = sys.argv[2] # Calcul du FFT signal = soundbox.load_signal(source_file) -freqs = np.fft.fft(signal) +freqs = np.fft.fft(signal)[:soundbox.samp_rate // 2] +values = np.absolute(freqs) / np.max(np.absolute(freqs)) # Génération du graphe -ampl_scale = 1 / np.max(np.absolute(freqs)) -freq_scale = soundbox.samp_rate / len(signal) - +plt.style.use('ggplot') plt.rcParams.update({ - 'figure.figsize': (8, 4), + 'figure.figsize': (10, 5), 'font.size': 16, 'font.family': 'Concourse T4', }) fig, ax = plt.subplots() ax.tick_params(axis='both', which='major', labelsize=12) -ax.plot(np.absolute(freqs)) + +remove = values < 0.01 +x = np.arange(len(values)) +ax.plot(x[remove == False], values[remove == False]) + +# Configuration des axes +freq_scale = soundbox.samp_rate / len(signal) def freq_format(value, pos): @@ -39,19 +44,19 @@ def freq_format(value, pos): def ampl_format(value, pos): - return f'{value * ampl_scale:.1f}' + return f'{value:.1f}' -ax.set_xlabel('Fréquence') -ax.set_xlim(0 / freq_scale, 800 / freq_scale) +ax.set_xlabel('Fréquence', labelpad=10) +ax.set_xscale('log', base=2) ax.xaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(freq_format)) ax.xaxis.set_major_locator(plt.MultipleLocator(100 / freq_scale)) -ax.set_ylabel('Amplitude') +ax.set_ylabel('Amplitude relative', labelpad=10) ax.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(ampl_format)) -ax.yaxis.set_major_locator(plt.MultipleLocator(.2 / ampl_scale)) +ax.yaxis.set_major_locator(plt.MultipleLocator(.2)) -# Rend le résultat +# Rendu du résultat if output_file == '-': plt.show() else: diff --git a/fig/synth-single.png b/fig/synth-single.png index e6b9279..9639631 100644 Binary files a/fig/synth-single.png and b/fig/synth-single.png differ