Millisecond Forums

Modify Facial Displays of Emotion

https://forums.millisecond.com/Topic21011.aspx

By Nesard - 3/7/2017

Hello,

I'm trying to adapt the script of Facial Displays of Emotion on Inquisit 4: https://www.millisecond.com/download/library/faceemotions/

I need to:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.

I need to randomize that with these rules:
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

Would please help me with this?
Thanks.
By Dave - 3/8/2017

Nesard - Wednesday, March 8, 2017
Hello,

I'm trying to adapt the script of Facial Displays of Emotion on Inquisit 4: https://www.millisecond.com/download/library/faceemotions/

I need to:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.

I need to randomize that with these rules:
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

Would please help me with this?
Thanks.

What, specifically, do you have problems with / do not know how to achieve? Which modifications have you already done?

FWIW, the kind of logic you will have to implement will be similar to this: https://www.millisecond.com/forums/FindPost20201.aspx
By Nesard - 3/8/2017

Dave - Wednesday, March 8, 2017
Nesard - Wednesday, March 8, 2017
Hello,

I'm trying to adapt the script of Facial Displays of Emotion on Inquisit 4: https://www.millisecond.com/download/library/faceemotions/

I need to:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.

I need to randomize that with these rules:
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

Would please help me with this?
Thanks.

What, specifically, do you have problems with / do not know how to achieve? Which modifications have you already done?

Hi, thanks for answering.

This is what I've done:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)

This is what is giving me trouble:
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

This is my code:


<values>
/group = 1
/pictureheight = 50%
/stimulusduration = 3000
/ITI = 0
/emotionprofile_instruction = "¿Cómo crees que se siente esta persona?"
</values>

<item negative_intensity>
/1 = "POFA/Negativo-Hombre-018.TIF"
/2 = "POFA/Negativo-Hombre-025.TIF"
/3 = "POFA/Negativo-Hombre-030.TIF"
/4 = "POFA/Negativo-Hombre-080.TIF"
/5 = "POFA/Negativo-Hombre-105.TIF"
/6 = "POFA/Negativo-Mujer-003.TIF"
/7 = "POFA/Negativo-Mujer-044.TIF"
/8 = "POFA/Negativo-Mujer-061.TIF"
/9 = "POFA/Negativo-Mujer-069.TIF"
/10 = "POFA/Negativo-Mujer-096.TIF"
</item>

<item neutral_intensity>
/1 = "POFA/Neutral-Hombre-028.TIF"
/2 = "POFA/Neutral-Hombre-033.TIF"
/3 = "POFA/Neutral-Hombre-041.TIF"
/4 = "POFA/Neutral-Hombre-083.TIF"
/5 = "POFA/Neutral-Hombre-110.TIF"
/6 = "POFA/Neutral-Mujer-013.TIF"
/7 = "POFA/Neutral-Mujer-047.TIF"
/8 = "POFA/Neutral-Mujer-065.TIF"
/9 = "POFA/Neutral-Mujer-072.TIF"
/10 = "POFA/Neutral-Mujer-099.TIF"
</item>

<item positive_intensity>
/1 = "POFA/Positivo-Hombre-029.TIF"
/2 = "POFA/Positivo-Hombre-034.TIF"
/3 = "POFA/Positivo-Hombre-074.TIF"
/4 = "POFA/Positivo-Hombre-100.TIF"
/5 = "POFA/Positivo-Hombre-101.TIF"
/6 = "POFA/Positivo-Mujer-001.TIF"
/7 = "POFA/Positivo-Mujer-007.TIF"
/8 = "POFA/Positivo-Mujer-048.TIF"
/9 = "POFA/Positivo-Mujer-057.TIF"
/10 = "POFA/Positivo-Mujer-093.TIF"
</item>

<instruct>
/windowsize = (90%, 90%)
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 1)
/ txcolor = (black)
/ finishlabel = "Presiona la Barra Espaciadora para continuar"
/nextkey = (57)
/nextlabel = "Presiona Barra Espaciadora para continuar"
/prevkey = (28)
/prevlabel = "Presiona Enter para volver atrás"
</instruct>

<page intro>
Aquí empieza la segunda parte del experimento.

^^Primero necesitamos tomar algunas medidas de referencia para interpretar adecuadamente los datos. Por favor presiona la Barra Espaciadora para continuar y sigue las instrucciones.
</page>

<page tarea_experimental>
^^A continuación se mostrará una escena de una película seguida de fotos de diferentes personas. Se harán 3 preguntas diferentes acerca de cada foto.
^^Presiona la Barra Espaciadora para empezar
</page>

