mirror of
https://github.com/jspsych/jsPsych.git
synced 2025-05-10 11:10:54 +00:00
add AudioPlayer v8 migration info
This commit is contained in:
parent
4b14995d4a
commit
f8398601c3
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
Version 8.x of jsPsych focused on a complete rewrite of the core library to enable new features and make it easier to maintain.
|
Version 8.x of jsPsych focused on a complete rewrite of the core library to enable new features and make it easier to maintain.
|
||||||
Most of the changes in version 8.x are behind the scenes.
|
Most of the changes in version 8.x are behind the scenes.
|
||||||
However, there are some breaking changes that you will need to address in your experiment code in order to upgrade to v8.x.
|
However, there are some breaking changes that you will need to address in your experiment code in order to upgrade to v8.x.
|
||||||
|
If you are a plugin developer, there are also some special considerations below to factor in when developing your plugins or modifying existing ones.
|
||||||
|
|
||||||
This guide is aimed at upgrades from version 7.x to 8.x.
|
This guide is aimed at upgrades from version 7.x to 8.x.
|
||||||
If you are using version 6.x or earlier, please follow the [migration guide for v7.x](./migration-v7.md) before trying to upgrade to v8.x.
|
If you are using version 6.x or earlier, please follow the [migration guide for v7.x](./migration-v7.md) before trying to upgrade to v8.x.
|
||||||
@ -85,6 +86,9 @@ const trial = {
|
|||||||
The `button_html` parameter can also support different HTML for each button.
|
The `button_html` parameter can also support different HTML for each button.
|
||||||
See the [plugin documentation](https://www.jspsych.org/latest/plugins/html-button-response/index.html) for more details.
|
See the [plugin documentation](https://www.jspsych.org/latest/plugins/html-button-response/index.html) for more details.
|
||||||
|
|
||||||
|
For plugin developers: if you are writing a plugin and updating parameters to use functions,
|
||||||
|
make sure to mock these functions in Jest to ensure tests can still run.
|
||||||
|
|
||||||
## Plugin parameter handling
|
## Plugin parameter handling
|
||||||
|
|
||||||
In version 7.x, a plugin could omit parameters from the `info` object and jsPsych would still evaluate these parameters appropriately in most cases.
|
In version 7.x, a plugin could omit parameters from the `info` object and jsPsych would still evaluate these parameters appropriately in most cases.
|
||||||
@ -104,6 +108,49 @@ Including these properties is not *required* for a plugin to work, but it is rec
|
|||||||
In version 8.x, jsPsych will throw a warning if a plugin is used that does not have a `version` or `data` property in the `info` object.
|
In version 8.x, jsPsych will throw a warning if a plugin is used that does not have a `version` or `data` property in the `info` object.
|
||||||
In version 9.x, we plan to make this a requirement.
|
In version 9.x, we plan to make this a requirement.
|
||||||
|
|
||||||
|
## Changes to the `AudioPlayer` class
|
||||||
|
|
||||||
|
In version 7.x, jsPsych's `pluginAPI` class exposed WebAudio and HTML5 audio APIs through `getAudioBuffer()`. However, this required different implementations done by the developer to account for each API.
|
||||||
|
In version 8.x, we've removed this in favor of `getAudioPlayer()`, which handles both API choices under the hood.
|
||||||
|
|
||||||
|
This change only effects plugin developers. If you want to update to use the new `getAudioPlayer()`, it is recommend that you call this new method using the `await` syntax, which requires an asyncrhonous `trial` function:
|
||||||
|
```js
|
||||||
|
const audio = await jsPsych.pluginAPI.getAudioPlayer('my-sound.mp3');
|
||||||
|
```
|
||||||
|
|
||||||
|
If you'd like to still use the `.then()` syntax to resolve the Promise generated, you may update it as such:
|
||||||
|
|
||||||
|
Version 7.x:
|
||||||
|
```js
|
||||||
|
this.jsPsych.pluginAPI
|
||||||
|
.getAudioBuffer('my-audio.mp3')
|
||||||
|
.then((audio) => {
|
||||||
|
// call play on audio if HTML5 audio API, create and connect buffer if WebAudio API
|
||||||
|
})
|
||||||
|
.catch((err) =>{
|
||||||
|
// handle error
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Version 8.x:
|
||||||
|
```js
|
||||||
|
this.jsPsych.pluginAPI
|
||||||
|
.getAudioPlayer('my-audio.mp3')
|
||||||
|
.then((player) => {
|
||||||
|
// no need to create and connect buffer, can just directly call functions on player
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
// handle error
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
Along with this, the `start()` and `pause()` functions were removed from the `AudioPlayer` class.
|
||||||
|
You can still call `stop()` upon an audio ending in order to regenerate the `AudioPlayer`, and be able
|
||||||
|
to call `play()` on it again.
|
||||||
|
|
||||||
|
For a general guide on implementation, the `audio-button-response` plugin uses the `await` syntax
|
||||||
|
to handle playing audio.
|
||||||
|
|
||||||
## Changes to `finishTrial()`
|
## Changes to `finishTrial()`
|
||||||
|
|
||||||
When a plugin calls `finishTrial()` or ends via a `return` statement, jsPsych will now automatically clear the display and clear any timeouts that are still pending. This change should only affect plugin developers. If you are using built-in plugins you should not notice any difference.
|
When a plugin calls `finishTrial()` or ends via a `return` statement, jsPsych will now automatically clear the display and clear any timeouts that are still pending. This change should only affect plugin developers. If you are using built-in plugins you should not notice any difference.
|
||||||
|
Loading…
Reference in New Issue
Block a user