Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Extrae voces de la señal de música

Implementar un sintetizador de música digital básica y utilizarlo para reproducir una canción tradicional en un arreglo de tres voces. Especifique una frecuencia de muestreo de 2 kHz. Guarde la canción como un calendario de MATLAB®.

fs = 2e3; t = 0:1/fs:0.3-1/fs;  l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94]; m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88]; h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77]; note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);  mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1; acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;  song = []; for kj = 1:length(mel)     song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)]; end song = song'/(max(abs(song))+0.1);  % To hear, type sound(song,fs)  tune = timetable(seconds((0:length(song)-1)'/fs),song);

Abra y arrastre el horario desde el navegador del espacio de trabajo a la tabla Signal.Analizador de señal Haga clic en ▼ para crear una cuadrícula de dos por dos de pantallas.Display Grid Seleccione las dos pantallas superiores y la pantalla inferior izquierda y haga clic en el botón para agregar una vista de espectro.Spectrum Seleccione la pantalla inferior derecha, haga clic para agregar una vista de espectrograma y haga clic para eliminar la vista de tiempo.Time-FrequencyTime Arrastra la canción a las cuatro pantallas. Seleccione la pantalla inferior derecha y, en la ficha, especifique una resolución de tiempo de 0,31 segundos (310 MS) y una superposición del 0% entre los segmentos adyacentes.Spectrogram Establezca laPower Limits

<math display="inline">
<mrow>
<mo>-</mo>
<mn>50</mn>
</mrow>
</math>
dB y
<math display="inline">
<mrow>
<mo>-</mo>
<mn>10</mn>
</mrow>
</math>
Db.

En la pestaña, haga clic tres veces para crear tres copias de la canción.AnalyzerDuplicate Cambie el nombre de las copias como, y haciendo doble clic en la columna en la tabla Signal.highmediumlowName Mueva las copias a las dos pantallas superiores e inferiores de la izquierda.

Preprocese las señales duplicadas utilizando filtros.

  1. Seleccione la señal haciendo clic en su nombre en la tabla Signal.high En la pestaña, haga clic en.AnalyzerHighpass En la pestaña que aparece, ingrese una frecuencia de banda de paso de 450 Hz y aumente la inclinación a 0,95.Highpass Haga clic.Highpass

  2. Seleccione la señal haciendo clic en su nombre en la tabla Signal.medium En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessing Bandpass En la pestaña que aparece, introduzca 230 Hz y 450 Hz como las frecuencias de banda de paso inferior y superior, respectivamente.Bandpass Aumente la inclinación a 0,95. Haga clic.Bandpass

  3. Seleccione la señal haciendo clic en su nombre en la tabla Signal.low En la pestaña, haga clic en.AnalyzerLowpass En la pestaña que aparece, ingrese una frecuencia de banda de paso de 230 Hz y aumente la inclinación a 0,95.Lowpass Haga clic.Lowpass

En cada una de las tres pantallas que contienen señales filtradas:

  1. Quite la señal original desactivando la casilla de verificación junto a su nombre.

  2. En la pestaña, haga clic para agregar una vista de espectrograma y haga clic para quitar la vista de tiempo.DisplayTime-FrequencyTime

  3. En la ficha, especifique una resolución de tiempo de 0,31 segundos y un 0% de superposición entre los segmentos adyacentes.Spectrogram Establezca laPower Limits

    <math display="inline">
    <mrow>
    <mo>-</mo>
    <mn>50</mn>
    </mrow>
    </math>
    dB y
    <math display="inline">
    <mrow>
    <mo>-</mo>
    <mn>10</mn>
    </mrow>
    </math>
    Db.

Seleccione las tres señales filtradas haciendo clic en su columna en la tabla Signal.Name En la pestaña, haga clic y guarde las señales en un archivo MAT llamado.AnalyzerExportmusic.mat En MATLAB, cargue el archivo en el espacio de trabajo. Trazar los espectros de las tres señales.

load music  pspectrum(low) hold on pspectrum(medium) pspectrum(high) hold off

% To hear the different voices, type  % sound(low.Var1,fs), pause(5), sound(medium.Var1,fs), pause(5), sound(high.Var1,fs)

Consulte también

Aplicaciones

Funciones

Ejemplos relacionados

Más acerca de