<page end>
Has terminado el experimento ¡Gracias por tu participación!
</page>

<data>
/file = "contagioEmocional2_rawdata.iqdat"
/columns = [build, date, time, subject, group, stimulusitem, latency, response,
values.group, blockcode, blocknum, trialcode, trialnum,
values.emotion, values.encoder, values.intensity,
values.stimulusitem, values.emotion_accuracy,
slider.negative_dimension.response, slider.positive_dimension.response, slider.arousal_dimension.response]
/separatefiles = true
</data>

<summarydata >
/file = "contagioEmocional2_summary.iqdat"
/columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, values.completed]
</summarydata>

<defaults>
/minimumversion = "4.0.3.0"
</defaults>

<values>
/completed = 0
/emotion = 0
/intensity = 0
/encoder = 0
/stimulusitem = ""
/emotion_accuracy = 0
/daily_occurence = 0
</values>

<picture negative_intensity>
/items = negative_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<picture neutral_intensity>
/items = neutral_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<picture positive_intensity>
/items = positive_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<slider negative_dimension>
/ labels = ("Nada mal (0)", "Muy mal (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<slider positive_dimension>
/labels = ("Nada bien (0)", "Muy bien (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<slider arousal_dimension>
/labels = ("Nada inquieto (0)", "Muy inquieto (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<trial negative_intensity>
/ontrialbegin = [values.emotion = "negative"; values.intensity = 1]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, negative_intensity]
/ontrialend = [values.stimulusitem = picture.negative_intensity.currentitem]
/ontrialend = [values.encoder = picture.negative_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_negative]
/recorddata = false
</trial>

<surveypage emotionprofile_negative>
/caption = "<%values.emotionprofile_instruction%>"
/ fontstyle = ("Arial", 1.8%, true, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/ nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend= [if (slider.negative_dimension.response > slider.positive_dimension.response) values.emotion_accuracy = 1 else values.emotion_accuracy = 0]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial negative_video>
/ stimulusframes = [1 = negative_video]
/ timeout = 1
</trial>

<trial neutral_intensity>
/ontrialbegin = [values.emotion = "neutral"]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, neutral_intensity]
/ontrialend = [values.stimulusitem = picture.neutral_intensity.currentitem]
/ontrialend = [values.encoder = picture.neutral_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_neutral]
/recorddata = false
</trial>

<surveypage emotionprofile_neutral>
/caption = "<%values.emotionprofile_instruction%>"
/fontstyle = ("Arial", 1.8%, true, false, false, false, 5, 1)
/txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend = [values.emotion_accuracy = "N/A"]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial neutral_video>
/ stimulusframes = [1=neutral_video]
/ timeout = 1
</trial>

<trial positive_intensity>
/ontrialbegin = [values.emotion = "positive"]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, positive_intensity]
/ontrialend = [values.stimulusitem = picture.positive_intensity.currentitem]
/ontrialend = [values.encoder = picture.positive_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_positive]
/recorddata = false
</trial>

<surveypage emotionprofile_positive>
/caption = "<%values.emotionprofile_instruction%>"
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/ nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend = [if (slider.positive_dimension.response > slider.negative_dimension.response) values.emotion_accuracy = 1 else values.emotion_accuracy = 0]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial positive_video>
/ stimulusframes = [1=positive_video]
/ timeout = 1
</trial>

<trial ITI>
/trialduration = values.iti
/recorddata = true
</trial>

<shape greyscreen>
/ shape = rectangle
/ color = (grey)
/ size = (100%, 100%)
</shape>

<text cross>
/ fontstyle = ("Arial", 10%)
/ items = ("+")
/ txcolor = (255,255,255)
/ txbgcolor = grey
</text>

<shape whitescreen>
/ shape = rectangle
/ color = (white)
/ size = (100%, 100%)
</shape>

<block FE>
/trials = [1-30 = noreplace(negative_intensity, neutral_intensity, positive_intensity)]
</block>

<expt >
/preinstructions = (intro)
/postinstructions = (end)
/blocks = [1 = FE]
/onexptend = [values.completed = 1]
</expt>

By Dave - 3/8/2017

Nesard - Wednesday, March 8, 2017
Dave - Wednesday, March 8, 2017
Nesard - Wednesday, March 8, 2017
Hello,

I'm trying to adapt the script of Facial Displays of Emotion on Inquisit 4: https://www.millisecond.com/download/library/faceemotions/

I need to:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.

I need to randomize that with these rules:
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

Would please help me with this?
Thanks.

What, specifically, do you have problems with / do not know how to achieve? Which modifications have you already done?

Hi, thanks for answering.

This is what I've done:
- Use only 3 sliders (negative activation, positive activation and arousal)
- Use only 3 Groups of Items (negative, positive and neutral)

This is what is giving me trouble:
- Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider). On every repetition, the image should be followed by 1 of the 3 sliders.
- The same slider should not be used in more than 2 consecutive trials.
- The same Group of Items should not be used in more than 2 consecutive trials.

