Instructions appearing twice and counterbalance failed

PennController for IBEX Forums FAQ / Tips Instructions appearing twice and counterbalance failed

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #10516
    YaoZhang
    Participant

    Hi Jeremy,

    I just got started with PCIbex, and am facing a problem possibly related to counterbalancing.

    Here is the story: There are 2 Groups in my stimuli.csv, each containing 40 items. I was hoping my participants to see 40 stimuli from either of the stimuli groups and 80 fillers. I tried this as instructed, by sending different links “https://farm.pcibex.net/p/zQTNwJ/server.py?withsquare=0 & “https://farm.pcibex.net/p/zQTNwJ/server.py?withsquare=1”. However, people are still seeing all 80 stimuli from both groups.

    What’s more, participants are seeing all the instruction trials and filling in their infomation twice before the experiment starts.

    I wonder if you may let me know what’s going on so that I can fix it. Many thanks for your time!

    This is the link of my demo: —-> https://farm.pcibex.net/r/ARgwvG/

    Below is my code:

    PennController.ResetPrefix(null);
    /* //If the audios are too large, use a third platform as below
    PreloadZip(“https://nianpoproject.s3.amazonaws.com/fil_sentences_02.zip”)
    PreloadZip(“https://nianpoproject.s3.amazonaws.com/exp_sentences_02.zip”)
    PreloadZip(“https://nianpoproject.s3.amazonaws.com/exp_intermediates.zip”)
    */

    Sequence(“Consent”,”Participant”,”audio-test”, “transcribe”,”Instruction”,rshuffle(“Experiment”,”Filler”),SendResults(),”End”)

    Header(
    // Declare a global Var element “ID” in which we will store the participant’s ID
    newVar(“ID”).global(),
    newVar(“AGE”).global(),
    newVar(“MANDARIN”).global()
    )
    // Add basic info. to all trials’ results lines
    .log(“id” , getVar(“ID”))
    .log(“dialect”, getVar(“DIALECT”))
    .log(“mandarin”,getVar(“MANDARIN”))

    // Consent form
    newTrial(“Consent”,
    newHtml(“consent_form”, “consent.html”)
    .cssContainer({“width”:”720px”})
    .checkboxWarning(“You must consent before continuing.”)
    .print()
    ,
    newButton(“continue”, “点击此处进入实验”)
    .center()
    .print()
    .wait(getHtml(“consent_form”).test.complete()
    .failure(getHtml(“consent_form”).warn())
    )
    )

    newTrial(“Participant”,
    defaultText
    .cssContainer({“margin-top”:”1em”, “margin-bottom”:”1em”})
    .print()
    ,
    newText(“participant_info_header”, “<div class=’fancy’><p>欢迎参加语言学实验!<br>本次实验内容为音频收听与选择。<br>准备好了吗?<br>请填写有关本次实验的基本信息。</p></div>”)
    ,
    // Participant ID
    newText(“participantID”, “<b>请输入被试编号,并按回车键确认</b>”)
    ,
    newTextInput(“input_ID”)
    .log()
    .print()
    .wait()
    ,
    // Mandarin speaker question
    newText(“<b>请问您是否为普通话母语者?</b>”)
    ,
    newScale(“input_mandarin”, “是”, “否”)
    .radio()
    .log()
    .labelsPosition(“right”)
    .print()
    .wait()
    ,
    // Dialect background
    newText(“<b>请问您是否有其他方言作为日常交流语言?</b>”)
    ,
    newScale(“input_dialect”, “是”, “否”)
    .radio()
    .log()
    .labelsPosition(“right”)
    .print()
    .wait()
    ,
    newText(“<b>请输入除普通话外的方言</b><br>(如使用多种方言,请按熟练程度排序并以逗号“,”作为间隔;如不使用方言,请输入“无”。完成输入后按回车键确认,之后滑动鼠标点击“继续”。)”)
    ,
    newTextInput(“input_dialect”)
    .log()
    .print()
    .wait()
    ,

    newButton(“next”, “继续”)
    .cssContainer({“margin-top”:”1em”, “margin-bottom”:”2em”})
    .print()
    // Check for participant ID and age input
    .wait()
    ,
    // Store the texts from inputs into the Var elements
    getVar(“ID”) .set( getTextInput(“input_ID”) ),
    getVar(“MANDARIN”) .set( getScale(“input_mandarin”) ),
    getVar(“DIALECT”) .set( getTextInput(“input_dialect”) )
    );

    // audio volume and backgound noise checking
    newTrial(“audio-test”,
    defaultText.center().print(),
    newText(“<p>本实验涉及音频播放,您需要在安静的环境下使用电脑收听音频。为了保证您所处的环境及播放器音量适合进行实验,请收听下面的音频并按要求输入内容。 <p> 音频将播放两次,您可以在此期间调节音量。 </p> 点击“测试音频”收听。 </p>”),
    newButton(“测试音频”)
    .center()
    .print()
    .wait()
    ,
    clear()
    ,
    newAudio(“present”, “test_audio.wav”)
    .play()
    .center()
    .print()
    .wait(“first”)

    ,
    /* newTimer(“callback”,1)
    .callback( getAudio(“present”).wait()).start()
    .log()
    ,
    */
    newText(“space0″,” “),

    newButton(“继续”)
    .print(“center at 50vw”,”middle at 50vh”)
    .wait()
    )

    newTrial(“transcribe”,
    newText(“请按照音频要求输入测试内容,并按回车键确认。”).print().center(),
    newText(“space1″,” “).print()
    ,
    newTextInput(“audio”).center().print().log().wait()
    ,
    newText(“space2″,” “).print()
    ,
    newButton(“继续”)
    .print(“center at 50vw”,”middle at 50vh”)
    .wait()
    )
    //Experimental instruction
    newTrial( “Instruction”,
    defaultText
    .cssContainer({“margin-top”:”1em”, “margin-bottom”:”1em”})
    .print()
    ,

    newText(“participant_info_header1”, “<div class=’fancy’><h2>实验说明</h2><p>您正在参与的是外来词音译实验。<p> 实验过程中,您将听到外语原词及其在汉语中的音译形式。请在您听到的选项中,选择您认为更合适的形式作为该外来词的汉语音译。<p>在单次实验中,通过点击音频播放键,您将先后听到<b>1个</b>外来词和<b>2个</b>与之对应的音译词。所有音频可重复播放。<p>对于每次实验,请在听完全部音频后点击音频下方的汉字做出选择,完成后点击“继续”进入下一组。</p></div>”)
    ,

    newTimer(“wait”, 3000)
    .start()
    .wait()
    ,

    newText(“space3″,” “),

    newButton(“click_start”, “点击开始实验”)
    .center()
    .print()
    .wait()
    )

    // target pseudo-words
    Template (“exp-item-01-stimuli.csv”, row =>
    newTrial(“Experiment”,
    defaultText
    .center()
    .print()
    ,
    newCanvas(“stimili_audio_label”,800,80)
    .add( 200, 18, newText(“外来词”))
    .add( 160, 45, newAudio(“stimuli_audio”, row.Stimuli_Audio))
    .print()
    .center()
    ,
    getAudio(“stimuli_audio”) .play() .wait(“first”),

    newCanvas(“stimili_audio_options”, 800, 400)
    .add( 80, 80, newAudio(“opts1_audio”, row.OPTS1_Audio) )
    .add( 560, 80, newAudio(“opts2_audio”, row.OPTS2_Audio) )
    .add( 80, 200, newText(“汉语音译A”) )
    .add( 560, 200, newText(“汉语音译B”) )
    .print()
    .center()
    ,

    getAudio(“opts1_audio”) .play() .wait(“first”), getAudio(“opts2_audio”) .play() .wait(“first”),

    newSelector(“comparison”)
    .add(getText(“汉语音译A”),getText(“汉语音译B”) )
    .frame(“dashed 3px violet”)
    // .keys(“A”, “B”)
    .wait()
    .log()
    ,

    newButton(“继续”)
    .center()
    .print(“center at 50vw”,”middle at 75vh”)
    .wait(‘first’)
    ,
    clear()
    )

    .log(“stimuli_audio”, row.Stimuli_Audio)
    .log(“opts1_audio”,row.OPTS1_Audio)
    .log(“opts2_audio”,row.OPTS2_Audio)
    .log(“group”, row.Group)
    .log(“numbers”, row.Item)
    .log(“condition”, row.Condition)
    )

    //fillers
    Template (“exp-item-02-fillers.csv”, row =>
    newTrial(“Filler”,
    defaultText
    .center()
    .print()
    ,
    newCanvas(“fillers_audio_label”,800,80)
    .add( 200, 18, newText(“外来词”))
    .add( 160, 45, newAudio(“fillers_audio”, row.Fillers_Audio))
    .print()
    .center()
    ,
    getAudio(“fillers_audio”) .play() .wait(“first”),

    newCanvas(“fillers_audio_options”, 800, 400)
    .add( 80, 80, newAudio(“optf1_audio”, row.OPTF1_Audio) )
    .add( 560, 80, newAudio(“optf2_audio”, row.OPTF2_Audio) )
    .add( 80, 200, newText(“汉语音译A”) )
    .add( 560, 200, newText(“汉语音译B”) )
    .print()
    .center()
    ,

    getAudio(“optf1_audio”) .play() .wait(“first”), getAudio(“optf2_audio”) .play() .wait(“first”),

    newSelector(“comparison”)
    .add(getText(“汉语音译A”),getText(“汉语音译B”) )
    .frame(“dashed 3px violet”)
    // .keys(“A”, “B”)
    .wait()
    .log()
    ,

    newButton(“继续”)
    .center()
    .print(“center at 50vw”,”middle at 75vh”)
    .wait(‘first’)
    ,
    clear()
    )
    .log(“fillers_audio”, row.Fillers_Audio)
    .log(“optf1_audio”,row.OPTF1_Audio)
    .log(“optf2_audio”,row.OPTF2_Audio)
    .log(“numbers”, row.Numbers)
    .log(“condition”, row.Condition)

    )
    // Final screen
    newTrial(“End”,
    newText(“本次实验到此结束。感谢您的参与!”)
    .center()
    .print()
    ,
    // This link a placeholder: replace it with a URL provided by your participant-pooling platform
    newText(“<p>点击提交实验结果</p>”)
    .center()
    .print()
    ,
    // Trick: stay on this trial forever (until tab is closed)
    newButton().wait()
    )

    .setOption(“countsForProgressBar”,false)

Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.