speaker-calibration 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +72 -0
- package/.eslintrc.json +40 -0
- package/.gitignore +78 -0
- package/.prettierignore +70 -0
- package/.prettierrc +15 -0
- package/LICENSE +20 -20
- package/README.md +133 -133
- package/__mocks__/fileMock.js +1 -0
- package/__mocks__/styleMock.js +1 -0
- package/babel.config.js +3 -0
- package/coverage/clover.xml +71 -0
- package/coverage/coverage-final.json +224 -0
- package/coverage/lcov-report/PythonServerInterface.js.html +265 -0
- package/coverage/lcov-report/base.css +354 -0
- package/coverage/lcov-report/block-navigation.js +82 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +123 -0
- package/coverage/lcov-report/prettify.css +101 -0
- package/coverage/lcov-report/prettify.js +937 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +189 -0
- package/coverage/lcov-report/src/index.html +121 -0
- package/coverage/lcov-report/src/server/PythonServerInterface.js.html +268 -0
- package/coverage/lcov-report/src/server/index.html +123 -0
- package/coverage/lcov-report/src/tasks/audioCalibrator.js.html +499 -0
- package/coverage/lcov-report/src/tasks/audioRecorder.js.html +412 -0
- package/coverage/lcov-report/src/tasks/index.html +143 -0
- package/coverage/lcov-report/src/tasks/volume/index.html +123 -0
- package/coverage/lcov-report/src/tasks/volume/volume.js.html +409 -0
- package/coverage/lcov-report/src/utils.js.html +172 -0
- package/coverage/lcov.info +91 -0
- package/dist/example/Queen-Bohemian_Rhapsody.wav +0 -0
- package/dist/example/Queen-Bohemian_Rhapsody_g_filtered.wav +0 -0
- package/dist/example/index.html +47 -0
- package/dist/example/listener.html +89 -0
- package/dist/example/server.js +49 -0
- package/dist/example/speaker.html +126 -0
- package/dist/example/speakerUI.js +217 -0
- package/dist/example/styles.css +40 -0
- package/dist/main.js +913 -1
- package/dist/mlsGen.js +6814 -6814
- package/dist/mlsGen.wasm +0 -0
- package/doc/AudioCalibrator.html +417 -0
- package/doc/AudioPeer.html +251 -0
- package/doc/AudioRecorder.html +195 -0
- package/doc/ImpulseResponse.html +215 -0
- package/doc/Listener.html +308 -0
- package/doc/MlsGenInterface.html +226 -0
- package/doc/MyEventEmitter.html +274 -0
- package/doc/PythonServerAPI.html +109 -0
- package/doc/Speaker-Calibration-UML-Diagram.png +0 -0
- package/doc/Speaker.html +276 -0
- package/doc/Takes%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +128 -0
- package/doc/Takes%20the%20url%20of%20the%20current%20site%0Aand%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +138 -0
- package/doc/Takes%20the%20url%20of%20the%20current%20site%20and%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +137 -0
- package/doc/Volume.html +88 -0
- package/doc/audioCalibrator.js.html +179 -0
- package/doc/audioPeer.js.html +175 -0
- package/doc/audioRecorder.js.html +163 -0
- package/doc/creates%20a%20new%20AudioRecorder%20instance.%20%0ASets%20up%20the%20audio%20context%20and%20file%20reader..html +114 -0
- package/doc/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/doc/fonts/OpenSans-Bold-webfont.svg +1830 -0
- package/doc/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/doc/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/doc/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
- package/doc/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/doc/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/doc/fonts/OpenSans-Italic-webfont.svg +1830 -0
- package/doc/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/doc/fonts/OpenSans-Light-webfont.eot +0 -0
- package/doc/fonts/OpenSans-Light-webfont.svg +1831 -0
- package/doc/fonts/OpenSans-Light-webfont.woff +0 -0
- package/doc/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/doc/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
- package/doc/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/doc/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/doc/fonts/OpenSans-Regular-webfont.svg +1831 -0
- package/doc/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/doc/global.html +308 -0
- package/doc/index.html +58 -0
- package/doc/listener.js.html +170 -0
- package/doc/mlsGen_mlsGenInterface.js.html +117 -0
- package/doc/myEventEmitter.js.html +124 -0
- package/doc/peer-connection_audioPeer.js.html +188 -0
- package/doc/peer-connection_listener.js.html +311 -0
- package/doc/peer-connection_speaker.js.html +381 -0
- package/doc/sc-activity-diagram.png +0 -0
- package/doc/scripts/linenumber.js +25 -0
- package/doc/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/doc/scripts/prettify/lang-css.js +24 -0
- package/doc/scripts/prettify/prettify.js +640 -0
- package/doc/server_PythonServerAPI.js.html +160 -0
- package/doc/speaker.js.html +248 -0
- package/doc/styles/jsdoc-default.css +371 -0
- package/doc/styles/prettify-jsdoc.css +111 -0
- package/doc/styles/prettify-tomorrow.css +163 -0
- package/doc/tasks_audioCalibrator.js.html +207 -0
- package/doc/tasks_audioRecorder.js.html +190 -0
- package/doc/tasks_impulse-response_impulseResponse.js.html +442 -0
- package/doc/tasks_impulse-response_mlsGen_mlsGenInterface.js.html +175 -0
- package/doc/tasks_volume_volume.js.html +185 -0
- package/doc/utils.js.html +105 -0
- package/jest.config.js +173 -0
- package/netlify.toml +27 -0
- package/package.json +67 -66
- package/src/index.html +21 -0
- package/src/main.js +21 -0
- package/src/myEventEmitter.js +83 -0
- package/src/peer-connection/audioPeer.js +151 -0
- package/src/peer-connection/listener.js +251 -0
- package/src/peer-connection/peerErrors.js +25 -0
- package/src/peer-connection/speaker.js +346 -0
- package/src/server/PythonServerAPI.js +155 -0
- package/src/tasks/audioCalibrator.js +218 -0
- package/src/tasks/audioRecorder.js +148 -0
- package/src/tasks/impulse-response/impulseResponse.js +436 -0
- package/src/tasks/impulse-response/mlsGen/mlsGen.cpp +99 -0
- package/src/tasks/impulse-response/mlsGen/mlsGen.hpp +304 -0
- package/src/tasks/impulse-response/mlsGen/mlsGenInterface.js +131 -0
- package/src/tasks/impulse-response/mlsGen/mlsGenTest.cpp +181 -0
- package/src/tasks/volume/volume.cpp +3 -0
- package/src/tasks/volume/volume.hpp +23 -0
- package/src/tasks/volume/volume.js +174 -0
- package/src/utils.js +55 -0
- package/webpack.config.js +37 -0
- package/README +0 -3
package/.eslintignore
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# ignore all files starting with . or ~
|
|
2
|
+
.*
|
|
3
|
+
~*
|
|
4
|
+
|
|
5
|
+
# ignore tests
|
|
6
|
+
**/__tests__/**
|
|
7
|
+
|
|
8
|
+
# ignore node/grunt dependency directories
|
|
9
|
+
node_modules/
|
|
10
|
+
|
|
11
|
+
# ignore dist files
|
|
12
|
+
dist/
|
|
13
|
+
|
|
14
|
+
# ignore composer vendor directory
|
|
15
|
+
/vendor
|
|
16
|
+
|
|
17
|
+
# ignore components loaded via Bower
|
|
18
|
+
/bower_components
|
|
19
|
+
|
|
20
|
+
# ignore jekyll build directory
|
|
21
|
+
/_site
|
|
22
|
+
|
|
23
|
+
# ignore OS generated files
|
|
24
|
+
ehthumbs.db
|
|
25
|
+
Thumbs.db
|
|
26
|
+
|
|
27
|
+
# ignore Editor files
|
|
28
|
+
*.sublime-project
|
|
29
|
+
*.sublime-workspace
|
|
30
|
+
*.komodoproject
|
|
31
|
+
|
|
32
|
+
# ignore log files and databases
|
|
33
|
+
*.log
|
|
34
|
+
*.sql
|
|
35
|
+
*.sqlite
|
|
36
|
+
|
|
37
|
+
# ignore compiled files
|
|
38
|
+
*.com
|
|
39
|
+
*.class
|
|
40
|
+
*.dll
|
|
41
|
+
*.exe
|
|
42
|
+
*.o
|
|
43
|
+
*.so
|
|
44
|
+
|
|
45
|
+
# ignore packaged files
|
|
46
|
+
*.7z
|
|
47
|
+
*.dmg
|
|
48
|
+
*.gz
|
|
49
|
+
*.iso
|
|
50
|
+
*.jar
|
|
51
|
+
*.rar
|
|
52
|
+
*.tar
|
|
53
|
+
*.zip
|
|
54
|
+
|
|
55
|
+
# ignore private/secret files
|
|
56
|
+
*.der
|
|
57
|
+
*.key
|
|
58
|
+
*.pem
|
|
59
|
+
|
|
60
|
+
# --------------------------------------------------------
|
|
61
|
+
# BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
|
|
62
|
+
# --------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
# track these files, if they exist
|
|
65
|
+
!.gitignore
|
|
66
|
+
!.editorconfig
|
|
67
|
+
!.phpcs.xml.dist
|
|
68
|
+
!.env.example
|
|
69
|
+
!.eslintrc.json
|
|
70
|
+
!.prettierrc.json
|
|
71
|
+
!.eslintignore
|
|
72
|
+
!.prettierignore
|
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"env": {
|
|
3
|
+
"browser": true,
|
|
4
|
+
"es2021": true
|
|
5
|
+
},
|
|
6
|
+
"extends": ["airbnb-base", "prettier", "plugin:compat/recommended"],
|
|
7
|
+
"plugins": ["no-floating-promise", "jsdoc"],
|
|
8
|
+
"parserOptions": {
|
|
9
|
+
"ecmaVersion": "latest",
|
|
10
|
+
"sourceType": "module"
|
|
11
|
+
},
|
|
12
|
+
"rules": {
|
|
13
|
+
"no-console": 1, //TODO: set to 1 in final submission
|
|
14
|
+
"class-methods-use-this": 1, //TODO: set to 1 in final submission
|
|
15
|
+
"require-jsdoc": [
|
|
16
|
+
"error",
|
|
17
|
+
{
|
|
18
|
+
"require": {
|
|
19
|
+
"FunctionDeclaration": true,
|
|
20
|
+
"MethodDefinition": true,
|
|
21
|
+
"ClassDeclaration": true,
|
|
22
|
+
"ArrowFunctionExpression": true,
|
|
23
|
+
"FunctionExpression": true
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"no-floating-promise/no-floating-promise": 2
|
|
28
|
+
},
|
|
29
|
+
"settings": {
|
|
30
|
+
"polyfills": [
|
|
31
|
+
"Promise",
|
|
32
|
+
"Array.from",
|
|
33
|
+
"Object.fromEntries",
|
|
34
|
+
"navigator.mediaDevices",
|
|
35
|
+
"AudioContext",
|
|
36
|
+
"MediaRecorder",
|
|
37
|
+
"URLSearchParams"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
package/.gitignore
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Ignore files without extentions
|
|
2
|
+
*
|
|
3
|
+
!/**/
|
|
4
|
+
!*.*
|
|
5
|
+
|
|
6
|
+
# ignore all files starting with . or ~
|
|
7
|
+
.*
|
|
8
|
+
~*
|
|
9
|
+
|
|
10
|
+
# ignore node/grunt dependency directories
|
|
11
|
+
node_modules/
|
|
12
|
+
|
|
13
|
+
# ignore composer vendor directory
|
|
14
|
+
/vendor
|
|
15
|
+
|
|
16
|
+
# ignore components loaded via Bower
|
|
17
|
+
/bower_components
|
|
18
|
+
|
|
19
|
+
# ignore jekyll build directory
|
|
20
|
+
/_site
|
|
21
|
+
|
|
22
|
+
# ignore OS generated files
|
|
23
|
+
ehthumbs.db
|
|
24
|
+
Thumbs.db
|
|
25
|
+
|
|
26
|
+
# ignore Editor files
|
|
27
|
+
*.sublime-project
|
|
28
|
+
*.sublime-workspace
|
|
29
|
+
*.komodoproject
|
|
30
|
+
|
|
31
|
+
# ignore log files and databases
|
|
32
|
+
*.log
|
|
33
|
+
*.sql
|
|
34
|
+
*.sqlite
|
|
35
|
+
|
|
36
|
+
# ignore compiled files
|
|
37
|
+
*.com
|
|
38
|
+
*.class
|
|
39
|
+
*.dll
|
|
40
|
+
*.exe
|
|
41
|
+
*.o
|
|
42
|
+
*.so
|
|
43
|
+
|
|
44
|
+
# ignore packaged files
|
|
45
|
+
*.7z
|
|
46
|
+
*.dmg
|
|
47
|
+
*.gz
|
|
48
|
+
*.iso
|
|
49
|
+
*.jar
|
|
50
|
+
*.rar
|
|
51
|
+
*.tar
|
|
52
|
+
*.zip
|
|
53
|
+
|
|
54
|
+
# ignore private/secret files
|
|
55
|
+
*.der
|
|
56
|
+
*.key
|
|
57
|
+
*.pem
|
|
58
|
+
|
|
59
|
+
# ingnore CSV files
|
|
60
|
+
*.csv
|
|
61
|
+
|
|
62
|
+
# ignore library files
|
|
63
|
+
kfr-master
|
|
64
|
+
kissfft
|
|
65
|
+
|
|
66
|
+
# --------------------------------------------------------
|
|
67
|
+
# BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
|
|
68
|
+
# --------------------------------------------------------
|
|
69
|
+
|
|
70
|
+
# track these files, if they exist
|
|
71
|
+
!.gitignore
|
|
72
|
+
!.editorconfig
|
|
73
|
+
!.phpcs.xml.dist
|
|
74
|
+
!.env.example
|
|
75
|
+
!.eslintrc.json
|
|
76
|
+
!.prettierrc
|
|
77
|
+
!.eslintignore
|
|
78
|
+
!.prettierignore
|
package/.prettierignore
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# ignore all files starting with . or ~
|
|
2
|
+
.*
|
|
3
|
+
~*
|
|
4
|
+
|
|
5
|
+
# ignore dist files
|
|
6
|
+
dist/*
|
|
7
|
+
!dist/example/
|
|
8
|
+
|
|
9
|
+
# ignore node/grunt dependency directories
|
|
10
|
+
node_modules/
|
|
11
|
+
|
|
12
|
+
# ignore composer vendor directory
|
|
13
|
+
/vendor
|
|
14
|
+
|
|
15
|
+
# ignore components loaded via Bower
|
|
16
|
+
/bower_components
|
|
17
|
+
|
|
18
|
+
# ignore jekyll build directory
|
|
19
|
+
/_site
|
|
20
|
+
|
|
21
|
+
# ignore OS generated files
|
|
22
|
+
ehthumbs.db
|
|
23
|
+
Thumbs.db
|
|
24
|
+
|
|
25
|
+
# ignore Editor files
|
|
26
|
+
*.sublime-project
|
|
27
|
+
*.sublime-workspace
|
|
28
|
+
*.komodoproject
|
|
29
|
+
|
|
30
|
+
# ignore log files and databases
|
|
31
|
+
*.log
|
|
32
|
+
*.sql
|
|
33
|
+
*.sqlite
|
|
34
|
+
|
|
35
|
+
# ignore compiled files
|
|
36
|
+
*.com
|
|
37
|
+
*.class
|
|
38
|
+
*.dll
|
|
39
|
+
*.exe
|
|
40
|
+
*.o
|
|
41
|
+
*.so
|
|
42
|
+
|
|
43
|
+
# ignore packaged files
|
|
44
|
+
*.7z
|
|
45
|
+
*.dmg
|
|
46
|
+
*.gz
|
|
47
|
+
*.iso
|
|
48
|
+
*.jar
|
|
49
|
+
*.rar
|
|
50
|
+
*.tar
|
|
51
|
+
*.zip
|
|
52
|
+
|
|
53
|
+
# ignore private/secret files
|
|
54
|
+
*.der
|
|
55
|
+
*.key
|
|
56
|
+
*.pem
|
|
57
|
+
|
|
58
|
+
# --------------------------------------------------------
|
|
59
|
+
# BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
|
|
60
|
+
# --------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
# track these files, if they exist
|
|
63
|
+
!.gitignore
|
|
64
|
+
!.editorconfig
|
|
65
|
+
!.phpcs.xml.dist
|
|
66
|
+
!.env.example
|
|
67
|
+
!.eslintrc.json
|
|
68
|
+
!.prettierrc.json
|
|
69
|
+
!.eslintignore
|
|
70
|
+
!.prettierignore
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json.schemastore.org/prettierrc",
|
|
3
|
+
"arrowParens": "avoid",
|
|
4
|
+
"bracketSpacing": false,
|
|
5
|
+
"jsxBracketSameLine": false,
|
|
6
|
+
"jsxSingleQuote": false,
|
|
7
|
+
"printWidth": 100,
|
|
8
|
+
"proseWrap": "always",
|
|
9
|
+
"quoteProps": "as-needed",
|
|
10
|
+
"semi": true,
|
|
11
|
+
"singleQuote": true,
|
|
12
|
+
"tabWidth": 2,
|
|
13
|
+
"trailingComma": "es5",
|
|
14
|
+
"useTabs": false
|
|
15
|
+
}
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 EasyEyes
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 EasyEyes
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
# Speaker-Calibration
|
|
2
|
-
|
|
3
|
-
Speaker-Calibration provides a simple API for performing speaker calibration in Javascript. The
|
|
4
|
-
Library has minimal dependencies and is designed to be used in the browser.
|
|
5
|
-
|
|
6
|
-
[](https://app.netlify.com/sites/focused-hodgkin-0a6531/deploys)
|
|
7
|
-
|
|
8
|
-
## Usage
|
|
9
|
-
|
|
10
|
-
```html
|
|
11
|
-
<!-- index.html --->
|
|
12
|
-
...
|
|
13
|
-
<body>
|
|
14
|
-
...
|
|
15
|
-
<script src="https://unpkg.com/speaker-calibration@1.4.1/dist/main.js"></script>
|
|
16
|
-
</body>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
```javascript
|
|
20
|
-
// speaker.js
|
|
21
|
-
|
|
22
|
-
// initialize the chosen calibrator with the paramters, or pass no paramters to use default settings
|
|
23
|
-
const calibrator = new ImpulseResponseCalibration({
|
|
24
|
-
numCaptures: 3,
|
|
25
|
-
numMLSPerCapture: 3,
|
|
26
|
-
download: false,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// pass the calibrator and speaker paramters to the startCalibration method (async)
|
|
30
|
-
const invertedIR = await Speaker.startCalibration(
|
|
31
|
-
{
|
|
32
|
-
siteUrl: window.location.href.substring(0, location.href.lastIndexOf('/')),
|
|
33
|
-
targetElementId: 'display',
|
|
34
|
-
},
|
|
35
|
-
calibrator
|
|
36
|
-
);
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
```javascript
|
|
40
|
-
// listener.js
|
|
41
|
-
|
|
42
|
-
window.listener = new speakerCalibrator.Listener({
|
|
43
|
-
targetElementId: 'display',
|
|
44
|
-
});
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## UML Design
|
|
48
|
-
|
|
49
|
-

|
|
50
|
-
|
|
51
|
-
## Impulse Response Calibration Logic
|
|
52
|
-
|
|
53
|
-

|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Contribution Guidelines
|
|
58
|
-
|
|
59
|
-
_As of 07/29/2022_
|
|
60
|
-
|
|
61
|
-
### Initial Setup
|
|
62
|
-
|
|
63
|
-
1. `git clone https://github.com/EasyEyes/speaker-calibration.git`
|
|
64
|
-
2. `cd speaker-calibration`
|
|
65
|
-
3. `npm i`
|
|
66
|
-
|
|
67
|
-
All outputs from the scripts/recipies below should be automatically placed in the `/dist` directory.
|
|
68
|
-
This is what will be served once the library is published.
|
|
69
|
-
|
|
70
|
-
#### Example
|
|
71
|
-
|
|
72
|
-
In `/dist/example` you will find a small example app that uses the `speaker-calibration` library.
|
|
73
|
-
|
|
74
|
-
#### Javascript
|
|
75
|
-
|
|
76
|
-
In `package.json` you will see some key scripts:
|
|
77
|
-
|
|
78
|
-
1. `build:prod` tells webpack to build the library in production mode, outputing to `/dist`
|
|
79
|
-
2. `build:dev` tells webpack to build the library in development watch mode, outputing to `/dist`
|
|
80
|
-
3. `build:dev:analyze` tells webpack to build the library in development mode and open up a bundle
|
|
81
|
-
analysis page. Helpful for viewing the size of the library, broken down by individual modules
|
|
82
|
-
and/or dependencies.
|
|
83
|
-
4. `serve:dev` spins up an `express.js` server on port `3000` using `nodemon`. It serves the
|
|
84
|
-
`/dist` & `/dist/example` folders.
|
|
85
|
-
5. `build:wasm` calls the makefile recipe to clean, and rebuild the web assembly code (requires
|
|
86
|
-
emscripten installed, more details below)
|
|
87
|
-
6. `lint` runs `eslint` on all js files in the project
|
|
88
|
-
7. `lint:fix` lints and automatically fixes all js files in the project.
|
|
89
|
-
8. `build:doc` builds the documentation using `jsdoc`. Outputs to `/doc`
|
|
90
|
-
|
|
91
|
-
Run `(2)` & `(3)` in seperate shell windows, with this setup you will be able to modify both the
|
|
92
|
-
library and front end examples with hot reload built in. Run `(7)` precommit to keep you code
|
|
93
|
-
standardized.
|
|
94
|
-
|
|
95
|
-
#### CPP/WASM
|
|
96
|
-
|
|
97
|
-
We are using [Emscripten](https://emscripten.org/) to compile the C++ code into a wasm file. Usage
|
|
98
|
-
requires the installation of the Emscriten compiler. Instructions can be found on their website. In
|
|
99
|
-
`makefile` you will see a few recipies:
|
|
100
|
-
|
|
101
|
-
- `mlsGen_bind` compiles the cpp files to wasm, generating a modularized javascript "glue" file,
|
|
102
|
-
using embind. This is the current build target
|
|
103
|
-
- `mlsGen_module` compiles the cpp files to wasm, generating a modularized javascript "glue" file.
|
|
104
|
-
- `mlsGen_wasm` compiles the cpp file to a stand-alone wasm without a javascript "clue" file.
|
|
105
|
-
- `clean` cleans up and generated code
|
|
106
|
-
- `rebuild` cleans and rebuilds the output. Run this after making changes to the cpp files.
|
|
107
|
-
|
|
108
|
-
#### Documentation
|
|
109
|
-
|
|
110
|
-
We use [jsdoc](https://jsdoc.app/) standards to document our library.
|
|
111
|
-
|
|
112
|
-
#### Linting
|
|
113
|
-
|
|
114
|
-
We use [ESLint](https://eslint.org/) to lint our code and enforce best practices. We are currently
|
|
115
|
-
using [AirBnB's JavaScript Style Guide](https://airbnb.io/javascript/)
|
|
116
|
-
|
|
117
|
-
#### Styling
|
|
118
|
-
|
|
119
|
-
We use [Prettier](https://prettier.io/) to format our code.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
### Deployment
|
|
124
|
-
|
|
125
|
-
- Changes publshed to `main` will automatically trigger a deploy on the `netlify` project. This
|
|
126
|
-
deployment is only relevant to the `example` app, it will not make any changes to any others using
|
|
127
|
-
the library.
|
|
128
|
-
- `speaker-calibration` is library that is published to [npm](https://www.npmjs.com/). This means
|
|
129
|
-
that in order to make your changes 'live' a new version of the library needs to be published.
|
|
130
|
-
Conveniently, there exists an npm package [np](https://www.npmjs.com/package/np) which provides a
|
|
131
|
-
lot of helpful abstractions and UI elements when dealing with npm.
|
|
132
|
-
- Once a new version of the library is published, it is then live for anyone to use by bumping the
|
|
133
|
-
version they're using up to the newest release.
|
|
1
|
+
# Speaker-Calibration
|
|
2
|
+
|
|
3
|
+
Speaker-Calibration provides a simple API for performing speaker calibration in Javascript. The
|
|
4
|
+
Library has minimal dependencies and is designed to be used in the browser.
|
|
5
|
+
|
|
6
|
+
[](https://app.netlify.com/sites/focused-hodgkin-0a6531/deploys)
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
```html
|
|
11
|
+
<!-- index.html --->
|
|
12
|
+
...
|
|
13
|
+
<body>
|
|
14
|
+
...
|
|
15
|
+
<script src="https://unpkg.com/speaker-calibration@1.4.1/dist/main.js"></script>
|
|
16
|
+
</body>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
// speaker.js
|
|
21
|
+
|
|
22
|
+
// initialize the chosen calibrator with the paramters, or pass no paramters to use default settings
|
|
23
|
+
const calibrator = new ImpulseResponseCalibration({
|
|
24
|
+
numCaptures: 3,
|
|
25
|
+
numMLSPerCapture: 3,
|
|
26
|
+
download: false,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// pass the calibrator and speaker paramters to the startCalibration method (async)
|
|
30
|
+
const invertedIR = await Speaker.startCalibration(
|
|
31
|
+
{
|
|
32
|
+
siteUrl: window.location.href.substring(0, location.href.lastIndexOf('/')),
|
|
33
|
+
targetElementId: 'display',
|
|
34
|
+
},
|
|
35
|
+
calibrator
|
|
36
|
+
);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
// listener.js
|
|
41
|
+
|
|
42
|
+
window.listener = new speakerCalibrator.Listener({
|
|
43
|
+
targetElementId: 'display',
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## UML Design
|
|
48
|
+
|
|
49
|
+

|
|
50
|
+
|
|
51
|
+
## Impulse Response Calibration Logic
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Contribution Guidelines
|
|
58
|
+
|
|
59
|
+
_As of 07/29/2022_
|
|
60
|
+
|
|
61
|
+
### Initial Setup
|
|
62
|
+
|
|
63
|
+
1. `git clone https://github.com/EasyEyes/speaker-calibration.git`
|
|
64
|
+
2. `cd speaker-calibration`
|
|
65
|
+
3. `npm i`
|
|
66
|
+
|
|
67
|
+
All outputs from the scripts/recipies below should be automatically placed in the `/dist` directory.
|
|
68
|
+
This is what will be served once the library is published.
|
|
69
|
+
|
|
70
|
+
#### Example
|
|
71
|
+
|
|
72
|
+
In `/dist/example` you will find a small example app that uses the `speaker-calibration` library.
|
|
73
|
+
|
|
74
|
+
#### Javascript
|
|
75
|
+
|
|
76
|
+
In `package.json` you will see some key scripts:
|
|
77
|
+
|
|
78
|
+
1. `build:prod` tells webpack to build the library in production mode, outputing to `/dist`
|
|
79
|
+
2. `build:dev` tells webpack to build the library in development watch mode, outputing to `/dist`
|
|
80
|
+
3. `build:dev:analyze` tells webpack to build the library in development mode and open up a bundle
|
|
81
|
+
analysis page. Helpful for viewing the size of the library, broken down by individual modules
|
|
82
|
+
and/or dependencies.
|
|
83
|
+
4. `serve:dev` spins up an `express.js` server on port `3000` using `nodemon`. It serves the
|
|
84
|
+
`/dist` & `/dist/example` folders.
|
|
85
|
+
5. `build:wasm` calls the makefile recipe to clean, and rebuild the web assembly code (requires
|
|
86
|
+
emscripten installed, more details below)
|
|
87
|
+
6. `lint` runs `eslint` on all js files in the project
|
|
88
|
+
7. `lint:fix` lints and automatically fixes all js files in the project.
|
|
89
|
+
8. `build:doc` builds the documentation using `jsdoc`. Outputs to `/doc`
|
|
90
|
+
|
|
91
|
+
Run `(2)` & `(3)` in seperate shell windows, with this setup you will be able to modify both the
|
|
92
|
+
library and front end examples with hot reload built in. Run `(7)` precommit to keep you code
|
|
93
|
+
standardized.
|
|
94
|
+
|
|
95
|
+
#### CPP/WASM
|
|
96
|
+
|
|
97
|
+
We are using [Emscripten](https://emscripten.org/) to compile the C++ code into a wasm file. Usage
|
|
98
|
+
requires the installation of the Emscriten compiler. Instructions can be found on their website. In
|
|
99
|
+
`makefile` you will see a few recipies:
|
|
100
|
+
|
|
101
|
+
- `mlsGen_bind` compiles the cpp files to wasm, generating a modularized javascript "glue" file,
|
|
102
|
+
using embind. This is the current build target
|
|
103
|
+
- `mlsGen_module` compiles the cpp files to wasm, generating a modularized javascript "glue" file.
|
|
104
|
+
- `mlsGen_wasm` compiles the cpp file to a stand-alone wasm without a javascript "clue" file.
|
|
105
|
+
- `clean` cleans up and generated code
|
|
106
|
+
- `rebuild` cleans and rebuilds the output. Run this after making changes to the cpp files.
|
|
107
|
+
|
|
108
|
+
#### Documentation
|
|
109
|
+
|
|
110
|
+
We use [jsdoc](https://jsdoc.app/) standards to document our library.
|
|
111
|
+
|
|
112
|
+
#### Linting
|
|
113
|
+
|
|
114
|
+
We use [ESLint](https://eslint.org/) to lint our code and enforce best practices. We are currently
|
|
115
|
+
using [AirBnB's JavaScript Style Guide](https://airbnb.io/javascript/)
|
|
116
|
+
|
|
117
|
+
#### Styling
|
|
118
|
+
|
|
119
|
+
We use [Prettier](https://prettier.io/) to format our code.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Deployment
|
|
124
|
+
|
|
125
|
+
- Changes publshed to `main` will automatically trigger a deploy on the `netlify` project. This
|
|
126
|
+
deployment is only relevant to the `example` app, it will not make any changes to any others using
|
|
127
|
+
the library.
|
|
128
|
+
- `speaker-calibration` is library that is published to [npm](https://www.npmjs.com/). This means
|
|
129
|
+
that in order to make your changes 'live' a new version of the library needs to be published.
|
|
130
|
+
Conveniently, there exists an npm package [np](https://www.npmjs.com/package/np) which provides a
|
|
131
|
+
lot of helpful abstractions and UI elements when dealing with npm.
|
|
132
|
+
- Once a new version of the library is published, it is then live for anyone to use by bumping the
|
|
133
|
+
version they're using up to the newest release.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = 'test-file-stub';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = {};
|
package/babel.config.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<coverage generated="1650991329939" clover="3.2.0">
|
|
3
|
+
<project timestamp="1650991329939" name="All files">
|
|
4
|
+
<metrics statements="62" coveredstatements="45" conditionals="8" coveredconditionals="7" methods="6" coveredmethods="6" elements="76" coveredelements="58" complexity="0" loc="62" ncloc="62" packages="1" files="1" classes="1"/>
|
|
5
|
+
<file name="PythonServerInterface.js" path="/Users/hugo/Desktop/dev/easyeyes/speaker-calibration/src/server/PythonServerInterface.js">
|
|
6
|
+
<metrics statements="62" coveredstatements="45" conditionals="8" coveredconditionals="7" methods="6" coveredmethods="6"/>
|
|
7
|
+
<line num="1" count="1" type="stmt"/>
|
|
8
|
+
<line num="2" count="1" type="stmt"/>
|
|
9
|
+
<line num="3" count="1" type="stmt"/>
|
|
10
|
+
<line num="4" count="1" type="stmt"/>
|
|
11
|
+
<line num="5" count="1" type="stmt"/>
|
|
12
|
+
<line num="6" count="1" type="stmt"/>
|
|
13
|
+
<line num="7" count="1" type="cond" truecount="1" falsecount="0"/>
|
|
14
|
+
<line num="8" count="1" type="stmt"/>
|
|
15
|
+
<line num="9" count="1" type="stmt"/>
|
|
16
|
+
<line num="10" count="1" type="stmt"/>
|
|
17
|
+
<line num="11" count="1" type="stmt"/>
|
|
18
|
+
<line num="12" count="1" type="stmt"/>
|
|
19
|
+
<line num="13" count="1" type="cond" truecount="1" falsecount="0"/>
|
|
20
|
+
<line num="14" count="2" type="stmt"/>
|
|
21
|
+
<line num="15" count="2" type="stmt"/>
|
|
22
|
+
<line num="16" count="2" type="stmt"/>
|
|
23
|
+
<line num="17" count="2" type="stmt"/>
|
|
24
|
+
<line num="18" count="2" type="stmt"/>
|
|
25
|
+
<line num="19" count="2" type="stmt"/>
|
|
26
|
+
<line num="20" count="2" type="stmt"/>
|
|
27
|
+
<line num="21" count="2" type="stmt"/>
|
|
28
|
+
<line num="22" count="1" type="stmt"/>
|
|
29
|
+
<line num="23" count="1" type="cond" truecount="2" falsecount="0"/>
|
|
30
|
+
<line num="24" count="1" type="stmt"/>
|
|
31
|
+
<line num="25" count="1" type="stmt"/>
|
|
32
|
+
<line num="26" count="1" type="stmt"/>
|
|
33
|
+
<line num="27" count="1" type="stmt"/>
|
|
34
|
+
<line num="28" count="1" type="stmt"/>
|
|
35
|
+
<line num="29" count="2" type="stmt"/>
|
|
36
|
+
<line num="30" count="2" type="cond" truecount="1" falsecount="0"/>
|
|
37
|
+
<line num="31" count="1" type="stmt"/>
|
|
38
|
+
<line num="32" count="1" type="stmt"/>
|
|
39
|
+
<line num="33" count="1" type="stmt"/>
|
|
40
|
+
<line num="34" count="1" type="cond" truecount="0" falsecount="1"/>
|
|
41
|
+
<line num="35" count="0" type="stmt"/>
|
|
42
|
+
<line num="36" count="0" type="stmt"/>
|
|
43
|
+
<line num="37" count="0" type="stmt"/>
|
|
44
|
+
<line num="38" count="0" type="stmt"/>
|
|
45
|
+
<line num="39" count="0" type="stmt"/>
|
|
46
|
+
<line num="40" count="0" type="stmt"/>
|
|
47
|
+
<line num="41" count="0" type="stmt"/>
|
|
48
|
+
<line num="42" count="0" type="stmt"/>
|
|
49
|
+
<line num="43" count="0" type="stmt"/>
|
|
50
|
+
<line num="44" count="0" type="stmt"/>
|
|
51
|
+
<line num="45" count="0" type="stmt"/>
|
|
52
|
+
<line num="46" count="0" type="stmt"/>
|
|
53
|
+
<line num="47" count="0" type="stmt"/>
|
|
54
|
+
<line num="48" count="2" type="stmt"/>
|
|
55
|
+
<line num="49" count="2" type="cond" truecount="1" falsecount="0"/>
|
|
56
|
+
<line num="50" count="2" type="cond" truecount="1" falsecount="0"/>
|
|
57
|
+
<line num="51" count="2" type="stmt"/>
|
|
58
|
+
<line num="52" count="2" type="stmt"/>
|
|
59
|
+
<line num="53" count="0" type="stmt"/>
|
|
60
|
+
<line num="54" count="0" type="stmt"/>
|
|
61
|
+
<line num="55" count="2" type="stmt"/>
|
|
62
|
+
<line num="56" count="0" type="stmt"/>
|
|
63
|
+
<line num="57" count="0" type="stmt"/>
|
|
64
|
+
<line num="58" count="2" type="stmt"/>
|
|
65
|
+
<line num="59" count="2" type="stmt"/>
|
|
66
|
+
<line num="60" count="1" type="stmt"/>
|
|
67
|
+
<line num="61" count="1" type="stmt"/>
|
|
68
|
+
<line num="62" count="1" type="stmt"/>
|
|
69
|
+
</file>
|
|
70
|
+
</project>
|
|
71
|
+
</coverage>
|