This is my code:


<values>
/group = 1
/pictureheight = 50%
/stimulusduration = 3000
/ITI = 0
/emotionprofile_instruction = "¿Cómo crees que se siente esta persona?"
</values>

<item negative_intensity>
/1 = "POFA/Negativo-Hombre-018.TIF"
/2 = "POFA/Negativo-Hombre-025.TIF"
/3 = "POFA/Negativo-Hombre-030.TIF"
/4 = "POFA/Negativo-Hombre-080.TIF"
/5 = "POFA/Negativo-Hombre-105.TIF"
/6 = "POFA/Negativo-Mujer-003.TIF"
/7 = "POFA/Negativo-Mujer-044.TIF"
/8 = "POFA/Negativo-Mujer-061.TIF"
/9 = "POFA/Negativo-Mujer-069.TIF"
/10 = "POFA/Negativo-Mujer-096.TIF"
</item>

<item neutral_intensity>
/1 = "POFA/Neutral-Hombre-028.TIF"
/2 = "POFA/Neutral-Hombre-033.TIF"
/3 = "POFA/Neutral-Hombre-041.TIF"
/4 = "POFA/Neutral-Hombre-083.TIF"
/5 = "POFA/Neutral-Hombre-110.TIF"
/6 = "POFA/Neutral-Mujer-013.TIF"
/7 = "POFA/Neutral-Mujer-047.TIF"
/8 = "POFA/Neutral-Mujer-065.TIF"
/9 = "POFA/Neutral-Mujer-072.TIF"
/10 = "POFA/Neutral-Mujer-099.TIF"
</item>

<item positive_intensity>
/1 = "POFA/Positivo-Hombre-029.TIF"
/2 = "POFA/Positivo-Hombre-034.TIF"
/3 = "POFA/Positivo-Hombre-074.TIF"
/4 = "POFA/Positivo-Hombre-100.TIF"
/5 = "POFA/Positivo-Hombre-101.TIF"
/6 = "POFA/Positivo-Mujer-001.TIF"
/7 = "POFA/Positivo-Mujer-007.TIF"
/8 = "POFA/Positivo-Mujer-048.TIF"
/9 = "POFA/Positivo-Mujer-057.TIF"
/10 = "POFA/Positivo-Mujer-093.TIF"
</item>

<instruct>
/windowsize = (90%, 90%)
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 1)
/ txcolor = (black)
/ finishlabel = "Presiona la Barra Espaciadora para continuar"
/nextkey = (57)
/nextlabel = "Presiona Barra Espaciadora para continuar"
/prevkey = (28)
/prevlabel = "Presiona Enter para volver atrás"
</instruct>

<page intro>
Aquí empieza la segunda parte del experimento.

^^Primero necesitamos tomar algunas medidas de referencia para interpretar adecuadamente los datos. Por favor presiona la Barra Espaciadora para continuar y sigue las instrucciones.
</page>

<page tarea_experimental>
^^A continuación se mostrará una escena de una película seguida de fotos de diferentes personas. Se harán 3 preguntas diferentes acerca de cada foto.
^^Presiona la Barra Espaciadora para empezar
</page>

<page end>
Has terminado el experimento ¡Gracias por tu participación!
</page>

<data>
/file = "contagioEmocional2_rawdata.iqdat"
/columns = [build, date, time, subject, group, stimulusitem, latency, response,
values.group, blockcode, blocknum, trialcode, trialnum,
values.emotion, values.encoder, values.intensity,
values.stimulusitem, values.emotion_accuracy,
slider.negative_dimension.response, slider.positive_dimension.response, slider.arousal_dimension.response]
/separatefiles = true
</data>

<summarydata >
/file = "contagioEmocional2_summary.iqdat"
/columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, values.completed]
</summarydata>

<defaults>
/minimumversion = "4.0.3.0"
</defaults>

<values>
/completed = 0
/emotion = 0
/intensity = 0
/encoder = 0
/stimulusitem = ""
/emotion_accuracy = 0
/daily_occurence = 0
</values>

