|
|
wav datei randomisiert abspielen/mehrere eingaben speichern |
|
manuchao |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 03.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2010, 08:26
Titel: wav datei randomisiert abspielen/mehrere eingaben speichern
|
 |
Aloha zusammen,
bin leider nicht ganz fit in matlab und bräuchte euren rat.
ich habe folgende problemstellung: das programm soll randomisiert einen ton von 2,3 und 4 sekunden länge abspielen, dann 1 sekunde pause und dann folgt ein zweiter ton der kürzer bzw. länger ist als der erste. auch randomisiert.
nun soll ein fester bzw. eine eingabe möglichkeit geschaffen werden die es dem zuhörer erlaubt die töne zu bewerten nach dem die frage kommt: welcher ton war länger? ton 1 oder ton 2 ?
dies soll 20mal wiederholt werden und in einer excel datei dokumentierrt werden. also ton 1 ton 2 und dann die antwort des zuhörer.
kann die wav dateien zwar einlesen und abspielen aber dann setzt es schon aus!
könnte mir da jemand nützliche tipps geben, bzw. mit welchen befehlen man da am besten arbeitet?
vielen dank für euere hilfe.
|
|
|
|
|
manuchao |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 03.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2010, 15:05
Titel: Re: wav datei randomisiert abspielen/mehrere eingaben speich
|
 |
|
 |
|
habe das programm soweit hin bekommen das es ton 1 und ton 2 nacheinander abspielt.meine frage wäre jetzt: gibt es einen befehl mit dem ich ton 1 und ton 2 und die antwort (siehe unten) bei jedem durchgang in einer ecxel tabelle oder .mat datei speichern kann??
[code]%
function [] = wave
dataout=[];
x = length(20);
for x=1:2 % Anzahl der Durchläufe
%% Ton 1
%%
liste1=dir('1*wav'); %wave dateien von 2,3,4 sekunden länge
for k = 1:numel(liste1)
WAV{k}=wavread(liste1(k).name);
end
nmax = length(liste1);
n=randperm(nmax);
for k=1:1
str=sprintf('Now playing: %s',liste1(n(k)).name);
disp(str);
wavplay(WAV{k},44100)
end
%%
pause(1)
%%
liste2=dir('2ton*.wav'); % hier wird der 2te ton geladen!!!
for k = 1:numel(liste2)
WAV{k}=wavread(liste2(k).name);
end
nmax2 = length(liste2);
n=randperm(nmax2);
for k=1:1
str=sprintf('Now playing: %s',liste2(n(k)).name);
disp(str);
wavplay(WAV{k},44100)
end
%end
%if n == 1ton_3_sek.wav
%%
prompt = {'Eingabe 1 oder 2:'};
dlg_title = 'Welcher Ton war länger: Ton 1 oder Ton 2 ?';
num_lines = 1;
def = {''};
answer = inputdlg(prompt,dlg_title,num_lines,def);
pause(1)
%Daten = xlswrite('Daten1.xls',2)
end
wie schafft man es wenn der ton 1 von 2 sekunden abgespielt wurde das der zweite ton der dann auch 2 sek betragen soll +- 15%,25%,35% auch abgespilt wird. und nicht der ton 2 von 4 sekunden +- 15%,25%,35% länge.
und noch eine frage: wie kann man bei der zufalsswiedergabe die wiederholung vermeiden??
vielen dank für die hilfe.
manuchao hat Folgendes geschrieben: |
Aloha zusammen,
bin leider nicht ganz fit in matlab und bräuchte euren rat.
ich habe folgende problemstellung: das programm soll randomisiert einen ton von 2,3 und 4 sekunden länge abspielen, dann 1 sekunde pause und dann folgt ein zweiter ton der kürzer bzw. länger ist als der erste. auch randomisiert.
nun soll ein fester bzw. eine eingabe möglichkeit geschaffen werden die es dem zuhörer erlaubt die töne zu bewerten nach dem die frage kommt: welcher ton war länger? ton 1 oder ton 2 ?
dies soll 20mal wiederholt werden und in einer excel datei dokumentierrt werden. also ton 1 ton 2 und dann die antwort des zuhörer.
kann die wav dateien zwar einlesen und abspielen aber dann setzt es schon aus!
könnte mir da jemand nützliche tipps geben, bzw. mit welchen befehlen man da am besten arbeitet?
vielen dank für euere hilfe. |
[code][/code][code][/code]
|
|
|
manuchao |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 03.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2010, 12:25
Titel: Re: wav datei randomisiert abspielen/mehrere eingaben speich
|
 |
