Experiment(){
Context(){
AssignmentGroup(){
ExperimentName = lang2("Simple Response Time to Optic Signals", "Einfache Reaktionszeiten auf optische Signale");
DataFileTrialFormat = "%SubjectCode% %TrialCounter% %Luminance% %ResponseTime@i%";
TrialCounter = 1;
SubjectCode = "pxlab";
TrialFactor = 25;
RepeatErrorTrials = 1;
HideCursor = 1;
}
Session(){
Instruction(){
Text = lang2(["Simple Response Time to Optic Signals", " ", "A fixation mark will appear. This tells you to press a mouse button and hold it down until the target signal appears. The target is a gray disk. Please release the mouse button as fast as you can after the target appears.", " ", "Press any key now to start the experiment!"], ["Einfache Reaktionszeiten auf optische Signale", " ", "Wenn das Hinweiskreuz erscheint, dann drücken Sie bitte eine Maustaste und halten sie gedrückt bis das Signal erscheint. Das Signal ist eine graue Scheibe. Wenn es erscheint, dann lassen Sie bitte so schnell wie möglich die gedrückte Maustaste los.", " ", "Zum Starten drücken Sie bitte eine beliebige Taste!"]);
}
}
SessionEnd(){
SessionEndMessage(){
}
}
Block( BlockCounter, StoreData){
BlockStartMessage(){
}
}
BlockEnd(){
BlockEndMessage(){
}
}
Trial( TrialCounter, Luminance, ResponseTime){
ClearScreen:Pause(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 2000;
}
ResponseControlStart(){
}
FixationMark(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 1000;
}
ClearScreen:WaitSignal(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 500;
}
ClearScreenRandomTime(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
ExpectedWait = 1000;
WaitingTimeLimit = 3500;
Duration = 3000;
}
ResponseControlCheck(){
Type = de.pxlab.pxl.ResponseControlCodes.LAST_RESPONSE;
Device = de.pxlab.pxl.TimerBitCodes.MOUSE_BUTTON_TIMER_BIT;
Direction = de.pxlab.pxl.TimerBitCodes.DOWN_TIMER_BIT;
Text = lang2(["Error!", " ", "Please hold down the response button after the fixation mark appears!"], ["Achtung Fehler!", " ", "Bitte die Reaktionstaste gedrückt halten, wenn das Kreuz erscheint!"]);
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 2000;
}
SimpleDisk(){
Size = 300;
Duration = 100;
Timer = de.pxlab.pxl.TimerCodes.VS_CLOCK_TIMER|de.pxlab.pxl.TimerCodes.START_RESPONSE_TIMER;
}
ClearScreen:WaitResponse(){
Timer = de.pxlab.pxl.TimerCodes.RELEASE_RESPONSE_TIMER|de.pxlab.pxl.TimerCodes.STOP_RESPONSE_TIMER;
}
ResponseControlStop(){
}
Feedback(){
Text = "%ResponseTime@i% ms";
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 1000;
}
}
// Command line assignments
AssignmentGroup();
}
Factors(){
IndependentFactor( Luminance, Trial.SimpleDisk.Color){
FactorLevel( 2, colorAtLum(white(), 2));
FactorLevel( 90, colorAtLum(white(), 90));
}
DependentFactor( ResponseTime);
}
Procedure(){
Session(){
Block( 1, 0){
Trial( ?, 2, ?);
Trial( ?, 90, ?);
}
Block( 2, 1){
Trial( ?, 2, ?);
Trial( ?, 90, ?);
Trial( ?, 2, ?);
Trial( ?, 90, ?);
}
}
}
}