Votre problème est que le jeu est un appel asynchrone: cela signifie que l'exécution du programme continue immédiatement après l'appel à «jouer (joueur).
Si vous avez l'intention de jouer différents fichiers à chaque itération, essayez d'attendre jusqu'à ce que les finitions de fichiers en cours, vous pouvez utiliser quelque chose comme:
while player.isplaying
pause(0.001)
end
Si vous vouliez jouer un signal et changer les parcelles, déplacez le jouer (joueur) à l'extérieur de la boucle, et ajouter un délai entre chaque point de traçage par exemple avec votre code:
player = audioplayer(audio, Fs);
play(player);
for i=1:10
scatter(x(i),y(i),'r.')
pause(0.1)
end
exemple pour un signal en cours de lecture et l'intrigue mise à jour:
Construire un signal chirp:
Fs = 16e3;
T = 10;
t = 0:1/Fs:T;
f0 = 100;
phi = 2*pi*t.^2*f0;
sig = 0.1*sin(phi);
% Start playing the sound:
player = audioplayer(sig,Fs);
play(player);
% Plotting stuff:
dPhi = gradient(phi)*Fs;
figure;
numPlots = 20;
N = numel(t);
for n = 1 : numPlots
pause(T/numPlots)
ind = 1:N/numPlots*n;
plot(t(ind), dPhi(ind))
end
En général lors du traçage « en temps réel », il est préférable d'utiliser le tic-tac pour déterminer l'heure par rapport au temps de l'audio a commencé à jouer. Pour améliorer également les performances, il est préférable de définir les données xdata & des tracés au lieu de les retravailler à chaque fois car cette action est beaucoup plus rapide (ne met pas à jour toutes les autres propriétés des axes).
Vous pouvez regarder un vieux script que je partageais une fois à faire tracer « temps réel »: https://www.mathworks.com/matlabcentral/fileexchange/14397-real-time-scope-display--simple-script-
HI, Il semble que vous essayez de jouer un son différent à chaque itération est que ce but? –
oui quelque chose comme ça mais il n'entend pas bien :( – Amir
Essayez d'arrêter le lecteur à la fin de la boucle et d'utiliser une pause quelque part –