Sound synthesis, problem when I add sounds, there is a snapping sound

2 visualizaciones (últimos 30 días)
Louis Vitaloni
Louis Vitaloni el 11 de Mayo de 2022
Respondida: Milan Bansal el 29 de Dic. de 2023
Hi,
I'm making a code which convert image to sound. I process the image to get different objexts and the I associate each object to a frequency according to its position in the image. Then, for each line of pixel's column, I create a sound and i add every sound of a column to make a chord that I call "accord" and then I concatenate every "accord" to make a music. My problem is that between to "accord" there is a sound which makes the music not smooth. I don't know how to do, not to have this sound, could you help me ?
Here is my program :
for i = 1 : 500 %number of column
accord = 0;
for e = 1 : nRowResized
if imageObjet(e,i) > 0
AmpSon = log(1000000+stats(imageObjet(e,i)).Area);
Duree = double(int16(noteObjet(imageObjet(e,i))))/(noteObjet(imageObjet(e,i)));
son = note(noteObjet(imageObjet(e,i)),Duree,AmpSon,6000); %freq, durée, amplitude, fe
else
son = note(0,1,5,6000); %freq, durée, amplitude, fe
end
if length(accord)>length(son)
son(numel(accord)) = 0;
end
if length(accord)<length(son)
accord(numel(son)) = 0;
end
accord = accord + son; % add every sound of a culumn to make a chord
end
musique = [musique accord]; %concatenate chords to make the music
end
  1 comentario
Mathieu NOE
Mathieu NOE el 11 de Mayo de 2022
hello
maybe you should make sue that the "connection" between the last and next section (accord) is smoothed . there may be discontinuites. So apply a window that makes sure the data converge towards zero or make a kind of local smoothing of end / start sections

Iniciar sesión para comentar.

Respuestas (1)

Milan Bansal
Milan Bansal el 29 de Dic. de 2023
Hi Louis Vitaloni,
It is my understanding that you are trying to concatenate chords ("accords") to create some music but there is some unwanted noise between the two chords ("accord").
The unwanted sound between the chords could be due to abrupt changes in the waveform at the point where one chord ends and the next begins. This can create a popping or clicking noise.
A short crossfade between the end of one chord and the beginning of the next chord can be implemeted to smoothen the transition. Please apply fade out at the end of the already concatenated chord ("musique") and fade in at the beginning of the incoming chord before concatenating them. Please refer to the pseudo in code snippet below: -
fe = 5000 % sampling frequency. Please change this value as per requirement
fadeDuration = 0.05 % Please change this value as per requirement
fadeOut = linspace(1, 0, fe * fadeDuration);
fadeIn = linspace(0, 1, fe * fadeDuration);
% Multiply fadeOut and fadeIn to the end of "musique" and fadeIn to the "accord"
musique(end-length(fadeOut)+1:end) = musique(end-length(fadeOut)+1:end) .* fadeOut;
accord(1:length(fadeIn)) = accord(1:length(fadeIn)) .* fadeIn;
musique = [musique accord]; % Concatenate the chords
Hope it helps!

Productos


Versión

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by