<?xml version="1.0" ?>
<PsychoPy2experiment encoding="utf-8" version="1.85.3">
  <Settings>
    <Param name="Monitor" updates="None" val="testMonitor" valType="str"/>
    <Param name="color" updates="None" val="$[0,0,0]" valType="str"/>
    <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
    <Param name="Experiment info" updates="None" val="{u'session': u'001', u'participant': u''}" valType="code"/>
    <Param name="JS libs" updates="None" val="packaged" valType="str"/>
    <Param name="Units" updates="None" val="use prefs" valType="str"/>
    <Param name="Save excel file" updates="None" val="False" valType="bool"/>
    <Param name="Enable Escape" updates="None" val="True" valType="bool"/>
    <Param name="Save psydat file" updates="None" val="True" valType="bool"/>
    <Param name="Window size (pixels)" updates="None" val="[1920, 1080]" valType="code"/>
    <Param name="Full-screen window" updates="None" val="False" valType="bool"/>
    <Param name="blendMode" updates="None" val="avg" valType="str"/>
    <Param name="Use version" updates="None" val="" valType="str"/>
    <Param name="HTML path" updates="None" val="html" valType="str"/>
    <Param name="Save csv file" updates="None" val="False" valType="bool"/>
    <Param name="OSF Project ID" updates="None" val="" valType="str"/>
    <Param name="Save log file" updates="None" val="True" valType="bool"/>
    <Param name="Save wide csv file" updates="None" val="True" valType="bool"/>
    <Param name="Show mouse" updates="None" val="True" valType="bool"/>
    <Param name="Data filename" updates="None" val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code"/>
    <Param name="Show info dlg" updates="None" val="True" valType="bool"/>
    <Param name="expName" updates="None" val="adaptive_listening" valType="str"/>
    <Param name="logging level" updates="None" val="exp" valType="code"/>
    <Param name="Screen" updates="None" val="1" valType="num"/>
  </Settings>
  <Routines>
    <Routine name="trial">
      <SoundComponent name="sound_1">
        <Param name="sound" updates="constant" val="A" valType="str"/>
        <Param name="volume" updates="constant" val="1" valType="code"/>
        <Param name="name" updates="None" val="sound_1" valType="code"/>
        <Param name="stopVal" updates="constant" val="1.0" valType="code"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
      </SoundComponent>
      <KeyboardComponent name="key_resp_2">
        <Param name="correctAns" updates="constant" val="" valType="str"/>
        <Param name="storeCorrect" updates="constant" val="False" valType="bool"/>
        <Param name="name" updates="None" val="key_resp_2" valType="code"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutine" updates="constant" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="discard previous" updates="constant" val="True" valType="bool"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="allowedKeys" updates="constant" val="'a', 'e'" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="startVal" updates="None" val="1.0" valType="code"/>
        <Param name="store" updates="constant" val="last key" valType="str"/>
        <Param name="syncScreenRefresh" updates="constant" val="True" valType="bool"/>
      </KeyboardComponent>
      <CodeComponent name="code">
        <Param name="Begin Experiment" updates="constant" val="import parselmouth&amp;#10;import numpy as np&amp;#10;import random&amp;#10;&amp;#10;conditions = ['a', 'e']&amp;#10;stimulus_files = {'a': 'audio/bat.wav', 'e': 'audio/bet.wav'}&amp;#10;&amp;#10;STANDARD_INTENSITY = 70.&amp;#10;stimuli = {}&amp;#10;for condition in conditions:&amp;#10;    stimulus = parselmouth.Sound(stimulus_files[condition])&amp;#10;    stimulus.scale_intensity(STANDARD_INTENSITY)&amp;#10;    stimuli[condition] = stimulus&amp;#10;" valType="extendedCode"/>
        <Param name="name" updates="None" val="code" valType="code"/>
        <Param name="Begin Routine" updates="constant" val="random_condition = random.choice(conditions)&amp;#10;random_stimulus = stimuli[random_condition]&amp;#10;&amp;#10;noise_samples = np.random.normal(size=random_stimulus.n_samples)&amp;#10;noisy_stimulus = parselmouth.Sound(noise_samples, sampling_frequency=random_stimulus.sampling_frequency)&amp;#10;noisy_stimulus.scale_intensity(STANDARD_INTENSITY - level)&amp;#10;noisy_stimulus.values += random_stimulus.values&amp;#10;noisy_stimulus.scale_intensity(STANDARD_INTENSITY)&amp;#10;&amp;#10;# 'filename' variable is set by PsychoPy and contains base file name&amp;#10;# of saved log/output files, so we'll use that to save our custom stimuli&amp;#10;stimulus_file_name = filename + '_stimulus_' + str(trials.thisTrialN) + '.wav'&amp;#10;noisy_stimulus.resample(44100).save(stimulus_file_name, &quot;WAV&quot;)&amp;#10;sound_1.setSound(stimulus_file_name)" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="trials.addResponse(key_resp_2.keys == random_condition)" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
      </CodeComponent>
      <TextComponent name="text">
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="name" updates="None" val="text" valType="code"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
        <Param name="color" updates="constant" val="white" valType="str"/>
        <Param name="text" updates="constant" val="Bat: press 'a'&amp;#10;&amp;#10;Bet: press 'e'" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="pos" updates="constant" val="(0, 0)" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="startVal" updates="None" val="1.0" valType="code"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="letterHeight" updates="constant" val="0.1" valType="code"/>
      </TextComponent>
    </Routine>
  </Routines>
  <Flow>
    <LoopInitiator loopType="StairHandler" name="trials">
      <Param name="endPoints" updates="None" val="[0, 1]" valType="num"/>
      <Param name="name" updates="None" val="trials" valType="code"/>
      <Param name="min value" updates="None" val="-50" valType="code"/>
      <Param name="N reversals" updates="None" val="1" valType="code"/>
      <Param name="loopType" updates="None" val="staircase" valType="str"/>
      <Param name="nReps" updates="None" val="50" valType="code"/>
      <Param name="start value" updates="None" val="10" valType="code"/>
      <Param name="N up" updates="None" val="1" valType="code"/>
      <Param name="max value" updates="None" val="50" valType="code"/>
      <Param name="N down" updates="None" val="3" valType="code"/>
      <Param name="step type" updates="None" val="lin" valType="str"/>
      <Param name="step sizes" updates="None" val="[2]" valType="code"/>
      <Param name="isTrials" updates="None" val="True" valType="bool"/>
    </LoopInitiator>
    <Routine name="trial"/>
    <LoopTerminator name="trials"/>
  </Flow>
</PsychoPy2experiment>
