Experiment(){
Context(){
AssignmentGroup(){
ExperimentName = lang2("Interocular Transfer of Motion Aftereffect", "Interokularer Transfer des Bewegungsnacheffektes");
SubjectCode = "pxlab";
SkipBoundingBlockDisplays = 0;
RandomizeBlocks = 1;
new watchLeftMsg = lang2("Please watch the following grating with your left eye only!", "Bitte betrachten Sie das folgende Muster mit dem linken Auge!");
new watchRightMsg = lang2("Please watch the following grating with your right eye only!", "Bitte betrachten Sie das folgende Muster mit dem rechten Auge!");
new changeMsg = lang2("Please change to the opposite eye now!", "Bitte wechseln Sie jetzt auf das andere Auge!");
new noChangeMsg = lang2("Please don\'t change the side now!", "Bitte behalten Sie das Auge zum Betrachten bei!");
}
Session(){
Instruction(){
Text = lang2(["Interocular Transfer of Motion Aftereffect", " ", "We show you a moving grating for 30 seconds.", "Before the grating becomes visible you will be told, which eye to use for watching the grating. Try to fixate its center as good as you can. After 30 s we show you a stationary grating and tell you which eye to use for the stationary grating.", "You will see apparent motion in the opposite direction. Please press any response button when the apparent motion has disappeared.", "There is a 1 min pause between two successive trials.", " ", "Press any key now to start!"], ["Interokularer Transfer", " ", "Wir zeigen Ihnen für 30 Sekunden ein bewegtes Streifenmuster.", "Davor wird Ihnen mitgeteilt, welches Auge Sie zum Betrachten benutzen sollen. Bitte versuchen Sie das Muster so starr wie möglich zu fixieren. Nach 30 s bleibt das Muster stehen und es wird Ihnen erneut mitgeteilt, welches Auge Sie weiterhin benutzen sollen.", "Sie werden dann eine scheinbare Bewegung in die Gegenrichtung sehen.", "Wenn diese Bewegung abgeklungen ist, drücken Sie bitte eine beliebige Reaktionstaste.", "Zwischen zwei Durchgängen wird eine Pause von 1 min eingelegt.", " ", "Bitte drücken Sie jetzt eine beliebige Taste zum Start."]);
}
}
SessionEnd(){
SessionEndMessage(){
}
}
Block( Message.Text){
Counter(){
Execute = BlockCounter!=0;
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 60000;
InitialCount = 60;
Step = -1;
LocationY = 240;
FontSize = 32;
FrameDuration = 1000;
}
Message(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 3000;
LocationY = 240;
FontSize = 32;
}
}
Trial( TrialCounter, Message.Text, Nothing.ResponseTime){
GaborPatternAnimation(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 30000;
FramesPerCycle = 192/Trial.GaborPatternAnimation.VerticalFrequency;
FrameDuration = 40;
AmplitudeModulation = 0;
Width = 256;
Height = 256;
MeanColor = gray();
HighColor = white();
VerticalFrequency = 8;
VerticalPhase = 0;
VerticalAmplitude = 1;
VerticalOrientation = 0;
HorizontalGaussianStandardDeviation = 64;
VerticalGaussianStandardDeviation = 64;
FixationType = de.pxlab.pxl.FixationCodes.FIXATION_CROSS;
// FixationColor = white(); // FixationType = de.pxlab.pxl.FixationCodes.CORNER_MARKS;
FixationSize = 20;
}
GaborPattern(){
Timer = de.pxlab.pxl.TimerCodes.NO_TIMER;
Width = Trial.GaborPatternAnimation.Width;
Height = Trial.GaborPatternAnimation.Height;
MeanColor = Trial.GaborPatternAnimation.MeanColor;
HighColor = Trial.GaborPatternAnimation.HighColor;
VerticalFrequency = Trial.GaborPatternAnimation.VerticalFrequency;
VerticalPhase = Trial.GaborPatternAnimation.VerticalPhase;
VerticalAmplitude = Trial.GaborPatternAnimation.VerticalAmplitude;
VerticalOrientation = Trial.GaborPatternAnimation.VerticalOrientation;
HorizontalGaussianStandardDeviation = Trial.GaborPatternAnimation.HorizontalGaussianStandardDeviation;
VerticalGaussianStandardDeviation = Trial.GaborPatternAnimation.VerticalGaussianStandardDeviation;
FixationType = de.pxlab.pxl.FixationCodes.FIXATION_CROSS;
// FixationColor = white(); // FixationType = de.pxlab.pxl.FixationCodes.CORNER_MARKS;
FixationSize = 20;
}
Message(){
Timer = de.pxlab.pxl.TimerCodes.NO_TIMER;
Overlay = de.pxlab.pxl.OverlayCodes.JOIN;
LocationY = 240;
FontSize = 32;
}
Nothing(){
Timer = de.pxlab.pxl.TimerCodes.RESPONSE_TIMER;
}
}
// Command line assignments
AssignmentGroup();
}
Procedure(){
Session(){
Block( watchLeftMsg){
Trial( ?, changeMsg, ?);
}
Block( watchLeftMsg){
Trial( ?, noChangeMsg, ?);
}
Block( watchRightMsg){
Trial( ?, changeMsg, ?);
}
Block( watchRightMsg){
Trial( ?, noChangeMsg, ?);
}
}
}
}