
import numpy as np import math import matplotlib.pyplot as plt from scipy.io.wavfile import write # -> Parámetros de la señal fs = 44100 # frecuencia de muestreo ts = 1/fs amplitud = 32767 # Amplitud máxima (para 16-bit PCM) # -> Parámetros de la señal f0 = 330 # Frecuencia en Hz (Ejemplo: 440 Hz corresponde a la nota A4) t0 = 1/f0 ti = 0.0*t0 tf = 10*t0 Nt = int((tf-ti)*fs) t = np.zeros(Nt+1) st = np.zeros(Nt+1) for it in range(Nt+1): t[it] = ti+it*ts st[it] = math.sin(2.0*math.pi*f0*t[it]) ######### -> GENERA WAV senal_int16 = np.int16(amplitud*st) # Guardar el archivo WAV write("aux.wav", fs, senal_int16) print("Archivo WAV generado con éxito.") ######### -> GENERA WAV Nf = 100 fi = 0.0*f0 ff = 2.0*f0 df = (ff-fi)/Nf f = np.zeros(Nf+1) sfr = np.zeros(Nf+1) sfi = np.zeros(Nf+1) sf = np.zeros(Nf+1) for ic in range(Nf+1): f[ic] = fi+ic*df for it in range(Nt+1): sfr[ic] = sfr[ic] + math.cos(2.0*math.pi*f0*t[it])*math.cos(2.0*math.pi*f[ic]*t[it]) sfi[ic] = sfi[ic] + math.cos(2.0*math.pi*f0*t[it])*math.sin(2.0*math.pi*f[ic]*t[it]) sf = np.sqrt(sfr**2+sfi**2) # Graficar la señal original plt.figure(figsize=(12, 6)) plt.subplot(1, 2, 1) plt.plot(t , st, 'k') plt.title('Dominio del tiempo') plt.xlabel('t(s)') plt.ylabel('s(t)') plt.grid() # Graficar la magnitud de la transformada de Fourier plt.subplot(1, 2, 2) plt.plot(f/f0,sf, 'k') plt.title('Dominio de la frecuencia') plt.xlabel('f (f0)') plt.ylabel('s(f)') plt.grid() plt.tight_layout() plt.show()

