forked from languageininteraction/LanguageMemoryApp
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchanges.txt
More file actions
136 lines (87 loc) · 10.6 KB
/
changes.txt
File metadata and controls
136 lines (87 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Added the feature requestFocus that requests focus on the input specified by the matchingRegex if it exists and is visible.
Corrected an issue which caused the staging warning to be shown when deployed to custom production servers.
Added default locale and available locales to the XML to enable customisation of the translation elements.
Added a feature stimulusSlider to to provide a slider input for stimuli responses.
Added a feature recorderToneInjection to in inject an DTMF tone in to the current audio recording stream.
Limited the free text input and metadata fields to the current DB limit of 1024 characters.
Switching to serving content with same-origin and require-corp headers which should allow higher resolution timers in firefox.
#Changes in Frinex 1.4
Enabled OGV format in the XML for the audio/media recorder.
Added storage, retrieval and playback of OGV video files in the admin system.
Refactored the audio player, video player and the audio recorder to enable the addition of video recording features.
Changed the method of collecting sequential recordings because closing the recorder leaves the encoder worker running and the documented methods to terminate the worker have not helped, so we keep the recorder open for new recordings. This will have implications for timing and recording alignment to events. This change should make it possible to collect more than 100 recordings sequentially.
Added logging of the webbrowser's userAgentData.
Added usage documentation for the group robot settings and the standard robot settings.
Added default content to <progress/> elements after observing chrome treating them as a starting progress and putting subsequent elements into the already closed progress.
Added default content to <div/> elements after observing chrome treating them as a starting div and putting subsequent elements into the already closed div.
Added informational text to the header of the administration pages "Please be aware that that while the data is displayed in milliseconds, that does not mean millisecond accuracy. There are many factors that affect accuracy, so to determine the accuracy each experiment would need to be physically measured in a browser on some typical hardware used by the participants".
Modified the mediaId produced when using stimulusPresent from "autoStimulus" and "stimulusPresent" to use "audio-" + stimulusId and "video-" + stimulusId.
Added a score group to the clearCurrentScore action to provide a way to keep track of BQ4 sessions. The clearCurrentScore clears the current score and sets the current score group string based on the evaluateTokens. The score group is a marker shown in the admin system to keep track of the records and does not affect the score collection process.
Added REST interface methods that allow seaching for values in each custom field of the participant table (seach custom metadata fields).
Added extra search methods for tag pair data based on eventTag or tagValue1, which will for example make it possible to list all completion codes.
Added add an evaluate method addTime() for adding together two times, for example adding 30 minutes to 15:00.
Reenabled the use of pause and resume on the web audio recorder due to popular request although it can cause timing issues when used.
Modified startAudioRecorderWeb and startAudioRecorderApp so that the recording label will not be shown when it is set to "hidden".
Tweaked the local notifications so that they are requested in reverse date and reverse time order, so that if any are rejected by the device the most immediate notifications will be preserved.
Added evaluateMs to addFrameTimeTrigger and addMediaTrigger. Added a sub elements of onTime and onError to addFrameTimeTrigger and addMediaTrigger. Added an error threshold ms attribute to all time critical triggers.
Added an example of formatting the current time and date with various formatting options:
with_stimulus_example/#Format_Current_DateTime
Updated the various DTMF examples:
with_stimulus_example/RecorderDtmfTriggerExample
with_stimulus_example/#RecordingDTMFExtendedTest
with_stimulus_example/#RecordingDTMFQualityTest
Updated the audio recorder noise cancelation example:
with_stimulus_example/#RecorderNoiseEchoGainTest
Updated the example of keeping a list of unique dates:
with_stimulus_example/#append_unique_date
Updated the "Download Zipped Audio" on the admin menu page to explicitly have whitespace between each item.
Reorganised the audio recorder examples in with_stimulus_example so that they are all in one group (the examples are all still there, just in a different order).
Added more documentation for various existing features: backgroundImage, disableButtonGroup, enableButtonGroup, hideButtonGroup, showButtonGroup, playMedia, rewindMedia, pauseMedia, logMediaTimeStamp, startAudioRecorderWeb,
The following features have been added:
startFrameRateTimer
Adds a trigger to the containing frame timer. When the timer has a value equal or greater than the specified milliseconds this trigger. Only one trigger per millisecond value can be assigned.
addFrameTimeTrigger
Starts a timer that evaluates its triggers before each frame is rendered in the browser. The resolution of these triggering events will be no less that the framerate, but the actual time resolution is browser dependant.
addMediaTrigger
Adds a media recording or playback event that will trigger when the media first passes the provided milliseconds value. The timing of this event will have a resolution not less than the length of the recording buffer.
addRecorderDtmfTrigger
Adds a web recorder event that will trigger when the the provided DTMF tone is detected in the recorded audio stream. Only one trigger can be assigned per DTMF code.
doLater
After the specified milliseconds have passed the contents of this element are evaluated.
dtmfTone
Produces the specified DTMF tone for the given time in milliseconds. When the milliseconds is set to 0 or omitted the tone will continue until it is stopped by setting the DTMF code to off.
For the audio recorder using addMediaTrigger, I have changed source where we get the recorded media length. It was previously obtained from using the encoder position, which introduced a delay of the encoding time. Now it is taken from the timebase of the audio input node. This is used for the purpose of the recorder ms triggers and the media time display. Sometimes when the recording starts after a delay for example waiting for user agreement the recording time is also skewed, so in such cases we now abort and restart the recording (this process is seamless to the user). This change also solves the issue getting the recorder position when recording WAV.
The pause and resume features have been removed from the audio recorder because they also skew the recording time and we now have a better solution.
The feature startAudioRecorderWeb has been updated:
If levelIndicatorStyle is set the recording level indicator will be shown and this is unchanged. Now if a region with the ID of AudioRecorderWebLevelIndicator exists then that region will be used to position the recording level indicator.
The startFrameRateTimer is a framerate timer which is evaluated for trigger before each browser frame refresh. This should make better frame accuracy possible, but misuse can also impact the running of the browser refresh, so I have limited the types of features that can be used in these time critical sections.
For example the time sensitive sections of addFrameTimeTrigger, addMediaTrigger, addRecorderDtmfTrigger are restricted to only allow time efficient features:
<startFrameRateTimer>
<addFrameTimeTrigger msToNext="60">
<disableButtonGroup matchingRegex="matchingRegex"/>
<enableButtonGroup matchingRegex="matchingRegex"/>
<hideButtonGroup matchingRegex="matchingRegex"/>
<showButtonGroup matchingRegex="matchingRegex"/>
<doLater msToNext="60">
<!-- anything can be used in doLater because it is outside of the time critical code -->
</doLater>
<regionStyle regionId="regionId" styleName="styleName"/>
<stopAudioRecorder/>
<startAudioRecorderTag eventTier="8"/>
</addFrameTimeTrigger>
</startFrameRateTimer>
I have made a version of the Sequential_Display_Example that uses the addFrameTimeTrigger. So there is now Sequential Display Example (single timer), Sequential Display Example (using 7 separate timers) and Sequential Display Example (FrameRateTimer) which can be used to compare the effectiveness of each technique.
with_stimulus_example/#Sequential_Display_FrameRateTimer
I have also added a number of examples for the new features of DTMF tone detection while recording, media playback time based triggering, recorded audio time based triggering and a new timer feature that is synced to the browser refresh rate.
While these changes might not seem like much, I expect that these new features will make better time accuracy possible (yet to be tested in the wild). The DTMF tone detection should make pre experiment audio testing quite solid, in that an experiment can now be designed so that the participant cannot proceed without a machine detectable tone captured in the the recorded audio stream. The tone detection can also be used in each trial of the experiment.
with_stimulus_example/#RecordingDTMFQualityTest
with_stimulus_example/#RecordingDTMFExtendedTest
with_stimulus_example/#RecorderDtmfTriggerExample
I have also updated the Audio_Input_Select example and corrected an issue such that audio permissions are always requested (which is required to show the list of audio devices):
with_stimulus_example/#Audio_Input_Select
The Electron application menu is hidden by default, so the parameter --debug-mode can be used on the command line when starting to app. When --debug-mode is provided the inspect tab and the application menu will be shown. Please note that this debug mode can only be used on the staging version.
On osX you can run pass the --debug-mode switch as follows: open ~/Downloads/with_stimulus_example.app --args --debug-mode
On Windows it would just be: with_stimulus_example.exe --debug-mode
Added extra browser reporting info of app version, app name, app code name (app in this context is the browser application).
Added logging of browser window blur and focus events to the screen change table (logs when the participant clicks away from the browser tab).
Added features related to the docker deployment options and load balancing infrastructure.