From d97628cc618851fe2a53ba66dd5d2af9943a7c6a Mon Sep 17 00:00:00 2001 From: Etienne Gaudrain Date: Wed, 22 Apr 2026 10:43:26 +0200 Subject: [PATCH] Plugins for jspsych@6.1 --- README.md | 14 + docs/jspsych-audio-keyboard-response-wait.md | 50 ++ .../jspsych-audio-sequence-button-response.md | 82 +++ docs/jspsych-crm.md | 84 +++ docs/jspsych-nafc-adaptive.md | 361 ++++++++++++ docs/jspsych-waitfor-function.md | 61 ++ js/tools.js | 386 +++++++++++++ jspsych-nafc-adaptive.js | 397 +++++++++++++ ...psych-audio-keyboard-response-clickable.js | 229 ++++++++ .../jspsych-audio-keyboard-response-wait.js | 230 ++++++++ plugins/jspsych-audio-safari-init.js | 87 +++ .../jspsych-audio-sequence-button-response.js | 332 +++++++++++ plugins/jspsych-crm.js | 544 ++++++++++++++++++ ...spsych-html-keyboard-response-clickable.js | 171 ++++++ ...psych-image-keyboard-response-clickable.js | 208 +++++++ plugins/jspsych-waitfor-function.js | 81 +++ tests/res/cat_black_2.mp3 | Bin 0 -> 45845 bytes tests/res/cat_black_2.wav | Bin 0 -> 209630 bytes tests/res/test.png | Bin 0 -> 44640 bytes tests/test_jspsych-audio-safari-init.html | 12 + tests/test_jspsych-audio-safari-init.php | 179 ++++++ ...sych-html-keyboard-response-clickable.html | 39 ++ ...ych-image-keyboard-response-clickable.html | 53 ++ 23 files changed, 3600 insertions(+) create mode 100644 docs/jspsych-audio-keyboard-response-wait.md create mode 100644 docs/jspsych-audio-sequence-button-response.md create mode 100644 docs/jspsych-crm.md create mode 100644 docs/jspsych-nafc-adaptive.md create mode 100644 docs/jspsych-waitfor-function.md create mode 100644 js/tools.js create mode 100755 jspsych-nafc-adaptive.js create mode 100644 plugins/jspsych-audio-keyboard-response-clickable.js create mode 100644 plugins/jspsych-audio-keyboard-response-wait.js create mode 100644 plugins/jspsych-audio-safari-init.js create mode 100644 plugins/jspsych-audio-sequence-button-response.js create mode 100644 plugins/jspsych-crm.js create mode 100644 plugins/jspsych-html-keyboard-response-clickable.js create mode 100644 plugins/jspsych-image-keyboard-response-clickable.js create mode 100644 plugins/jspsych-waitfor-function.js create mode 100644 tests/res/cat_black_2.mp3 create mode 100644 tests/res/cat_black_2.wav create mode 100644 tests/res/test.png create mode 100644 tests/test_jspsych-audio-safari-init.html create mode 100644 tests/test_jspsych-audio-safari-init.php create mode 100644 tests/test_jspsych-html-keyboard-response-clickable.html create mode 100644 tests/test_jspsych-image-keyboard-response-clickable.html diff --git a/README.md b/README.md index fae61f9..bc32eed 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,17 @@ Some plugins developed at dBSPLab for jsPsych 6. Mostly they concern audio prese Three versions of jsPsych are supported: 6.1, 6.2 and 6.3. We use branches to maintain the different versions. + +## Plugins + +We've implemented some generic methods for audio testing with jsPsych: + +* A plugin to do alternative forced choice with sounds: [jspsych-audio-sequence-button-response](docs/jspsych-audio-sequence-button-response.md). +* A plugin to do extend `audio-keyboard-response`: [jspsych-audio-keyboard-response-wait](docs/jspsych-audio-keyboard-response-wait.md). +* A plugin to display a Coordinate Response Measure interface: [jspsych-crm](docs/jspsych-crm.md). +* A plugin to do display a loading spinner while waiting for a (possible async) function to complete: [jspsych-waitfor-function](docs/jspsych-waitfor-function.md). + +## Tools + +* A function that generates timelines for adaptive testing using a nAFC interface: [jspsych-nafc-adaptive](docs/jspsych-nafc-adaptive.md). +* In `js/tools.js`, some globally useful functions are available. diff --git a/docs/jspsych-audio-keyboard-response-wait.md b/docs/jspsych-audio-keyboard-response-wait.md new file mode 100644 index 0000000..6230304 --- /dev/null +++ b/docs/jspsych-audio-keyboard-response-wait.md @@ -0,0 +1,50 @@ +# jspsych-audio-keyboard-response-wait + +This plugin is similar to [jspsych-audio-keyboard-response](https://www.jspsych.org/plugins/jspsych-audio-keyboard-response/), but allows more control on when the trial stops. + +This plugin plays audio files and records responses generated with the keyboard. + +If the browser supports it, audio files are played using the WebAudio API. This allows for reasonably precise timing of the playback. The timing of responses generated is measured against the WebAudio specific clock, improving the measurement of response times. If the browser does not support the WebAudio API, then the audio file is played with HTML5 audio. + +Audio files are automatically preloaded by jsPsych. However, if you are using timeline variables or another dynamic method to specify the audio stimulus you will need to [manually preload](https://www.jspsych.org/overview/media-preloading/#manual-preloading) the audio. + +The trial can end when the subject responds, when the audio file has finished playing, or if the subject has failed to respond within a fixed length of time. In addition, the trial can end after the subject has responded *and* the audio file has finished playing if you want to make sure the subject always hears the stimulus completely. Once the subject pressed a key, following key presses are not registered anymore. It is possible to dim the interface to signify this to the participant. + +## Parameters + +Parameters with a default value of *undefined* must be specified. Other parameters can be left unspecified if the default value is acceptable. + +Parameter | Type | Default Value | Description +----------------|-------------------|---------------|------------ +stimulus | string (audio) | undefined | The audio to be played. +choices | array of keycodes | ALL_KEYS | The keys the subject is allowed to press to respond to the stimulus. +prompt | string | null | This string can contain HTML markup. The intention is that it can be used to provide a reminder about the action the subject is supposed to take. +trial_duration | numeric | null | How long to wait for the subject to make a response before ending the trial, in milliseconds. If the subject fails to make a response before this timer is reached, the subject's response will be recorded as null for the trial and the trial will end. If the value of this parameter is null, the trial will wait for a response indefinitely. +response_ends_trial | boolean | true | If true, then the trial will end whenever the subject makes a response (assuming they make their response before the cutoff specified by the `trial_duration` parameter). If false, then the trial will continue until another condition ends the trial (either `trial_duration` or `trials_ends_after_audio`, but see `wait_for_audio`). +trial_ends_after_audio | boolean | false | If true, then the trial will end as soon as the audio file finishes playing. +wait_for_audio | boolean | false | If `response_ends_trial` is true, this will still wait for the audio to end before ending the trial. +dim_content_after_response | boolean | false | Will dim the content once the response has been given (a key has been pressed). +## Data Generated + +In addition to the [default data collected by all plugins](overview#data-collected-by-plugins), this plugin collects the following data for each trial. + +Name | Type | Value +-----|------|------ +key_press | numeric | Indicates which key the subject pressed. The value is the [numeric key code](http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes) corresponding to the subject's response. +rt | numeric | The response time in milliseconds for the subject to make a response. The time is measured from when the stimulus first appears on the screen until the subject's response. +stimulus | string | Path to the audio file that played during the trial. + +## Example + +#### Plays a sound, and keeps playing until the end of the sound even if a response was given + +```javascript +var trial = { + type: 'audio-keyboard-response-wait', + stimulus: 'sound/tone.mp3', + choices: ['e', 'i'], + prompt: "

Is the pitch high or low? Press 'e' for low and 'i' for high.

", + response_ends_trial: true. + wait_for_audio: true +}; +``` diff --git a/docs/jspsych-audio-sequence-button-response.md b/docs/jspsych-audio-sequence-button-response.md new file mode 100644 index 0000000..7690171 --- /dev/null +++ b/docs/jspsych-audio-sequence-button-response.md @@ -0,0 +1,82 @@ +# jspsych-audio-sequence-button-response + +This plugin plays a sequence of audio files, highlighting answer buttons as they are played. + +This plugin is based on [jspsych-audio-button-response](https://www.jspsych.org/plugins/jspsych-audio-button-response/). + +Audio files are automatically preloaded by jsPsych. However, if you are using timeline variables or another dynamic method to specify the audio stimulus you will need to manually preload the audio. + +The trial can end when the subject responds, when the audio file has finished playing, or if the subject has failed to respond within a fixed length of time. + +Note that the buttons are disabled during playing so the subject cannot press any button during that time. + +## Parameters + +Parameters with a default value of *undefined* must be specified. Other parameters can be left unspecified if the default value is acceptable. + +Parameter | Type | Default Value | Description +----------------|------------------|---------------|------------ +stimuli | array of strings | undefined | An array listing the path (url) to the audio files to be played. +choices | array of strings | [] | Labels for the buttons. Each different string in the array will generate a different button. It is not absolutely mandatory, but it is probably a good idea to have this being the same length as `stimuli`. +button_html | HTML string | `''` | A template of HTML for generating the button elements. You can override this to create customized buttons of various kinds. The string `%choice%` will be changed to the corresponding element of the `choices` array. You may also specify an array of strings, if you need different HTML to render for each button. If you do specify an array, the `choices` array and this array must have the same length. The HTML from position 0 in the `button_html` array will be used to create the button for element 0 in the `choices` array, and so on. +prompt | string | null | This string can contain HTML markup. Any content here will be displayed below or above the stimulus (see `prompt_position`). The intention is that it can be used to provide a reminder about the action the subject is supposed to take. +prompt_position | string | `'bottom'` | The position of the prompt: `'bottom'` or `'above'`. +isi | numeric | 0 | Inter-stimulus-interval: The delay in between stimulus presentation (in ms). +trial_duration | numeric | null | How long to wait for the subject to make a response before ending the trial in milliseconds. If the subject fails to make a response before this timer is reached, the subject's response will be recorded as null for the trial and the trial will end. If the value of this parameter is null, the trial will wait for a response indefinitely. +margin_vertical | string | `'0px'` | Vertical margin of the button(s). +margin_horizontal | string | `'8px'` | Horizontal margin of the button(s). +response_ends_trial | boolean | true | If true, then the trial will end whenever the subject makes a response (assuming they make their response before the cutoff specified by the `trial_duration` parameter). If false, then the trial will continue until the value for `timing_response` is reached. You can use this parameter to force the subject to view a stimulus for a fixed amount of time, even if they respond before the time is complete. +trial_ends_after_audio | boolean | false | If true, then the trial will end as soon as the audio file finishes playing. +visual_feedback | boolean | false | If true, provides feedback after the subject gave their answer. If this is set to true, `i_correct` has to be also specified. +i_correct | numeric | null | The index of the choice that corresponds to the correct answer (for feedback, otherwise it is optional). + +## Data Generated + +In addition to the [default data collected by all plugins](https://www.jspsych.org/plugins/overview/#data-collected-by-plugins), this plugin collects the following data for each trial. + +Name | Type | Value +-----|------|------ +rt | numeric | The response time in milliseconds for the subject to make a response. The time is measured from when the stimulus first appears on the screen until the subject's response. +stimuli | array of strings | The list of stimuli that was passed as parameter (just for convenience). +button_pressed | numeric | Indicates which button the subject pressed. The first button in the `choices` array is 0, the second is 1, and so on. + +## Styling elements + +### IDs + +id | Description +-------------------------------------------|------------------------------------ +`jspsych-audio-sequence-button-response-#` | Where `#` is the index of the choice. This is the div that is wrapping each response button (not the button itself). + + +### CSS Classes + +Class | Description +-------------------------------------------|------------------------------------ +jspsych-audio-button-response-btngroup | The `
` wrapping the button group. +jspsych-audio-sequence-button-response | This class is applied to the `
`s wrapping the buttons. +jspsych-prompt | The `