<picture negative_intensity>
/items = negative_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<picture neutral_intensity>
/items = neutral_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<picture positive_intensity>
/items = positive_intensity
/select = noreplace
/size = (100%, values.pictureheight)
/position = (50%, 50%)
</picture>

<slider negative_dimension>
/ labels = ("Nada mal (0)", "Muy mal (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<slider positive_dimension>
/labels = ("Nada bien (0)", "Muy bien (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<slider arousal_dimension>
/labels = ("Nada inquieto (0)", "Muy inquieto (100)")
/range = (0, 100)
/required = true
/ defaultresponse = 50
/slidersize = (50%, 3%)
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
</slider>

<trial negative_intensity>
/ontrialbegin = [values.emotion = "negative"; values.intensity = 1]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, negative_intensity]
/ontrialend = [values.stimulusitem = picture.negative_intensity.currentitem]
/ontrialend = [values.encoder = picture.negative_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_negative]
/recorddata = false
</trial>

<surveypage emotionprofile_negative>
/caption = "<%values.emotionprofile_instruction%>"
/ fontstyle = ("Arial", 1.8%, true, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/ nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend= [if (slider.negative_dimension.response > slider.positive_dimension.response) values.emotion_accuracy = 1 else values.emotion_accuracy = 0]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial negative_video>
/ stimulusframes = [1 = negative_video]
/ timeout = 1
</trial>

<trial neutral_intensity>
/ontrialbegin = [values.emotion = "neutral"]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, neutral_intensity]
/ontrialend = [values.stimulusitem = picture.neutral_intensity.currentitem]
/ontrialend = [values.encoder = picture.neutral_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_neutral]
/recorddata = false
</trial>

<surveypage emotionprofile_neutral>
/caption = "<%values.emotionprofile_instruction%>"
/fontstyle = ("Arial", 1.8%, true, false, false, false, 5, 1)
/txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend = [values.emotion_accuracy = "N/A"]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial neutral_video>
/ stimulusframes = [1=neutral_video]
/ timeout = 1
</trial>

<trial positive_intensity>
/ontrialbegin = [values.emotion = "positive"]
/stimulustimes = [0 = greyscreen, cross; 1000 = whitescreen, positive_intensity]
/ontrialend = [values.stimulusitem = picture.positive_intensity.currentitem]
/ontrialend = [values.encoder = picture.positive_intensity.currentitemnumber]
/timeout = values.stimulusduration
/branch = [surveypage.emotionprofile_positive]
/recorddata = false
</trial>

<surveypage emotionprofile_positive>
/caption = "<%values.emotionprofile_instruction%>"
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/questions = [1-3 = noreplace(negative_dimension, positive_dimension, arousal_dimension)]
/itemspacing = 0
/ nextbuttonposition = (90%, 90%)
/showbackbutton = false
/ontrialend = [if (slider.positive_dimension.response > slider.negative_dimension.response) values.emotion_accuracy = 1 else values.emotion_accuracy = 0]
/branch = [trial.ITI]
/showpagenumbers = false
/showquestionnumbers = true
/recorddata = false
</surveypage>

<trial positive_video>
/ stimulusframes = [1=positive_video]
/ timeout = 1
</trial>

<trial ITI>
/trialduration = values.iti
/recorddata = true
</trial>

<shape greyscreen>
/ shape = rectangle
/ color = (grey)
/ size = (100%, 100%)
</shape>

<text cross>
/ fontstyle = ("Arial", 10%)
/ items = ("+")
/ txcolor = (255,255,255)
/ txbgcolor = grey
</text>

<shape whitescreen>
/ shape = rectangle
/ color = (white)
/ size = (100%, 100%)
</shape>

<block FE>
/trials = [1-30 = noreplace(negative_intensity, neutral_intensity, positive_intensity)]
</block>

<expt >
/preinstructions = (intro)
/postinstructions = (end)
/blocks = [1 = FE]
/onexptend = [values.completed = 1]
</expt>


> Show every slider on a different screen. So, every image should be displayed 3 times (one for each slider).
> On every repetition, the image should be followed by 1 of the 3  sliders.

You need (at least) three separate <surveypage> -- one per slider.

> The same slider should not be used in more than 2 consecutive trials.
> The same Group of Items should not be used in more than 2 consecutive trials.

You essentially need to build selection logic similar to what's described here (note: <surveypage>s are special <trial> elements, i.e. the same approach applies):

https://www.millisecond.com/forums/FindPost20201.aspx