private void PlayCue(int cueIndex) { DateTime startTime = DateTime.Now; activeAction = true; Cue currentCue = cuesList[cueIndex]; int startPulseBreak = currentCue.StartingPulseDuration + currentCue.StartingISI; int endPulseBreak = currentCue.EndingPulseDuration + currentCue.EndingISI; int transitionPulses = currentCue.EndChangeAfterPulseNumber - currentCue.StartChangeAfterPulseNumber; float gainIncrement = 0; float freqIncrement = 0; if (transitionPulses != 0) { gainIncrement = (currentCue.EndingGain - currentCue.StartingGain) / (transitionPulses); freqIncrement = (currentCue.EndingFrequency - currentCue.StartingFrequency) / (transitionPulses); } if (currentCue.TypeoOfChange == "Temporal") { //Temporal for (int i = 0; i < currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); if (activeAction == false) { break; } } for (int i = 0; i < 8 - currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.EndingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.EndingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, endPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.EndingPulseDuration, 0); if (activeAction == false) { break; } } } else if (currentCue.TypeoOfChange == "Spatial") { //Spatial for (int i = 0; i < currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); if (activeAction == false) { break; } } for (int i = 0; i < 8 - currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.EndingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.EndingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.EndingTactorLocation, currentCue.StartingPulseDuration, 0); if (activeAction == false) { break; } } } else if (currentCue.TypeoOfChange == "Intensity") { //Intensity for (int i = 0; i < currentCue.StartChangeAfterPulseNumber + 1; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } for (int i = 0; i < transitionPulses; i++) { currentCue.StartingGain = currentCue.StartingGain + Convert.ToInt32(gainIncrement); currentCue.StartingFrequency = currentCue.StartingFrequency + Convert.ToInt32(freqIncrement); Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } // for (int i = 0; i < 8 - currentCue.EndChangeAfterPulseNumber - 1 - transitionPulses; i++)// testing only ( problem where intensity only presents 7 vibrations instead of 8) for (int i = 0; i < 8 - currentCue.EndChangeAfterPulseNumber - transitionPulses; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } } else if (currentCue.TypeoOfChange == "Int+Temp") { //Intensity + Temporal for (int i = 0; i < currentCue.StartChangeAfterPulseNumber + 1; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } for (int i = 0; i < transitionPulses; i++) { currentCue.StartingGain = currentCue.StartingGain + Convert.ToInt32(gainIncrement); currentCue.StartingFrequency = currentCue.StartingFrequency + Convert.ToInt32(freqIncrement); Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.EndingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.EndingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, endPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.EndingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } for (int i = 0; i < 8 - currentCue.StartChangeAfterPulseNumber - 1 - transitionPulses; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.EndingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.EndingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, endPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.EndingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } } else if (currentCue.TypeoOfChange == "Spat+Temp") { //Spatial + Temporal for (int i = 0; i < currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); if (activeAction == false) { break; } } for (int i = 0; i < 8 - currentCue.StartChangeAfterPulseNumber; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.EndingTactorLocation, currentCue.StartingFrequency, currentCue.EndingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.EndingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.EndingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, endPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.EndingTactorLocation, currentCue.EndingPulseDuration, 0); if (activeAction == false) { break; } } } else { //Intensity + Spatial for (int i = 0; i < currentCue.StartChangeAfterPulseNumber + 1; i++) { if (i == currentCue.StartChangeAfterPulseNumber) { currentCue.StartingTactorLocation = currentCue.EndingTactorLocation; } Tdk.TdkInterface.ChangeFreq(0, currentCue.StartingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.StartingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.StartingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } for (int i = 0; i < transitionPulses; i++) { currentCue.StartingGain = currentCue.StartingGain + Convert.ToInt32(gainIncrement); currentCue.StartingFrequency = currentCue.StartingFrequency + Convert.ToInt32(freqIncrement); Tdk.TdkInterface.ChangeFreq(0, currentCue.EndingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.EndingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.EndingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } for (int i = 0; i < 8 - currentCue.StartChangeAfterPulseNumber - 1 - transitionPulses; i++) { Tdk.TdkInterface.ChangeFreq(0, currentCue.EndingTactorLocation, currentCue.StartingFrequency, currentCue.StartingPulseDuration); Tdk.TdkInterface.RampGain(0, currentCue.EndingTactorLocation, currentCue.StartingGain, currentCue.StartingGain, currentCue.StartingPulseDuration, Tdk.TdkDefines.RampLinear, 0); toggleOn(0, startPulseBreak); Tdk.TdkInterface.Pulse(0, currentCue.EndingTactorLocation, currentCue.StartingPulseDuration, 0); //Debug.Log ("Gain: " + currentCue.StartingGain); if (activeAction == false) { break; } } } DateTime endTime = DateTime.Now; csvWriter.AddEvent(startTime.ToString("HH:mm:ss:ffff"), endTime.ToString("HH:mm:ss:ffff"), currentCue); }
private void NextButton_Click(object sender, EventArgs e) { if (cuesList != null && CurrentCueIndex < NumberOfCues - 1) { // if there are cues left to read (excluding the last row) if (played == false) { WarningsLabel.Text = "Please play the cue before proceeding."; } else if (ResponseTextbox.Text == "") { WarningsLabel.Text = "Please enter a score"; } else { WarningsLabel.Text = ""; // save response into csv int trial = current_trial_no; string response = ResponseTextbox.Text; csvWriter.AddEvent(trial, response, startTime.ToString("HH:mm:ss:ffff"), endTime.ToString("HH:mm:ss:ffff"), currentCue); // set Trial1Score to first score if (current_trial_no == 1) { Trial1Score.Text = "Trial 1 Score: " + response; } // increment tactor row CurrentCueIndex++; current_trial_no++; // update trial no. TrialNumberLabel.Text = "Trial #: " + current_trial_no; ResponseTextbox.Text = ""; Console.WriteLine(TrialNumberLabel.Text); Console.WriteLine(CurrentCueIndex); Console.WriteLine(ResponseTextbox.Text); played = false; } } else if (cuesList != null && CurrentCueIndex == NumberOfCues - 1) { // last cue if (played == false) { WarningsLabel.Text = "Please play the cue before proceeding."; } else if (ResponseTextbox.Text == "") { WarningsLabel.Text = "Please enter a score"; } else { WarningsLabel.Text = ""; // save response into csv int trial = current_trial_no; string response = ResponseTextbox.Text; csvWriter.AddEvent(trial, response, startTime.ToString("HH:mm:ss:ffff"), endTime.ToString("HH:mm:ss:ffff"), currentCue); //change screen to FormFinished Console.WriteLine("cuesList is null or CurrentCueIndex < NumberOfCues"); this.Visible = false; var FormFinished = new FormFinished(ConnectedDeviceID); FormFinished.Show(); } } else { Console.WriteLine("error"); } }