` that contains the prompt. +highlighted | The button inside the `

`s receive this class when the button is highlighted. +disabled | When the buttons are disabled. This is a class, for convenience, although attribute selector should also work `[disabled]`. +visual-feedback | This class is given to the button that represents the correct option, *after* the subject has given their answer. +correct, incorrect | One of these classes is given to the button that represents the correct option, depending on whether the subject's answer was correct or incorrect. + +## Dependencies + +This plugin relies on [jQuery](https://jquery.com/). Note that this is not absolutely necessary, but it makes some things fail silently instead of raising errors. If you need this plugin without jQuery, you can easily +replace the jQuery syntax with standard Javascript DOM manipulation. + +The animation of the visual feedback can make use of [Semantic UI's transitions](https://semantic-ui.com/modules/transition.html) ('bounce' for correct, 'shake' for incorrect). But if it's not available a simpler blink animation is implemented within this plugin. + +## Example + +#### Three alternative forced choice (3AFC) + +```javascript +var trial = { + type: 'audio-button-response', + stimuli: ['sound/bi.mp3', 'sound/ba.mp3', 'sound/bi.mp3'], + choices: ['1', '2', '3'], + prompt: "

Which one is different from the two others?

" +}; +``` diff --git a/docs/jspsych-crm.md b/docs/jspsych-crm.md new file mode 100644 index 0000000..2b63f26 --- /dev/null +++ b/docs/jspsych-crm.md @@ -0,0 +1,84 @@ +# jspsych-crm + +This plugin displays an interface for the Coordinate Response Measure [(Bolia _et al._, 2000)](https://doi.org/10.1121/1.428288). The interface is a grid where +each row corresponds to a color and each column corresponds to a number. The participants hear a sound and then can click on one of the cells to give their response. + +The trial can end when the subject responds, when the audio file has finished playing, or if the subject has failed to respond within a fixed length of time. + +Note that the buttons are disabled during playing so the subject cannot press any button during that time. + +## Parameters + +Parameters with a default value of *undefined* must be specified. Other parameters can be left unspecified if the default value is acceptable. + +Parameter | Type | Default Value | Description +----------------|------------------|---------------|------------ +stimulus | string | undefined | The path (url) to the audio file to play. +colors | array of strings | undefined | Labels for the rows. +numbers | array | undefined | Labels for the columns (can be strings or plain numbers). +prompt | string | null | This string can contain HTML markup. Any content here will be displayed above the response grid. The intention is that it can be used to provide a reminder about the action the subject is supposed to take. +trial_duration | numeric | null | How long to wait for the subject to make a response before ending the trial in milliseconds. If the subject fails to make a response before this timer is reached, the subject's response will be recorded as null for the trial and the trial will end. If the value of this parameter is null, the trial will wait for a response indefinitely. +response_ends_trial | boolean | true | If true, then the trial will end whenever the subject makes a response (assuming they make their response before the cutoff specified by the `trial_duration` parameter). +trial_ends_after_audio | boolean | false | If true, then the trial will end as soon as the audio file finishes playing. +visual_feedback | boolean | false | If true, provides feedback after the subject gave their answer. Visual feedback automatically ends the trial. +correct | object | undefined | An object containing the correct color and number (used to calculate the score and to provide feedback). +color_values | object | null | An object with keys corresponding to the `colors`, and containing a valid CSS color description. If left to `null`, some default colors are used (see below). +text_color_values | object | 'auto' | Same as `color_values` but for the text color of the cells. `'auto'` (the default) means that the text color is either black or white depending on the computed luminance of the background. + +Default color values: + +```javascript +color_values = { + red: "#ff3333", + blue: "#6b6bff", + green: "#80ee59", + yellow: "#ffe534", + pink: "#ff57df", + purple: "#a522ff", + brown: "#7a5630", + black: "#22222", + white: "#fcfcfc", + grey: "#8c8c8c", + gray: "#8c8c8c" +}; +``` + +## Data Generated + +In addition to the [default data collected by all plugins](https://www.jspsych.org/plugins/overview/#data-collected-by-plugins), this plugin collects the following data for each trial. + +Name | Type | Value +---------|----------|------ +rt | numeric | The response time in milliseconds for the subject to make a response. The time is measured from when the stimulus first appears on the screen until the subject's response. +stimulus | string | The stimulus that was passed as parameter (just for convenience). +response_color | string | Indicate which color was selected by the participant. `null` if not response was given. +response_number | string | Indicate which number was selected by the participant. `null` if not response was given. +correct_color | string | Indicate which color was the correct one (from `trial.correct`). +correct_number | string | Indicate which number was the correct one (from `trial.correct`). + +## Styling elements + +### IDs + +id | Description +---------------------------------|------------------------------------ +`jspsych-crm-buttons-container` | The `
` that wraps around the grid and prompt. + + +### Classes and elements + +CSS selectors | Description +-------------------------------------------|------------------------------------ +`table.jspsych-crm` | The grid containing the CRM buttons. +`table.jspsych-crm th` | The color labels on the sides of each row. +`table.jspsych-crm td` | The cells of the grid. +`.visual-feedback` | This class is given to the button that represents the correct option, *after* the subject has given their answer. +`.correct`, `.incorrect` | One of these classes is given to the button that represents the correct option, depending on whether the subject's answer was correct or incorrect. +`.crm-`*{color}* | Each element displayed in a color receives a class which is constructed from the name of the color. + +## Dependencies + +This plugin relies on [jQuery](https://jquery.com/). Note that this is not absolutely necessary, but it makes some things fail silently instead of raising errors. If you need this plugin without jQuery, you can easily +replace the jQuery syntax with standard Javascript DOM manipulation. + +The animation of the visual feedback can make use of [Semantic UI's transitions](https://semantic-ui.com/modules/transition.html) ('bounce' for correct, 'shake' for incorrect). But if it's not available a simpler blink animation is implemented within this plugin. diff --git a/docs/jspsych-nafc-adaptive.md b/docs/jspsych-nafc-adaptive.md new file mode 100644 index 0000000..58ef28f --- /dev/null +++ b/docs/jspsych-nafc-adaptive.md @@ -0,0 +1,361 @@ +# jspsych-nafc-adaptive + +This is not a jsPsych plugin, but instead a module that generates a timeline for adaptive +tracking of a threshold using an odd-one-out task (nAFC). + +An adaptive method is a method where each new set of stimuli in a trial is based on the +previous response(s). [Levitt (1971)](https://doi.org/10.1121/1.1912375) has described these +methods for auditory stimuli. In the case of a discrimination task, the difference between +a reference and test stimuli decreases progressively to reach a certain point of the psychometric +function. Rules to go up and down, i.e. increase or decrease the physical distance between +the reference and test are described in number of 'up' and 'down'. For instance, "2-down, 1-up" +means that the difference is decreased by a given step when two consecutive correct answers are given, +while the difference is increased as soon as one mistake is made. This yields a threshold corresponding +to 70.7%-correct. Adaptive procedures are meant to be a faster alternative to a *constant-stimuli* method. + +The threshold is defined as the average difference over a number of "turn-points" or "reversals". A +turn-point occurs when a the difference was increasing and start decreasing, or vice-versa. + +The procedure also stops after a number of turn-points. + +Some adaptive procedures use a fixed step size. These generally end-up being almost as long as constant-stimuli +approaches. To benefit from the adaptiveness of the method, it is better to use an initial step that is +large, and then refine it when we get close to threshold. The method proposed here packs mechanisms +to do so. + +A progress bar is shown per run. The progress is updated using the number of turn-points. + +## Usage + +To use it you'll need the following jsPsych dependencies included in your webpage (after adapting the path to wherever your Javascript files are): + +```html + + + + + + +``` + +* `jspsych-audio-sequence-button-response.js` can be found [here](../plugins/jspsych-audio-sequence-button-response.js). +* `jspsych-waitfor-response.js` can be found [here](../plugins/jspsych-waitfor-response.js). +* `tools.js` can be found [here](../../js/tools.js). + +`tools.js` defines new functions to `Array.prototype` to help some calculations of the threshold. + +The module defines a single function called `nAFC_adapt` that generates a timeline. It is then used like +this in a ` + + + + + + + + + + + + + + + +
+ + + +``` diff --git a/docs/jspsych-waitfor-function.md b/docs/jspsych-waitfor-function.md new file mode 100644 index 0000000..01f3b1c --- /dev/null +++ b/docs/jspsych-waitfor-function.md @@ -0,0 +1,61 @@ +# jspsych-waitfor-function + +This plugin executes a specified function and displays a spinning wheel while waiting for the function to complete. +This allows the experimenter to run arbitrary code at any point during the experiment. + +The function cannot take any arguments. If arguments are needed, then an anonymous function should be used to wrap the function call (see examples below). + +This plugin is based on [jspsych-call-function](https://www.jspsych.org/plugins/jspsych-call-function/). + +## Parameters + +Parameters with a default value of *undefined* must be specified. Other parameters can be left unspecified if the default value is acceptable. + +Parameter | Type | Default Value | Description +-------------|----------|---------------|------------ +func | function | *undefined* | The function to call. See the `async` argument for details. +async | boolean | `false` | If set to true, `func` will be executed asynchoronously. In that case, the first argument passed to `func` is a callback that jsPsych will pass to it, and that you need to call when the async operation is complete. This callback can receive data as argument, that will be added to the trial's data. See example below. +min_duration | int | 0 | The spinner will be displayed *at least* this time. Value in milliseconds. + +## Data Generated + +In addition to the [default data collected by all plugins](https://www.jspsych.org/plugins/overview/#data-collected-by-plugins), this plugin collects the following data for each trial. + +Name | Type | Value +-----|------|------ +value | any | The return value of the called function. + +## Dependencies + +The spinner is currently using Semantic UI's [loader](https://semantic-ui.com/elements/loader.html), so you need to add the related CSS (and its dependencies) to your page, or the whole Semantic CSS. + +## Examples + +### Async function call + +When doing an asynchronous function call, the function needs to take a argument that will be a callback function (called `done` in the example below), +and you need to execute that callback when the function is done doing its work: + +```javascript +var trial = { + type: 'call-function', + async: true, + func: function(done){ + // can perform async operations here like + // creating an XMLHttpRequest to communicate + // with a server + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + var response_data = xhttp.responseText; + // line below is what causes jsPsych to + // continue to next trial. response_data + // will be stored in jsPsych data object. + done(response_data); + } + }; + xhttp.open("GET", "path_to_server_script.php", true); + xhttp.send(); + } +} +``` diff --git a/js/tools.js b/js/tools.js new file mode 100644 index 0000000..05cd79c --- /dev/null +++ b/js/tools.js @@ -0,0 +1,386 @@ +/*------------------------------------------------------------------------------ + * Various tools for experiments + *------------------------------------------------------------------------------ + * Requires jQuery, Semantic UI modal and icon, and the dbsplab.fun DataHandler + * (only to check if the sound level adjustment has been done already). + *----------------------------------------------------------------------------*/ + +function is_browser_compatible(){ + // Add here everything that needs to be tested for browser compatibility + if( (new Audio()).canPlayType('audio/mp3') != 'probably' ) + return false; + + /* + if( (new Audio()).canPlayType('audio/mpeg') != 'probably' ) + return false; + */ + + /* + if( (new Audio()).canPlayType('audio/wav') != 'probably' ) + return false; + if( (new Audio()).canPlayType('audio/flac') != 'probably' ) + return false; + */ + return true; + + // for of +} + +function show_error(msg, to="body", after=false) +{ + if(after) + $("
"+msg+"
").appendTo(to); + else + $("
"+msg+"
").prependTo(to); +} + +function sound_level_adjustment(sound_file, after_cb) +{ + // Checks in the session if sound level adjustment has been performed for this + // experiment, and if not, shows a sound level adjustment dialog. + + if(typeof after_cb==='undefined') + after_cb = function(){}; + + window.DataHandler.get_sound_level_adj( + // success + function(is_adjusted){ + if(is_adjusted) + after_cb(); + else + _make_sound_level_adjustment(sound_file, after_cb); + }, + // error + show_error + ); +} + +// Sound level adjustment dialog internationalisation +var SLADi18n = {}; +SLADi18n['title'] = {}; +SLADi18n['title']['fr'] = "Réglage du volume"; +SLADi18n['title']['en'] = "Sound level adjustment"; +SLADi18n['title']['nl'] = "Geluidsvolume"; +SLADi18n['intro'] = {}; +SLADi18n['intro']['fr'] = "Il est conseillé de completer cette expérience dans un environnement calme, et de préférence en utilisant un casque de bonne qualité. Ajustez le volume de votre ordinateur de façon à ce que le son soit présenté à un niveau confortable, et gardez le volume identique pendant toute la durée de l'expérience."; +SLADi18n['intro']['en'] = "You are kindly asked to perform this experiment in a calm environment, and preferably using good quality headphones. Adjust the sound level on your computer so that the sound plays at a comfortable level, and keep the volume the same during the whole experiment."; +SLADi18n['intro']['nl'] = "U wordt vriendelijk verzocht om dit experiment in een stille omgeving uit te voeren en bij voorkeur een koptelefoon van goede kwaliteit te gebruiken. Pas het geluidsvolume op uw computer aan zodat het geluid op een comfortabel niveau wordt afgespeeld, en verander het geluidsniveau verder niet meer gedurende het experiment."; +SLADi18n['loading'] = {}; +SLADi18n['loading']['fr'] = "Chargement..."; +SLADi18n['loading']['en'] = "Loading..."; +SLADi18n['loading']['nl'] = "Bezig met laden..."; +SLADi18n['when-ready'] = {}; +SLADi18n['when-ready']['fr'] = "Quand vous êtes prêt.e, cliquez sur \"Continuer\"."; +SLADi18n['when-ready']['en'] = "When you are ready, click on \"Continue\"."; +SLADi18n['when-ready']['nl'] = "Als u klaar bent, klik je op \"Doorgaan\"."; +SLADi18n['continue'] = {}; +SLADi18n['continue']['fr'] = "Continuer"; +SLADi18n['continue']['en'] = "Continue"; +SLADi18n['continue']['nl'] = "Doorgaan"; + +function _make_sound_level_adjustment(sound_file, after_cb) +{ + // The global LANG has to be defined + + var eLANG = LANG; + // Fallback to English if lanugage is not supported + if(typeof SLADi18n['intro'][eLANG] === 'undefined'){ + eLANG = 'en'; + } + + var snd; + var dialog = $( + "").appendTo("body"); + dialog.modal({ + closable: false, + onApprove: function(elmt){ + snd.pause(); + snd = null; + }, + onHidden: function(){ + window.DataHandler.set_sound_level_adj(after_cb, show_error); + } + }).modal('show'); + $("#sound_adjustment").css("max-width", "25em"); + $("#sound_adjustment .content").css("box-sizing", "border-box"); + + function load_sound(snd_file) + { + snd = new Audio(snd_file); + snd.loop = true; + snd.autoplay = false; + snd.volume = 1; + + snd.canplaythrough_1st = true; + + snd.addEventListener("canplaythrough", function(){ + if(this.canplaythrough_1st){ + $('#play-pause i.icon').removeClass('asterisk loading').addClass("play"); + $('#sound_adjustment').find(".ok.button").removeClass('disabled'); + $('#play-pause').click(function() { + if($(this).children("i.icon").hasClass("play")) + snd.play(); + else + snd.pause(); + $(this).children("i.icon").toggleClass("play pause"); + }); + this.canplaythrough_1st = false; + } + }); + + snd.load(); + } + + if(typeof sound_file === 'string' || sound_file instanceof String) + { + load_sound(sound_file); + } + else if(typeof sound_file === 'object') + { + // This must be VT query + vt(sound_file, load_sound, show_error); + } + else + { + show_error("The sound that was passed for adjustment is not valid...: "+sound_file); + } + +} + +// Some polyfills for IE + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +if(!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { + value: function(search, rawPos) { + var pos = rawPos > 0 ? rawPos|0 : 0; + return this.substring(pos, pos + search.length) === search; + } + }); +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign +if(!Math.sign) { + Math.sign = function(x) { + return ((x > 0) - (x < 0)) || +x; + }; +} + +if(!Array.prototype.fill) { + Object.defineProperty(Array.prototype, 'fill', { + value: function(value) { + + // Steps 1-2. + if(this == null) { + throw new TypeError('this is null or not defined'); + } + + var O = Object(this); + + // Steps 3-5. + var len = O.length >>> 0; + + // Steps 6-7. + var start = arguments[1]; + var relativeStart = start >> 0; + + // Step 8. + var k = relativeStart < 0 ? + Math.max(len + relativeStart, 0) : + Math.min(relativeStart, len); + + // Steps 9-10. + var end = arguments[2]; + var relativeEnd = end === undefined ? + len : end >> 0; + + // Step 11. + var finalValue = relativeEnd < 0 ? + Math.max(len + relativeEnd, 0) : + Math.min(relativeEnd, len); + + // Step 12. + while(k < finalValue) { + O[k] = value; + k++; + } + + // Step 13. + return O; + } + }); +} + +// Some utility functions + +function getRandomIntInclusive(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive +} + +if(!Array.prototype.min){ + Array.prototype.min = function() { + if(this.length==0) + return null; + return this.reduce(function(m,v){ return (vm)?v:m; }, -Infinity); + }; +} else { + console.warn("Array.prototype.max already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.diff){ + Array.prototype.diff = function() { + var a = []; + for(var i = 0; i < this.length - 1; i++) { + a.push(this[i + 1] - this[i]) + } + return a; + }; +} else { + console.warn("Array.prototype.diff already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.sum){ + Array.prototype.sum = function() { + return this.reduce(function(S, v) { + return S + v; + }, 0); + }; +} else { + console.warn("Array.prototype.sum already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.mean){ + Array.prototype.mean = function() { + return this.sum() / this.length; + }; +} else { + console.warn("Array.prototype.mean already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.findIndices){ + Array.prototype.findIndices = function(cnd) { + return this.reduce(function(a, v, i) { + if(cnd(v)) { + a.push(i); + }; + return a; + }, []); + }; +} else { + console.warn("Array.prototype.findIndices already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.select){ + Array.prototype.select = function(idx) { + var a = [] + for(var i of idx){ + a.push(this[i]); + } + return a; + }; +} else { + console.warn("Array.prototype.select already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.non_zero){ + Array.prototype.non_zero = function() { + return this.filter(function(x) { return x != 0; }); + }; +} else { + console.warn("Array.prototype.non_zero already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.prototype.frequencies){ + // Adapted from jsPsych DataColumn + Array.prototype.frequencies = function() { + return this.reduce(function(unique, v){ + if(typeof unique[v] == 'undefined') { + unique[v] = 1; + } else { + unique[v]++; + } + return unique; + }, {}); + }; +} else { + console.warn("Array.prototype.frequencies already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.range) { + Array.range = function(arg1, arg2=null, step = 1) { + if(arg2===null) { + start = 0; + stop = arg1; + } else { + start = arg1; + stop = arg2; + } + return Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step); + } +} else { + console.warn("Array.range already exists! Its definition may not correspond to what was intended."); +} + +if(!Array.linspace) { + Array.linspace = function(start, end, n){ + var a = []; + var step = (end-start)/n; + for(var i=0; i + * 2020-05-19: Fixed some typos + * 2020-12-08: Fixed threshold calculation + *----------------------------------------------------------------------------*/ + +/* To use, you need to include the following in your webpage: + + + + +*/ + +/* Here's an example for next_trial: +function prepare_trial(last_trial, step, options, condition, done){ + var diff = last_trial.trial_definition.f0 + step; + var new_trial = { + stimuli: null, + i_correct: getRandomIntInclusive(0,3), + trial_definition: {f0: diff+"st"}, // The parameters that define the trial + step: step, // Just in case we modified the provided step + difference: diff + }; + async_generate_stimuli(function(){ + new_trial.stimuli = ['blah', 'blah', 'blih']; + done(new_trial); + }); +} + +function send_data_securely_to_server(data){ + console.log(data.last().values().json()); +} +*/ + +/* Here's an example for options: +var options = { + initial_step_size: 2, + starting_difference: 12, + step_size_modifier: 1/Math.sqrt(2), + down_up: [2, 1], // 2-down, 1-up => 70.7% + terminate_on_nturns: 8, + terminate_on_ntrials: 150, + terminate_on_max_difference: 25, + threshold_on_last_nturns: 6, + change_step_size_on_difference: 2, + change_step_size_on_ntrials: 15, + prompt: "Which of the three is different from the two others?", + isi: 250, + intervals: ['1', '2', '3'], + prepare_trial: prepare_trial, + after_the_run: send_data_securely_to_server, // function(options, condition, data, success_cb()) + start_button: 'Beginnen', + opening_message: "

Test

You will hear three sounds. Choose the one that is different from the two others.

", + closing_message: "

Thank you!

This is the end of this block. Thank you for your help!

" +}; +*/ + +// This relies on some tools and polyfills that are in /js/tools.js + +function nAFC_adapt(opts, condition) { + // This generates trials for one "condition", that is a whole run that leads + // to a threshold. + // + // `options` defines the parameters of the AFC + // `condition` defines the condition along which the parameters are being adapted. + + var options = jsPsych.utils.deepCopy(opts); + + // Mandatory arguments in options + var mand_opts = ['initial_step_size', 'starting_difference', 'down_up', 'terminate_on_nturns', + 'terminate_on_ntrials', 'terminate_on_max_difference', 'threshold_on_last_nturns', 'step_size_modifier', 'change_step_size_on_difference', + 'change_step_size_on_ntrials', 'intervals', 'prepare_trial' + ]; + for(var k of mand_opts) { + if(!(k in options)) { + throw "nAFC_adapt: " + k + " is a mandatory option to provide."; + return null; + } + } + + if(typeof options.opening_message === 'undefined') + options.opening_message = null; + if(typeof options.closing_message === 'undefined') + options.closing_message = null; + if(typeof options.prompt === 'undefined') + options.prompt = null; + if(typeof options.isi === 'undefined') + options.isi = 0; + if(typeof options.after_the_run === 'undefined') + options.after_the_run = function(dat, done){ done(); }; + + options.current_step = 0; + options.current_step_size = options.initial_step_size; + options.current_difference = options.starting_difference; + options.change_step_size_on_ntrials_counter = 0; + + function is_correct(t) { + return parseInt(t.button_pressed) == t.i_correct; + } + + function whereto_next(last_trials) { + // This returns the new step based on the last n trials. + + if(typeof whereto_next.v === 'undefined') + whereto_next.v = []; + + whereto_next.v.push(last_trials.slice(-1)[0].correct); + + // We go neither up nor down + var step = 0; + + console.log("---------------------- WHERE TO NEXT?"); + console.log(whereto_next.v); + + options.change_step_size_on_ntrials_counter++; + + // Are we going down? + //if(typeof last_trials[last_trials.length - options.down_up[0]] !== 'undefined') { + if(whereto_next.v.length >= options.down_up[0] && whereto_next.v.slice(-options.down_up[0]).every(Boolean)) { + // We're goin' down! + if(options.current_difference - options.current_step_size <= 0) + options.current_step_size = options.current_difference / 2; + else if(options.current_difference <= options.current_step_size * options.change_step_size_on_difference || + options.change_step_size_on_ntrials_counter == options.change_step_size_on_ntrials) { + options.current_step_size = options.current_step_size * options.step_size_modifier; + options.change_step_size_on_ntrials_counter = 0; + } + + step = -options.current_step_size; + + console.log("WE'RE GOIN' DOWN!"); + + whereto_next.v = []; + } + + // Are we going up? + //if(typeof last_trials[last_trials.length - options.down_up[1]] !== 'undefined') { + else if(whereto_next.v.length >= options.down_up[1] && whereto_next.v.slice(-options.down_up[1]).every(function(t) { return !t; })) { + // We're goin' up! + if(options.current_difference <= options.current_step_size * options.change_step_size_on_difference || + options.change_step_size_on_ntrials_counter == options.change_step_size_on_ntrials) { + options.current_step_size = options.current_step_size * options.step_size_modifier; + options.change_step_size_on_ntrials_counter = 0; + } + + step = options.current_step_size; + + console.log("WE'RE GOIN' UP!"); + + whereto_next.v = []; + } + + else { + console.log("WE'RE GOIN' NOWHERE!"); + } + + if(options.change_step_size_on_ntrials_counter == options.change_step_size_on_ntrials) { + options.change_step_size_on_ntrials_counter = 0; + } + + return step; + } + + function do_we_keep_going(data) { + // Data is a jsPsych DataCollection that contains all the audio-sequence-button-response trials so far + // returns true to continue, and false to stop + // When we stop we insert a new row in the data collection containing the threshold or the reason why we stopped + + var steps = data.select('step').values; + steps.push(options.current_step); + var differences = data.select('difference').values; + // The current difference hasn't been computed yet, this happens prepare_trial(), so we add the likely next value + differences.push(options.current_difference + options.current_step); + + if(data.count() >= options.terminate_on_ntrials) { + + jsPsych.setProgressBar(1); + var corrects = data.select('correct').values; + jsPsych.data.get().push({ + type: 'threshold', + threshold: NaN, + geom_threshold: NaN, + reason: 'ntrials', + steps: steps, + differences: differences, + condition: condition, + corrects: corrects, + internal_node_id: data.last().select('internal_node_id').values[0] + }); + return false; + + } else if(differences.slice(-1)[0]>options.terminate_on_max_difference) { + + jsPsych.setProgressBar(1); + var corrects = data.select('correct').values; + jsPsych.data.get().push({ + type: 'threshold', + threshold: NaN, + geom_threshold: NaN, + reason: 'max_difference', + steps: steps, + differences: differences, + condition: condition, + corrects: corrects, + internal_node_id: data.last().select('internal_node_id').values[0] + }); + return false; + + } else { + + var snnsd = steps.non_zero().map(Math.sign).diff().non_zero(); + nturns = snnsd.length; + + console.log("---------------------- DO WE KEEP GOIN'?"); + console.log("Corrects: ["+data.select('correct').values+"]"); + console.log("steps: ["+steps+"]"); + console.log("steps!=0: ["+steps.non_zero()+"]"); + console.log("sign(steps!=0): ["+steps.non_zero().map(Math.sign)+"]"); + console.log("diff(sign(steps!=0)): ["+steps.non_zero().map(Math.sign).diff()+"]"); + console.log("snnsd: ["+snnsd+"]"); + console.log("nturns:"+nturns); + + jsPsych.setProgressBar(nturns/options.terminate_on_nturns); + + if(nturns >= options.terminate_on_nturns) { + // That's a nice way of ending... Let's calculate the threshold + + var i_nz = steps.findIndices(function(x) { return x != 0; }); + // EG: 2020-12-07, correcting stupid mistake + //var i_tp = i_nz.filter(function(x, i) { return snnsd[i] != 0; }); + var i_d = steps.non_zero().map(Math.sign).diff().findIndices(function(x) { return x != 0; }); + var i_tp = i_nz.select(i_d); + // -- end edit 2020-12-07 + i_tp.push(differences.length - 1); + i_tp = i_tp.slice(-options.threshold_on_last_nturns); + + var corrects = data.select('correct').values; + + thr = differences.select(i_tp).mean(); + geom_thr = Math.exp(differences.select(i_tp).map(Math.log).mean()); + + jsPsych.data.get().push({ + type: 'threshold', + threshold: thr, + geom_threshold: geom_thr, + reason: 'nturns', + steps: steps, + differences: differences, + condition: condition, + corrects: corrects, + internal_node_id: data.last().select('internal_node_id').values[0] + }); + + return false; + } + } + + return true; + } + + // Make an adaptive run based on a condition + + var run_timeline = []; + + if(options.opening_message != null) { + run_timeline.push({ + type: 'instructions', + pages: [ + options.opening_message + ], + show_clickable_nav: true, + button_label_next: options.start_button, + allow_backward: false, + on_start: function(){ + jsPsych.setProgressBar(0); + } + }); + } + + //var ExpState = { N: 0 }; + + var t = { + timeline: [{ + type: 'waitfor-function', + func: function(done) { + //var files = ['/audio/Beer.wav', '/audio/Beer.wav', '/audio/Beer.wav']; + //ExpState.files = files; + + var last_trial = jsPsych.data.get().filter({trial_type: 'audio-sequence-button-response'}).last().values()[0]; + + // prepare_trial is a user provided function that expects the following arguments: + // last_trial: the last trial + // step: the new step that needs applying + // options: all the options + // condition: a definition of the condition we're in + // success_callback: the function that will be called upon success, which takes the new trial definition + // new_trial has the following keys: + // stimuli: the list of sound files to load + // i_correct: the index of the correct response + // trial_definition: the parameters that define the trial + // step: the step used to create the new trial + // difference: the difference used to create the new trial + + options.prepare_trial( + last_trial, options.current_step, options, condition, + function(new_trial) { + options.current_difference = new_trial.difference; + jsPsych.pluginAPI.preloadAudioFiles(new_trial.stimuli, function() { + done(new_trial); + }); + } + ); + }, + async: true, + min_duration: 1000 + }, + { + type: 'audio-sequence-button-response', + stimuli: function() { + return jsPsych.data.getLastTrialData().values()[0].value.stimuli; + }, + data: function() { + return jsPsych.data.getLastTrialData().values()[0].value; + }, + trial_ends_after_audio: false, + i_correct: function() { + return jsPsych.data.getLastTrialData().values()[0].value.i_correct; + }, + visual_feedback: options.visual_feedback, + button_html: "", + choices: options.intervals, + prompt: options.prompt, + prompt_position: 'top', + isi: options.isi, + on_finish: function(data) { + data.correct = is_correct(data); + console.log("Correct? "+data.correct); + } + } + ], + loop_function: function(data) { + // If only we had access to the current nodeID, things would be a bit simpler... but we'll hack something + + var last_trial_node_id = jsPsych.data.getLastTrialData().select('internal_node_id').values[0]; + var the_node_id_we_want = last_trial_node_id.split('-').slice(0,-2).join("-"); + + options.current_step = whereto_next(jsPsych.data.get().filter({trial_type: 'audio-sequence-button-response'}).last(Math.max(options.down_up[0], options.down_up[1]) + 1).values()); + + return do_we_keep_going(jsPsych.data.getDataByTimelineNode(the_node_id_we_want).filter({ trial_type: 'audio-sequence-button-response' })); + }, + }; + + run_timeline.push(t); + + // To save the data... would be better suited for on_finish, but we need async + run_timeline.push({ + type: 'waitfor-function', + func: function(done) { + var last_trial_node_id = jsPsych.data.getLastTrialData().select('internal_node_id').values[0]; + var the_node_id_we_want = last_trial_node_id.split('-').slice(0,-2).join("-"); + + options.after_the_run(options, condition, jsPsych.data.getDataByTimelineNode(the_node_id_we_want), done); + }, + async: true, + min_duration: 0 + }); + + if(options.closing_message != null) { + run_timeline.push({ + type: 'instructions', + pages: [ + options.closing_message + ], + show_clickable_nav: true, + button_label_next: 'OK', + allow_backward: false + }); + } + /* + run_timeline.push({ + type: 'instructions', + pages: [ + "

Thank you!

" + + "

This is the end of that block.

" + ], + show_clickable_nav: true, + button_label_next: 'Next' + }); + */ + + return {timeline: run_timeline}; + +} diff --git a/plugins/jspsych-audio-keyboard-response-clickable.js b/plugins/jspsych-audio-keyboard-response-clickable.js new file mode 100644 index 0000000..81bb533 --- /dev/null +++ b/plugins/jspsych-audio-keyboard-response-clickable.js @@ -0,0 +1,229 @@ +/** + * jspsych-audio-keyboard-response-clickable + * Etienne Gaudrain + * + * Based on: + * jspsych-audio-keyboard-response @6.2.0 + * Josh de Leeuw + * + * plugin for playing an audio file and getting a keyboard response or click on + * a page element + * + * documentation: docs.jspsych.org + * + **/ + +jsPsych.plugins["audio-keyboard-response-clickable"] = (function() { + + var plugin = {}; + + jsPsych.pluginAPI.registerPreload('audio-keyboard-response-clickable', 'stimulus', 'audio'); + + plugin.info = { + name: 'audio-keyboard-response-clickable', + description: '', + parameters: { + stimulus: { + type: jsPsych.plugins.parameterType.AUDIO, + pretty_name: 'Stimulus', + default: undefined, + description: 'The audio to be played.' + }, + choices: { + type: jsPsych.plugins.parameterType.KEYCODE, + pretty_name: 'Choices', + array: true, + default: jsPsych.ALL_KEYS, + description: 'The keys the subject is allowed to press to respond to the stimulus.' + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'Any content here will be displayed below the stimulus.' + }, + clickable: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Clickable', + description: 'Clicking clickable elements ends trial.', + default: true + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'The maximum duration to wait for a response.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, the trial will end when user makes a response.' + }, + trial_ends_after_audio: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Trial ends after audio', + default: false, + description: 'If true, then the trial will end as soon as the audio file finishes playing.' + }, + response_allowed_while_playing: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response allowed while playing', + default: true, + description: 'If true, then responses are allowed while the audio is playing. ' + + 'If false, then the audio must finish playing before a response is accepted.' + } + } + } + + plugin.trial = function(display_element, trial) { + + var startTime; + + // setup stimulus + var context = jsPsych.pluginAPI.audioContext(); + if(context !== null) { + var source = context.createBufferSource(); + source.buffer = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + source.connect(context.destination); + } else { + var audio = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + audio.currentTime = 0; + } + + // set up end event if trial needs it + if(trial.trial_ends_after_audio) { + if(context !== null) { + source.addEventListener('ended', end_trial); + } else { + audio.addEventListener('ended', end_trial); + } + } + + // show prompt if there is one + if(trial.prompt !== null) { + display_element.innerHTML = trial.prompt; + + if(trial.clickable){ + display_element.querySelectorAll(".clickable").forEach(function(e){ + var clickHandler = function(event){ + event.preventDefault(); + var info = {'key': 'clicked', 'rt': performance.now()-startTime}; + after_response(info); + e.removeEventListener('click', clickHandler); + }; + e.addEventListener('click', clickHandler); + }); + } + } + + // store response + var response = { + rt: null, + key: null + }; + + // function to end trial when it is time + function end_trial() { + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // stop the audio file if it is playing + // remove end event listeners if they exist + if(context !== null) { + source.stop(); + source.removeEventListener('ended', end_trial); + source.removeEventListener('ended', setup_keyboard_listener); + } else { + audio.pause(); + audio.removeEventListener('ended', end_trial); + audio.removeEventListener('ended', setup_keyboard_listener); + } + + // kill keyboard listeners + jsPsych.pluginAPI.cancelAllKeyboardResponses(); + + // gather the data to store for the trial + if(context !== null && response.rt !== null) { + response.rt = Math.round(response.rt * 1000); + } + var trial_data = { + "rt": response.rt, + "stimulus": trial.stimulus, + "key_press": response.key + }; + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + jsPsych.finishTrial(trial_data); + } + + // function to handle responses by the subject + var after_response = function(info) { + + // only record the first response + if(response.key == null) { + response = info; + } + + if(trial.response_ends_trial) { + end_trial(); + } + }; + + function setup_keyboard_listener() { + // start the response listener + if(context !== null) { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'audio', + persist: false, + allow_held_key: false, + audio_context: context, + audio_context_start_time: startTime + }); + } else { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'performance', + persist: false, + allow_held_key: false + }); + } + } + + // start audio + if(context !== null) { + startTime = context.currentTime; + source.start(startTime); + } else { + audio.play(); + } + + // start keyboard listener when trial starts or sound ends + if(trial.response_allowed_while_playing) { + setup_keyboard_listener(); + } else if(!trial.trial_ends_after_audio) { + if(context !== null) { + source.addEventListener('ended', setup_keyboard_listener); + } else { + audio.addEventListener('ended', setup_keyboard_listener); + } + } + + // end trial if time limit is set + if(trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-audio-keyboard-response-wait.js b/plugins/jspsych-audio-keyboard-response-wait.js new file mode 100644 index 0000000..375e824 --- /dev/null +++ b/plugins/jspsych-audio-keyboard-response-wait.js @@ -0,0 +1,230 @@ +/** + * jspsych-audio-keyboard-response-wait + * Josh de Leeuw, Etienne Gaudrain + * + * plugin for playing an audio file and getting a keyboard response. + * + * Based on jspsych-audio-keyboard-response but offers the possibility to wait for + * the audio to finish before moving to next trial. + * + **/ + +jsPsych.plugins["audio-keyboard-response-wait"] = (function() { + + var plugin = {}; + + jsPsych.pluginAPI.registerPreload('audio-keyboard-response-wait', 'stimulus', 'audio'); + + plugin.info = { + name: 'audio-keyboard-response-wait', + description: '', + parameters: { + stimulus: { + type: jsPsych.plugins.parameterType.AUDIO, + pretty_name: 'Stimulus', + default: undefined, + description: 'The audio to be played.' + }, + choices: { + type: jsPsych.plugins.parameterType.KEYCODE, + pretty_name: 'Choices', + array: true, + default: jsPsych.ALL_KEYS, + description: 'The keys the subject is allowed to press to respond to the stimulus.' + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'This string can contain HTML markup. The intention is that it can be used to provide a reminder about the action the subject is supposed to take.' + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'The maximum duration to wait for a response.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, the trial will end when user makes a response.' + }, + trial_ends_after_audio: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Trial ends after audio', + default: false, + description: 'If true, then the trial will end as soon as the audio file finishes playing.' + }, + wait_for_audio: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Wait for audio to finish', + default: false, + description: 'If `response_ends_trial` is true, this will still wait for the audio to end before ending the trial.' + }, + dim_content_after_response: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Dim content after response', + default: false, + description: 'Will dim the content once the response has been given.' + } + } + } + + plugin.trial = function(display_element, trial) { + + // setup stimulus + var context = jsPsych.pluginAPI.audioContext(); + if(context !== null){ + var source = context.createBufferSource(); + source.buffer = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + source.connect(context.destination); + } else { + var audio = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + audio.currentTime = 0; + } + + // set up end event if trial needs it + + var audio_is_finished = false; + var mark_audio_as_finished = function(){ audio_is_finished = true; }; + + if(trial.trial_ends_after_audio){ + if(context !== null){ + source.onended = function() { + end_trial(); + } + } else { + audio.addEventListener('ended', end_trial); + } + } else { + if(context !== null){ + source.onended = function() { + mark_audio_as_finished(); + } + } else { + audio.addEventListener('ended', mark_audio_as_finished); + } + } + + // show prompt if there is one + if (trial.prompt !== null) { + display_element.innerHTML = trial.prompt; + } + + // store response + var response = { + rt: null, + key: null + }; + + // function to end trial when it is time + function end_trial() { + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // stop the audio file if it is playing + // remove end event listeners if they exist + if(context !== null){ + source.stop(); + source.onended = function() { } + } else { + audio.pause(); + audio.removeEventListener('ended', end_trial); + } + + // kill keyboard listeners + jsPsych.pluginAPI.cancelAllKeyboardResponses(); + + // gather the data to store for the trial + if(context !== null && response.rt !== null){ + response.rt = Math.round(response.rt * 1000); + } + var trial_data = { + "rt": response.rt, + "stimulus": trial.stimulus, + "key_press": response.key + }; + + // clear the display + display_element.innerHTML = ''; + display_element.style.removeProperty("opacity"); + + // move on to the next trial + jsPsych.finishTrial(trial_data); + }; + + // function to handle responses by the subject + var after_response = function(info) { + + // only record the first response + if (response.key == null) { + response = info; + } + + if (trial.dim_content_after_response) { + display_element.style.opacity = "50%"; + } + + if (trial.response_ends_trial) { + if (trial.wait_for_audio && !audio_is_finished) { + jsPsych.pluginAPI.cancelAllKeyboardResponses(); + + if(context !== null){ + source.onended = function() { + end_trial(); + } + } else { + audio.addEventListener('ended', end_trial); + } + // Just in case the audio finished in the meantime + if(audio_is_finished) { + end_trial(); + } + } else { + end_trial(); + } + } + }; + + // start audio + if(context !== null){ + startTime = context.currentTime; + source.start(startTime); + } else { + audio.play(); + } + + // start the response listener + if(context !== null) { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'audio', + persist: false, + allow_held_key: false, + audio_context: context, + audio_context_start_time: startTime + }); + } else { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'performance', + persist: false, + allow_held_key: false + }); + } + + // end trial if time limit is set + if (trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-audio-safari-init.js b/plugins/jspsych-audio-safari-init.js new file mode 100644 index 0000000..dd7816f --- /dev/null +++ b/plugins/jspsych-audio-safari-init.js @@ -0,0 +1,87 @@ +/** + * jspsych-audio-safari-init + * Etienne Gaudrain - 2021-02-01 + * + * Safari is the new Internet Explorer and does everything differently from others + * for better, and mostly for worse. Here is a plugin to display a screen for the user to click on + * before starting the experiment to unlock the audio context, if we are dealing with Safari. + * + * See https://github.com/jspsych/jsPsych/issues/1445. + * + * NOTE: When not using the WebAudio API (jsPsych initialised with `use_webaudio=false`), + * jspsych.js needs to be modifed to expose the list of preloaded sounds (or, it seems, + * at least the first one). In the code below, this is done within + * `jsPsych.pluginAPI.preloaded_audio_IDs()`. + * + **/ + +jsPsych.plugins["audio-safari-init"] = (function() { + + var plugin = {}; + + //jsPsych.pluginAPI.registerPreload('audio-safari-init', 'stimulus', 'audio'); + + plugin.info = { + name: 'audio-safari-init', + description: '', + parameters: { + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: "Click on the screen to start the experiment", + description: 'The prompt asking the user to click on the screen.' + } + } + } + + plugin.trial = function(display_element, trial) { + + // Ideally, we would want to be able to detect this on feature basis rather than using userAgents, + // but Safari just doesn't count clicks not directly aimed at starting sounds, while other browsers do. + const is_Safari = /Version\/.*Safari\//.test(navigator.userAgent) && !window.MSStream; + if(is_Safari){ + display_element.innerHTML = trial.prompt; + document.addEventListener('touchstart', init_audio); + document.addEventListener('click', init_audio); + } else { + jsPsych.finishTrial(); + } + + function init_audio(){ + var context = jsPsych.pluginAPI.audioContext(); + if(context==null){ + // This requires the hacked version of jspsych 6.1.0_eg2021-02-21 + jsPsych.pluginAPI.preloaded_audio_IDs().slice(0,1).forEach(function(a){ + var b = jsPsych.pluginAPI.getAudioBuffer(a); + b.play(); + b.pause(); + b.currentTime = 0; + }); + } + end_trial(); + } + + // function to end trial when it is time + function end_trial() { + + document.removeEventListener('touchstart', init_audio); + document.removeEventListener('click', init_audio); + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // kill keyboard listeners + jsPsych.pluginAPI.cancelAllKeyboardResponses(); + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + jsPsych.finishTrial(); + } + + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-audio-sequence-button-response.js b/plugins/jspsych-audio-sequence-button-response.js new file mode 100644 index 0000000..15b5b40 --- /dev/null +++ b/plugins/jspsych-audio-sequence-button-response.js @@ -0,0 +1,332 @@ +/** + * jspsych-audio-sequence-button-response + * Etienne Gaudrain + * + * Plugin for playing a sequence of audio files and getting an HTML button response + * + * Based on jspsych-audio-button-response. + **/ + +jsPsych.plugins["audio-sequence-button-response"] = (function() { + var plugin = {}; + + jsPsych.pluginAPI.registerPreload('audio-sequence-button-response', 'stimuli', 'audio'); + + plugin.info = { + name: 'audio-sequence-button-response', + description: '', + parameters: { + stimuli: { + type: jsPsych.plugins.parameterType.AUDIO, + pretty_name: 'Stimuli', + default: undefined, + array: true, + description: 'The audio files to be played.' + }, + choices: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Choices', + default: undefined, + array: true, + description: 'The button labels.' + }, + button_html: { + type: jsPsych.plugins.parameterType.HTML_STRING, + pretty_name: 'Button HTML', + default: '', + array: true, + description: 'Custom button. Can make your own style.' + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'Any content here will be displayed below (or above) the buttons.' + }, + prompt_position: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt position', + default: 'bottom', + description: 'Determines whether the prompt is printed above or below the buttons: "top" or "bottom".' + }, + isi: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Inter-stimulus-interval', + default: 0, + description: 'The delay in between stimulus presentation (in ms).' + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'The maximum duration to wait for a response.' + }, + margin_vertical: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Margin vertical', + default: '0px', + description: 'Vertical margin of button.' + }, + margin_horizontal: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Margin horizontal', + default: '8px', + description: 'Horizontal margin of button.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, the trial will end when user makes a response.' + }, + trial_ends_after_audio: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Trial ends after audio', + default: false, + description: 'If true, then the trial will end as soon as all audio files are finished playing.' + }, + visual_feedback: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Visual feedback', + default: false, + description: 'If true, then visual feedback will be provided after the trial ends.' + }, + i_correct: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Index of the correct button', + default: null, + description: 'This can be an integer or a function. Only necessary if visual feedback is true.' + }, + } + } + + plugin.trial = function(display_element, trial) { + + var context = jsPsych.pluginAPI.audioContext(); + if(context !== null) { + var source; + } else { + var audio; + } + + if(trial.visual_feedback===true && trial.i_correct===null) + throw "'i_correct' has to be defined if visual feedback is requested."; + + //display buttons + var buttons = []; + + function play_next_audio() { + //var i = load_next_audio(); + + if(typeof play_next_audio.i === 'undefined') + { + // This is the first pass, we disable the buttons + $(display_element).find(".jspsych-audio-sequence-button-response button").addClass("disabled").prop('disabled', true); + play_next_audio.i = 0; + } + + /* + // We un-highlight the previous button + if(play_next_audio.i>0) + $(display_element).find('#jspsych-audio-sequence-button-response-' + (play_next_audio.i-1) +' button').toggleClass('highlighted'); + */ + + // Is it the last stimulus, do we need to end trial? + if(play_next_audio.i >= trial.stimuli.length) { + $(display_element).find(".jspsych-audio-sequence-button-response button").removeClass("disabled").prop('disabled', false); + if(trial.trial_ends_after_audio) { + end_trial(); + } + return false; + } + + // Prepare the next sound to play + if(context !== null) { + source = context.createBufferSource(); + source.buffer = jsPsych.pluginAPI.getAudioBuffer(trial.stimuli[play_next_audio.i]); + source.connect(context.destination); + source.onended = function(){ + $(display_element).find('.jspsych-audio-sequence-button-response button.highlighted').removeClass('highlighted'); + setTimeout(play_next_audio, trial.isi); + }; + } else { + audio = jsPsych.pluginAPI.getAudioBuffer(trial.stimuli[play_next_audio.i]); + audio.currentTime = 0; + audio.addEventListener('ended', function(){ + $(display_element).find('.jspsych-audio-sequence-button-response button.highlighted').removeClass('highlighted'); + setTimeout(play_next_audio, trial.isi); + }); + } + + // Highlight the current button + $(display_element).find('#jspsych-audio-sequence-button-response-' + play_next_audio.i +' button').addClass('highlighted'); + + if(context !== null) { + startTime = context.currentTime; + source.start(startTime); + } else { + audio.play(); + } + + play_next_audio.i++; + } + + //display buttons + if(Array.isArray(trial.button_html)) { + if(trial.button_html.length == trial.choices.length) { + buttons = trial.button_html; + } else { + console.error('Error in ' + plugin.info.name + '. The length of the button_html array does not equal the length of the choices array'); + } + } else { + for(var i = 0; i < trial.choices.length; i++) { + buttons.push(trial.button_html); + } + } + + var html = ''; + + //show prompt if there is one + if(trial.prompt_position == 'top' && trial.prompt !== null) { + html += "

"+trial.prompt+"

"; + } + + html += '
'; + for(var i = 0; i < trial.choices.length; i++) { + var str = buttons[i].replace(/%choice%/g, trial.choices[i]); + html += '
' + str + '
'; + } + html += '
'; + + //show prompt if there is one + if(trial.prompt_position != 'top' && trial.prompt !== null) { + html += "

"+trial.prompt+"

"; + } + + $(display_element).html( html ); + + for(var i = 0; i < trial.choices.length; i++) { + $(display_element).find('#jspsych-audio-sequence-button-response-' + i).click( function(e) { + var choice = e.currentTarget.getAttribute('data-choice'); // don't use dataset for jsdom compatibility + after_response(choice); + }); + } + + // store response + var response = { + rt: null, + button: null + }; + + // A custom blink function for feedback in case semantic's transition isn't there + function blink(elm, n, cssClass, after_cb) { + if(n<=0) { + after_cb(); + } else { + $(elm).toggleClass(cssClass); + setTimeout(function(){ blink(elm, n-1, cssClass, after_cb); }, 200); + } + } + + // function to handle responses by the subject + function after_response(choice) { + + // measure rt + var end_time = performance.now(); + var rt = end_time - start_time; + response.button = choice; + response.rt = rt; + + // disable all the buttons after a response + $('.jspsych-audio-sequence-button-response button').addClass('disabled').prop('disabled', true); + + if(trial.visual_feedback) { + var cssClass, n, animation; + var correct_button = $('#jspsych-audio-sequence-button-response-'+trial.i_correct+' button'); + var correct = parseInt(trial.i_correct) == parseInt(response.button); + correct_button.removeClass('disabled').prop('disabled', false).css('pointer-events', 'none'); + correct_button.addClass('visual-feedback'); + + if(correct) + { + cssClass = 'correct'; + animation = 'bounce'; //'jiggle'; + n = 2; + } + else + { + cssClass = 'incorrect'; + animation = 'shake'; //'tada'; + n = 6; + } + correct_button.addClass(cssClass); + + if($.prototype.transition) + { + // We have semantic's transitions installed + correct_button.transition({ + animation: animation, + onComplete: function() { + correct_button.css('pointer-events', '').addClass('disabled').prop('disabled', true); + end_trial(); + }, + verbose: true + }); + } else { + blink(correct_button, n, cssClass, end_trial); + } + } else { + if(trial.response_ends_trial) { + end_trial(); + } + } + }; + + // function to end trial when it is time + function end_trial() { + + // stop the audio file if it is playing + // remove end event listeners if they exist + if(context !== null) { + source.stop(); + source.onended = function() {} + } else { + audio.pause(); + audio.removeEventListener('ended', end_trial); + } + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // gather the data to store for the trial + var trial_data = { + "rt": response.rt, + "stimuli": trial.stimuli, + "button_pressed": response.button + }; + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + $(display_element).ready(function(){ + jsPsych.finishTrial(trial_data); + }); + }; + + // start time + var start_time = performance.now(); + + $(display_element).ready(play_next_audio); + + // end trial if time limit is set + if(trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-crm.js b/plugins/jspsych-crm.js new file mode 100644 index 0000000..6eed056 --- /dev/null +++ b/plugins/jspsych-crm.js @@ -0,0 +1,544 @@ +/** + * jspsych-crm + * Etienne Gaudrain + * + * Plugin for displaying a CRM response grid. + **/ + +jsPsych.plugins["crm"] = (function() { + var plugin = {}; + + jsPsych.pluginAPI.registerPreload('crm', 'stimuli', 'audio'); + + plugin.info = { + name: 'crm', + description: '', + parameters: { + stimulus: { + type: jsPsych.plugins.parameterType.AUDIO, + pretty_name: 'Stimuli', + default: undefined, + description: 'The audio file to be played.' + }, + colors: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Colors', + default: undefined, + array: true, + description: 'The colors used in the task.' + }, + color_labels: { + type: jsPsych.plugins.parameterType.OBJECT, + pretty_name: 'Color labels', + default: null, + description: 'The labels of the colors used in the task (for instance in another language).' + }, + color_values: { + type: jsPsych.plugins.parameterType.OBJECT, + pretty_name: 'Color values', + default: null, + description: 'The colors used to display the colors labels and cells. Default values are implemented, but they can be changed here in the form of an object whose keys are the color labels, and values are the colors in any CSS valid format.' + }, + text_color_values: { + type: jsPsych.plugins.parameterType.OBJECT, + pretty_name: 'Text color values', + default: 'auto', + description: 'The colors used to display the text in the cells. Use "auto" (default) to let the program decide black or white depending on brightness of the color. Otherwise, an object whose keys are the color names, and values are strings representing CSS colors.' + }, + numbers: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Numbers', + default: undefined, + array: true, + description: 'The numbers used in the task.' + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'Any content here will be displayed below (or above) the buttons.' + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'The maximum duration to wait for a response.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, the trial will end when user makes a response.' + }, + visual_feedback: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Visual feedback', + default: false, + description: 'If true, then visual feedback will be provided after the trial ends.' + }, + correct_response: { + type: jsPsych.plugins.parameterType.OBJECT, + pretty_name: 'The correct response', + default: null, + description: 'This is an object containing color and number of the correct response.' + }, + } + } + + plugin.trial = function(display_element, trial) { + + var context = jsPsych.pluginAPI.audioContext(); + if(context !== null) { + var source; + } else { + var audio; + } + + if(trial.visual_feedback===true && trial.correct_reponse===null) + throw "'correct_response' has to be defined if visual feedback is requested."; + + if(trial.color_values===null) { + trial.color_values = { + red: "#ff3333", + blue: "#6b6bff", + green: "#1da831", + yellow: "#ffe534", + pink: "#ff57df", + purple: "#a522ff", + brown: "#7a5630", + black: "#222222", + white: "#fcfcfc", + grey: "#8c8c8c", + gray: "#8c8c8c" + }; + } + + + var auto_text_color_values = {}; + var brightness = {}; + for(var c in trial.color_values) { + var col = parseCSSColor(c); + var L = 0.299*col[0] + 0.587*col[1] + 0.114*col[2]; + if(L<128) { + brightness[c] = 'dark'; + auto_text_color_values[c] = "#ffffff"; + } else { + auto_text_color_values[c] = "#000000"; + brightness[c] = 'bright'; + } + } + + if(trial.text_color_values=="auto") { + trial.text_color_values = auto_text_color_values; + } + + + function play_audio() { + + // Prepare the next sound to play + if(context !== null) { + source = context.createBufferSource(); + source.buffer = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + source.connect(context.destination); + source.onended = function(){ + if(trial.trial_ends_after_audio) { + after_response(null); + } else { + enable_response(); + } + }; + startTime = context.currentTime; + source.start(startTime); + } else { + audio = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus); + audio.currentTime = 0; + audio.addEventListener('ended', function(){ + if(trial.trial_ends_after_audio) { + after_response(null); + } else { + enable_response(); + } + }); + audio.play(); + } + } + + if(trial.color_labels===null) { + trial.color_labels = {}; + for(var c of trial.colors) { + trial.color_labels[c] = c; + } + } + + /* + //display buttons + if(Array.isArray(trial.button_html)) { + if(trial.button_html.length == trial.choices.length) { + buttons = trial.button_html; + } else { + console.error('Error in ' + plugin.info.name + '. The length of the button_html array does not equal the length of the choices array'); + } + } else { + for(var i = 0; i < trial.choices.length; i++) { + buttons.push(trial.button_html); + } + } + */ + + var html = ''; + + //show prompt if there is one + if(trial.prompt !== null) { + html += "

"+trial.prompt+"

"; + } + + html += '
'; + for(var c of trial.colors) { + html += ""; + html += ""; + for(var n of trial.numbers) { + html += ""; + } + html += ""; + html += ""; + } + html += ''; + + $(display_element).html( html ); + + function enable_response() { + $(display_element).find("table.jspsych-crm td").css("cursor", "pointer").click( function(e) { + var choice = JSON.parse(e.currentTarget.getAttribute('data-value')); + after_response(choice); + }); + } + + function disable_response() { + $(display_element).find("table.jspsych-crm td").off("click").css("cursor", "default"); + } + + // store response + var response = { + rt: null, + color: null, + number: null + }; + + // A custom blink function for feedback in case semantic's transition isn't there + function blink(elm, n, cssClass, after_cb) { + if(n<=0) { + after_cb(); + } else { + $(elm).toggleClass(cssClass); + setTimeout(function(){ blink(elm, n-1, cssClass, after_cb); }, 200); + } + } + + // function to handle responses by the subject + function after_response(choice) { + + // measure rt + var end_time = performance.now(); + response.rt = end_time - start_time; + + if(choice!==null) { + response.color = choice.color; + response.number = choice.number; + } + + disable_response(); + + if(trial.visual_feedback) { + var cssClass, n, animation; + var correct_button = $(display_element).find("table.jspsych-crm td[data-value='"+JSON.stringify(trial.correct_response)+"']"); + var correct = (trial.correct_response.color == response.color) && (trial.correct_response.number == response.number); + correct_button.addClass('visual-feedback'); + + if(correct) + { + cssClass = 'correct'; + animation = 'bounce'; //'jiggle'; + n = 2; + } + else + { + cssClass = 'incorrect'; + animation = 'shake'; //'tada'; + n = 6; + } + correct_button.addClass(cssClass); + + if($.prototype.transition) + { + // We have semantic's transitions installed + correct_button.transition({ + animation: animation, + onComplete: function() { + correct_button.css('pointer-events', '').addClass('disabled').prop('disabled', true); + end_trial(); + }, + verbose: true + }); + } else { + blink(correct_button, n, cssClass, end_trial); + } + } else { + if(trial.response_ends_trial) { + end_trial(); + } + } + }; + + // function to end trial when it is time + function end_trial() { + + // stop the audio file if it is playing + // remove end event listeners if they exist + if(context !== null) { + source.stop(); + source.onended = function() {} + } else { + audio.pause(); + audio.removeEventListener('ended', end_trial); + } + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // gather the data to store for the trial + var trial_data = { + rt: response.rt, + stimulus: trial.stimulus, + response_color: response.color, + response_number: response.number, + correct_color: trial.correct_response.color, + correct_number: trial.correct_response.number, + score: (response.color==trial.correct_response.color) + (response.number==trial.correct_response.number) + }; + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + $(display_element).ready(function(){ + jsPsych.finishTrial(trial_data); + }); + }; + + // start time + var start_time = performance.now(); + + $(display_element).ready(play_audio); + + // end trial if time limit is set + if(trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); + + +// (c) Dean McNamee , 2012. +// +// https://github.com/deanm/css-color-parser-js +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +// http://www.w3.org/TR/css3-color/ +var kCSSColorTable = { + "transparent": [0,0,0,0], "aliceblue": [240,248,255,1], + "antiquewhite": [250,235,215,1], "aqua": [0,255,255,1], + "aquamarine": [127,255,212,1], "azure": [240,255,255,1], + "beige": [245,245,220,1], "bisque": [255,228,196,1], + "black": [0,0,0,1], "blanchedalmond": [255,235,205,1], + "blue": [0,0,255,1], "blueviolet": [138,43,226,1], + "brown": [165,42,42,1], "burlywood": [222,184,135,1], + "cadetblue": [95,158,160,1], "chartreuse": [127,255,0,1], + "chocolate": [210,105,30,1], "coral": [255,127,80,1], + "cornflowerblue": [100,149,237,1], "cornsilk": [255,248,220,1], + "crimson": [220,20,60,1], "cyan": [0,255,255,1], + "darkblue": [0,0,139,1], "darkcyan": [0,139,139,1], + "darkgoldenrod": [184,134,11,1], "darkgray": [169,169,169,1], + "darkgreen": [0,100,0,1], "darkgrey": [169,169,169,1], + "darkkhaki": [189,183,107,1], "darkmagenta": [139,0,139,1], + "darkolivegreen": [85,107,47,1], "darkorange": [255,140,0,1], + "darkorchid": [153,50,204,1], "darkred": [139,0,0,1], + "darksalmon": [233,150,122,1], "darkseagreen": [143,188,143,1], + "darkslateblue": [72,61,139,1], "darkslategray": [47,79,79,1], + "darkslategrey": [47,79,79,1], "darkturquoise": [0,206,209,1], + "darkviolet": [148,0,211,1], "deeppink": [255,20,147,1], + "deepskyblue": [0,191,255,1], "dimgray": [105,105,105,1], + "dimgrey": [105,105,105,1], "dodgerblue": [30,144,255,1], + "firebrick": [178,34,34,1], "floralwhite": [255,250,240,1], + "forestgreen": [34,139,34,1], "fuchsia": [255,0,255,1], + "gainsboro": [220,220,220,1], "ghostwhite": [248,248,255,1], + "gold": [255,215,0,1], "goldenrod": [218,165,32,1], + "gray": [128,128,128,1], "green": [0,128,0,1], + "greenyellow": [173,255,47,1], "grey": [128,128,128,1], + "honeydew": [240,255,240,1], "hotpink": [255,105,180,1], + "indianred": [205,92,92,1], "indigo": [75,0,130,1], + "ivory": [255,255,240,1], "khaki": [240,230,140,1], + "lavender": [230,230,250,1], "lavenderblush": [255,240,245,1], + "lawngreen": [124,252,0,1], "lemonchiffon": [255,250,205,1], + "lightblue": [173,216,230,1], "lightcoral": [240,128,128,1], + "lightcyan": [224,255,255,1], "lightgoldenrodyellow": [250,250,210,1], + "lightgray": [211,211,211,1], "lightgreen": [144,238,144,1], + "lightgrey": [211,211,211,1], "lightpink": [255,182,193,1], + "lightsalmon": [255,160,122,1], "lightseagreen": [32,178,170,1], + "lightskyblue": [135,206,250,1], "lightslategray": [119,136,153,1], + "lightslategrey": [119,136,153,1], "lightsteelblue": [176,196,222,1], + "lightyellow": [255,255,224,1], "lime": [0,255,0,1], + "limegreen": [50,205,50,1], "linen": [250,240,230,1], + "magenta": [255,0,255,1], "maroon": [128,0,0,1], + "mediumaquamarine": [102,205,170,1], "mediumblue": [0,0,205,1], + "mediumorchid": [186,85,211,1], "mediumpurple": [147,112,219,1], + "mediumseagreen": [60,179,113,1], "mediumslateblue": [123,104,238,1], + "mediumspringgreen": [0,250,154,1], "mediumturquoise": [72,209,204,1], + "mediumvioletred": [199,21,133,1], "midnightblue": [25,25,112,1], + "mintcream": [245,255,250,1], "mistyrose": [255,228,225,1], + "moccasin": [255,228,181,1], "navajowhite": [255,222,173,1], + "navy": [0,0,128,1], "oldlace": [253,245,230,1], + "olive": [128,128,0,1], "olivedrab": [107,142,35,1], + "orange": [255,165,0,1], "orangered": [255,69,0,1], + "orchid": [218,112,214,1], "palegoldenrod": [238,232,170,1], + "palegreen": [152,251,152,1], "paleturquoise": [175,238,238,1], + "palevioletred": [219,112,147,1], "papayawhip": [255,239,213,1], + "peachpuff": [255,218,185,1], "peru": [205,133,63,1], + "pink": [255,192,203,1], "plum": [221,160,221,1], + "powderblue": [176,224,230,1], "purple": [128,0,128,1], + "rebeccapurple": [102,51,153,1], + "red": [255,0,0,1], "rosybrown": [188,143,143,1], + "royalblue": [65,105,225,1], "saddlebrown": [139,69,19,1], + "salmon": [250,128,114,1], "sandybrown": [244,164,96,1], + "seagreen": [46,139,87,1], "seashell": [255,245,238,1], + "sienna": [160,82,45,1], "silver": [192,192,192,1], + "skyblue": [135,206,235,1], "slateblue": [106,90,205,1], + "slategray": [112,128,144,1], "slategrey": [112,128,144,1], + "snow": [255,250,250,1], "springgreen": [0,255,127,1], + "steelblue": [70,130,180,1], "tan": [210,180,140,1], + "teal": [0,128,128,1], "thistle": [216,191,216,1], + "tomato": [255,99,71,1], "turquoise": [64,224,208,1], + "violet": [238,130,238,1], "wheat": [245,222,179,1], + "white": [255,255,255,1], "whitesmoke": [245,245,245,1], + "yellow": [255,255,0,1], "yellowgreen": [154,205,50,1]} + +function clamp_css_byte(i) { // Clamp to integer 0 .. 255. + i = Math.round(i); // Seems to be what Chrome does (vs truncation). + return i < 0 ? 0 : i > 255 ? 255 : i; +} + +function clamp_css_float(f) { // Clamp to float 0.0 .. 1.0. + return f < 0 ? 0 : f > 1 ? 1 : f; +} + +function parse_css_int(str) { // int or percentage. + if (str[str.length - 1] === '%') + return clamp_css_byte(parseFloat(str) / 100 * 255); + return clamp_css_byte(parseInt(str)); +} + +function parse_css_float(str) { // float or percentage. + if (str[str.length - 1] === '%') + return clamp_css_float(parseFloat(str) / 100); + return clamp_css_float(parseFloat(str)); +} + +function css_hue_to_rgb(m1, m2, h) { + if (h < 0) h += 1; + else if (h > 1) h -= 1; + + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + if (h * 2 < 1) return m2; + if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6; + return m1; +} + +function parseCSSColor(css_str) { + // Remove all whitespace, not compliant, but should just be more accepting. + var str = css_str.replace(/ /g, '').toLowerCase(); + + // Color keywords (and transparent) lookup. + if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup. + + // #abc and #abc123 syntax. + if (str[0] === '#') { + if (str.length === 4) { + var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing. + if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN. + return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), + (iv & 0xf0) | ((iv & 0xf0) >> 4), + (iv & 0xf) | ((iv & 0xf) << 4), + 1]; + } else if (str.length === 7) { + var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing. + if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN. + return [(iv & 0xff0000) >> 16, + (iv & 0xff00) >> 8, + iv & 0xff, + 1]; + } + + return null; + } + + var op = str.indexOf('('), ep = str.indexOf(')'); + if (op !== -1 && ep + 1 === str.length) { + var fname = str.substr(0, op); + var params = str.substr(op+1, ep-(op+1)).split(','); + var alpha = 1; // To allow case fallthrough. + switch (fname) { + case 'rgba': + if (params.length !== 4) return null; + alpha = parse_css_float(params.pop()); + // Fall through. + case 'rgb': + if (params.length !== 3) return null; + return [parse_css_int(params[0]), + parse_css_int(params[1]), + parse_css_int(params[2]), + alpha]; + case 'hsla': + if (params.length !== 4) return null; + alpha = parse_css_float(params.pop()); + // Fall through. + case 'hsl': + if (params.length !== 3) return null; + var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1 + // NOTE(deanm): According to the CSS spec s/l should only be + // percentages, but we don't bother and let float or percentage. + var s = parse_css_float(params[1]); + var l = parse_css_float(params[2]); + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255), + clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255), + clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255), + alpha]; + default: + return null; + } + } + + return null; +} diff --git a/plugins/jspsych-html-keyboard-response-clickable.js b/plugins/jspsych-html-keyboard-response-clickable.js new file mode 100644 index 0000000..43a8baf --- /dev/null +++ b/plugins/jspsych-html-keyboard-response-clickable.js @@ -0,0 +1,171 @@ +/** + * jspsych-html-keyboard-response-clickable + * Etienne Gaudrain + * + * Based on: + * jspsych-html-keyboard-response @6.1.0 + * Josh de Leeuw + * + * Like html-keyboard-response, but where clicking elements with class "clickable" will end the trial. + * + **/ + + +jsPsych.plugins["html-keyboard-response-clickable"] = (function() { + + var plugin = {}; + + plugin.info = { + name: 'html-keyboard-response-clickable', + description: 'Like html-keyboard-response, but where clicking elements with class "clickable" will end the trial.', + parameters: { + stimulus: { + type: jsPsych.plugins.parameterType.HTML_STRING, + pretty_name: 'Stimulus', + default: undefined, + description: 'The HTML string to be displayed' + }, + choices: { + type: jsPsych.plugins.parameterType.KEYCODE, + array: true, + pretty_name: 'Choices', + default: jsPsych.ALL_KEYS, + description: 'The keys the subject is allowed to press to respond to the stimulus.' + }, + clickable: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Clickable', + description: 'Clicking clickable elements ends trial.', + default: true + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'Any content here will be displayed below the stimulus.' + }, + stimulus_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Stimulus duration', + default: null, + description: 'How long to hide the stimulus.' + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'How long to show trial before it ends.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, trial will end when subject makes a response.' + }, + + } + } + + plugin.trial = function(display_element, trial) { + + var start_time; + var new_html = '
' + trial.stimulus + '
'; + + // add prompt + if(trial.prompt !== null) { + new_html += trial.prompt; + } + + // store response + var response = { + rt: null, + key: null + }; + + // function to end trial when it is time + var end_trial = function() { + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // kill keyboard listeners + if(typeof keyboardListener !== 'undefined') { + jsPsych.pluginAPI.cancelKeyboardResponse(keyboardListener); + } + + // gather the data to store for the trial + var trial_data = { + "rt": response.rt, + "stimulus": trial.stimulus, + "key_press": response.key + }; + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + jsPsych.finishTrial(trial_data); + }; + + // function to handle responses by the subject + var after_response = function(info) { + + // after a valid response, the stimulus will have the CSS class 'responded' + // which can be used to provide visual feedback that a response was recorded + display_element.querySelector('#jspsych-html-keyboard-response-stimulus').className += ' responded'; + + // only record the first response + if(response.key == null) { + response = info; + } + + if(trial.response_ends_trial) { + end_trial(); + } + }; + + // draw + display_element.innerHTML = new_html; + start_time = performance.now(); + + if(trial.clickable){ + display_element.querySelectorAll(".clickable").forEach(function(e){ + var clickHandler = function(event){ + event.preventDefault(); + var info = {'key': 'clicked', 'rt': performance.now()-start_time}; + after_response(info); + e.removeEventListener('click', clickHandler); + }; + e.addEventListener('click', clickHandler); + }); + } + + // start the response listener + if(trial.choices != jsPsych.NO_KEYS) { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'performance', + persist: false, + allow_held_key: false + }); + } + + // hide stimulus if stimulus_duration is set + if(trial.stimulus_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + display_element.querySelector('#jspsych-html-keyboard-response-stimulus').style.visibility = 'hidden'; + }, trial.stimulus_duration); + } + + // end trial if trial_duration is set + if(trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-image-keyboard-response-clickable.js b/plugins/jspsych-image-keyboard-response-clickable.js new file mode 100644 index 0000000..4884da5 --- /dev/null +++ b/plugins/jspsych-image-keyboard-response-clickable.js @@ -0,0 +1,208 @@ +/** + * jspsych-image-keyboard-response-clickable + * Etienne Gaudrain + * + * Based on: + * jspsych-image-keyboard-response @6.1.0 + * Josh de Leeuw + * + * plugin for displaying a stimulus and getting a keyboard response or click on + * a page element + * + * documentation: docs.jspsych.org + * + **/ + + +jsPsych.plugins["image-keyboard-response-clickable"] = (function() { + + var plugin = {}; + + jsPsych.pluginAPI.registerPreload('image-keyboard-response-clickable', 'stimulus', 'image'); + + plugin.info = { + name: 'image-keyboard-response', + description: '', + parameters: { + stimulus: { + type: jsPsych.plugins.parameterType.IMAGE, + pretty_name: 'Stimulus', + default: undefined, + description: 'The image to be displayed' + }, + stimulus_height: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Image height', + default: null, + description: 'Set the image height in pixels' + }, + stimulus_width: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Image width', + default: null, + description: 'Set the image width in pixels' + }, + maintain_aspect_ratio: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Maintain aspect ratio', + default: true, + description: 'Maintain the aspect ratio after setting width or height' + }, + choices: { + type: jsPsych.plugins.parameterType.KEYCODE, + array: true, + pretty_name: 'Choices', + default: jsPsych.ALL_KEYS, + description: 'The keys the subject is allowed to press to respond to the stimulus.' + }, + clickable: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Clickable', + description: 'Clicking clickable elements ends trial.', + default: true + }, + prompt: { + type: jsPsych.plugins.parameterType.STRING, + pretty_name: 'Prompt', + default: null, + description: 'Any content here will be displayed below the stimulus.' + }, + stimulus_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Stimulus duration', + default: null, + description: 'How long to hide the stimulus.' + }, + trial_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Trial duration', + default: null, + description: 'How long to show trial before it ends.' + }, + response_ends_trial: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Response ends trial', + default: true, + description: 'If true, trial will end when subject makes a response.' + }, + } + } + + plugin.trial = function(display_element, trial) { + + var start_time; + + // display stimulus + var html = ''; + + // add prompt + if(trial.prompt !== null) { + html += trial.prompt; + } + + // render + display_element.innerHTML = html; + start_time = performance.now(); + + // store response + var response = { + rt: null, + key: null + }; + + // function to end trial when it is time + var end_trial = function() { + + // kill any remaining setTimeout handlers + jsPsych.pluginAPI.clearAllTimeouts(); + + // kill keyboard listeners + if(typeof keyboardListener !== 'undefined') { + jsPsych.pluginAPI.cancelKeyboardResponse(keyboardListener); + } + + // gather the data to store for the trial + var trial_data = { + "rt": response.rt, + "stimulus": trial.stimulus, + "key_press": response.key + }; + + // clear the display + display_element.innerHTML = ''; + + // move on to the next trial + jsPsych.finishTrial(trial_data); + }; + + // function to handle responses by the subject + var after_response = function(info) { + + // after a valid response, the stimulus will have the CSS class 'responded' + // which can be used to provide visual feedback that a response was recorded + display_element.querySelector('#jspsych-image-keyboard-response-stimulus').className += ' responded'; + + // only record the first response + if(response.key == null) { + response = info; + } + + if(trial.response_ends_trial) { + end_trial(); + } + }; + + // start the response listener + if(trial.choices != jsPsych.NO_KEYS) { + var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({ + callback_function: after_response, + valid_responses: trial.choices, + rt_method: 'performance', + persist: false, + allow_held_key: false + }); + } + + if(trial.clickable){ + display_element.querySelectorAll(".clickable").forEach(function(e){ + var clickHandler = function(event){ + event.preventDefault(); + var info = {'key': 'clicked', 'rt': performance.now()-start_time}; + after_response(info); + e.removeEventListener('click', clickHandler); + }; + e.addEventListener('click', clickHandler); + }); + } + + // hide stimulus if stimulus_duration is set + if(trial.stimulus_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + display_element.querySelector('#jspsych-image-keyboard-response-stimulus').style.visibility = 'hidden'; + }, trial.stimulus_duration); + } + + // end trial if trial_duration is set + if(trial.trial_duration !== null) { + jsPsych.pluginAPI.setTimeout(function() { + end_trial(); + }, trial.trial_duration); + } + + }; + + return plugin; +})(); diff --git a/plugins/jspsych-waitfor-function.js b/plugins/jspsych-waitfor-function.js new file mode 100644 index 0000000..1e04f49 --- /dev/null +++ b/plugins/jspsych-waitfor-function.js @@ -0,0 +1,81 @@ +/** + * jspsych-waitfor-function + * Plugin for waiting for the execution of an arbitrary function during a jspsych experiment. + * It's the same as call-function except that a loading wheel is displayed. + * + * The loading wheel requires jQuery and Semantic. + * + * Etienne Gaudrain + * + **/ + +jsPsych.plugins['waitfor-function'] = (function() { + + var plugin = {}; + + plugin.info = { + name: 'waitfor-function', + description: '', + parameters: { + func: { + type: jsPsych.plugins.parameterType.FUNCTION, + pretty_name: 'Function', + default: undefined, + description: 'Function to call' + }, + async: { + type: jsPsych.plugins.parameterType.BOOL, + pretty_name: 'Asynchronous', + default: false, + description: 'Is the function call asynchronous?' + }, + min_duration: { + type: jsPsych.plugins.parameterType.INT, + pretty_name: 'Minimum duration', + default: 0, + description: 'The wait will last at least this time (in ms).' + } + } + } + + plugin.trial = function(display_element, trial) { + + var start_time = performance.now(); + + trial.post_trial_gap = 0; + var return_val; + + $(display_element).html("
"); + + if(trial.async) { + var done = function(data) { + return_val = data; + end_trial(); + } + trial.func(done); + } else { + return_val = trial.func(); + end_trial(); + } + + function end_trial() { + $(display_element).empty(); + + var end_time = performance.now(); + console.log("We finished in "+(end_time-start_time)+" ms..."); + if(end_time-start_time < trial.min_duration) + { + trial.post_trial_gap = trial.min_duration - (end_time-start_time); + console.log("We need to wait "+trial.post_trial_gap+" ms."); + } + + var trial_data = { + value: return_val + }; + + jsPsych.finishTrial(trial_data); + } + }; + + return plugin; +})(); diff --git a/tests/res/cat_black_2.mp3 b/tests/res/cat_black_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f100adc93e2f55e1fb48d16346662edfc469d0a6 GIT binary patch literal 45845 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/tests/res/cat_black_2.wav b/tests/res/cat_black_2.wav new file mode 100644 index 0000000000000000000000000000000000000000..31af9d9231e1f134a4ba3f705021193695438c43 GIT binary patch literal 209630 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
+ + + +
+ + + + diff --git a/tests/test_jspsych-html-keyboard-response-clickable.html b/tests/test_jspsych-html-keyboard-response-clickable.html new file mode 100644 index 0000000..09db69f --- /dev/null +++ b/tests/test_jspsych-html-keyboard-response-clickable.html @@ -0,0 +1,39 @@ + + + + + Test for jspsych-html-keyboard-response-clickable + + + + + + + + + + + diff --git a/tests/test_jspsych-image-keyboard-response-clickable.html b/tests/test_jspsych-image-keyboard-response-clickable.html new file mode 100644 index 0000000..2c63852 --- /dev/null +++ b/tests/test_jspsych-image-keyboard-response-clickable.html @@ -0,0 +1,53 @@ + + + + + Test for jspsych-html-keyboard-response-clickable + + + + + + + + + + + +

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%0DSTW1s-kyofonIHNN$rq(gdhN&_P+o9<--fdewIU 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 RJu)3Qe~0g7%^j7%Axf3(rlUa*GN2;@7(oSi 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 Xz(~HB9XB3Y00000NkvXXu0mjfd;HDt literal 0 HcmV?d00001 diff --git a/tests/test_jspsych-audio-safari-init.html b/tests/test_jspsych-audio-safari-init.html new file mode 100644 index 0000000..ced6cb4 --- /dev/null +++ b/tests/test_jspsych-audio-safari-init.html @@ -0,0 +1,12 @@ + + + + + + + + + Redirecting to test_jspsych-audio-safari-init.php... + + + diff --git a/tests/test_jspsych-audio-safari-init.php b/tests/test_jspsych-audio-safari-init.php new file mode 100644 index 0000000..60d5cf9 --- /dev/null +++ b/tests/test_jspsych-audio-safari-init.php @@ -0,0 +1,179 @@ + + + + + + Test for jspsych-html-keyboard-response-clickable + + + + + + + + + + + +With HTML start button"; } +?> +

"+trial.color_labels[c]+""+n+""+trial.color_labels[c]+"