|
 |
|
Hallo zusammen.
versuche schon seit tagen das programm mit den zwei tönen zum laufen zu bringen. funktioniert soweit.
aber mein problem ist, dass ich die eingaben die gemacht werden, nicht speichern kann. die eingaben werden im vektor immer überschrieben und so sind nur die letzten durchgägnge dokumentiert. das programm sieht wie folgt aus:
function [] = wave2
x = length(20);
for x=1:2 % Anzahl der Durchläufe
%% Ton 1
liste1=dir('1*wav');
for k = 1:numel(liste1)
WAV{k}=wavread(liste1(k).name);
end
nmax = length(liste1);
n=randperm(nmax);
for k=1:1
%str1=sprintf('Now playing: %s',liste1(n(k)).name);
str1=sprintf(liste1(n(k)).name);
disp(str1);
wavplay(WAV{k},44100)
SoundData=[str1];
end
%%
pause(1)
%% Ton 2
if str1 == '1ton_2_sek.wav'
liste2=dir('2*.wav');
for k = 1:numel(liste2)
WAV{k}=wavread(liste2(k).name);
end
nmax2 = length(liste2);
n=randperm(nmax2);
for k=1:1
%str2=sprintf('Now playing: %s',liste2(n(k)).name);
str2 = sprintf(liste2(n(k)).name);
disp(str2)
wavplay(WAV{k},44100)
SoundData=[str2];
end
for k=1:1
prompt = {'Welcher ton war länger'};
dlg_title = 'Ton 1 oder Ton 2 ?';
num_lines = 1;
def ={'1 oder 2'};
answer =inputdlg(prompt,dlg_title,num_lines,def);
SoundDataanswer1=[answer];
end
end
%%
if str1 == '1ton_3_sek.wav'
liste3=dir('3ton*.wav');
for k = 1:numel(liste3)
WAV{k}=wavread(liste3(k).name);
end
nmax3 = length(liste3);
n=randperm(nmax3);
for k=1:1
%str2=sprintf('Now playing: %s',liste2(n(k)).name);
str3=sprintf(liste3(n(k)).name);
disp(str3)
wavplay(WAV{k},44100)
SoundData=[str3];
end
prompt = {'Welcher ton war länger'};
dlg_title = 'Ton 1 oder Ton 2 ?';
num_lines = 1;
def ={'1 oder 2'};
answer =inputdlg(prompt,dlg_title,num_lines,def);
SoundDataanswer2=[answer];
end
%%
if str1 == '1ton_4_sek.wav'
liste4=dir('4ton*.wav');
for k = 1:numel(liste4)
WAV{k}=wavread(liste4(k).name);
end
nmax4 = length(liste4);
n=randperm(nmax4);
for k=1:1
%str2=sprintf('Now playing: %s',liste2(n(k)).name);
str4=sprintf(liste4(n(k)).name);
disp(str4)
wavplay(WAV{k},44100)
SoundData=[str4];
end
for k=1:1
prompt = {'Welcher ton war länger'};
dlg_title = 'Ton 1 oder Ton 2 ?';
num_lines = 1;
def ={'1 oder 2'};
answer =inputdlg(prompt,dlg_title,num_lines,def);
SoundDataanswer3=[answer];
end
end
end
pause(2)
%%
%%cd ..\
%load SoundData
SoundData=[str1;str2;str3;str4;answer];
save SoundData SoundData
end[code]
ich würde gerne jeden ton der gespielt wurde und jede eingabe die gamacht wird in einem vekor oder ähnlichem speichern.
gibt es dafür eine elegante lösung??
bitte um eure Hilfe.
danke
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|