PennController for IBEX › Forums › FAQ / Tips › Instructions appearing twice and counterbalance failed
- This topic has 0 replies, 1 voice, and was last updated 1 year, 3 months ago by
YaoZhang.
-
AuthorPosts
-
November 28, 2023 at 6:18 am #10515
YaoZhang
ParticipantHi 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)
-
AuthorPosts
- You must be logged in to reply to this topic.