@atmosx/event-product-parser 3.0.48 → 3.0.52

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.
Files changed (141) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/CODE_OF_CONDUCT.md +9 -9
  3. package/CONTRIBUTING.md +29 -29
  4. package/LICENSE +17 -17
  5. package/README.md +443 -417
  6. package/SECURITY.md +20 -20
  7. package/SUPPORTED_EVENTS.md +369 -368
  8. package/dist/cjs/index.cjs +1925 -1885
  9. package/dist/esm/index.mjs +1927 -1887
  10. package/package.json +52 -52
  11. package/src/@building/building.attachments.ts +82 -82
  12. package/src/@building/building.clean.ts +29 -29
  13. package/src/@building/building.create.ts +55 -41
  14. package/src/@building/building.enhance.ts +59 -59
  15. package/src/@building/building.geometry.ts +47 -47
  16. package/src/@building/building.headers.ts +36 -36
  17. package/src/@building/building.office.ts +42 -42
  18. package/src/@building/building.polygon.ts +69 -70
  19. package/src/@building/building.properties.ts +95 -95
  20. package/src/@building/building.signature.ts +60 -61
  21. package/src/@building/building.tags.ts +23 -23
  22. package/src/@building/building.tracking.ts +67 -67
  23. package/src/@building/building.validate.ts +152 -146
  24. package/src/@core/core.clearEvents.ts +30 -31
  25. package/src/@core/core.createListener.ts +23 -23
  26. package/src/@core/core.getEvents.ts +23 -24
  27. package/src/@core/core.getNodes.ts +23 -24
  28. package/src/@core/core.getRandomEvent.ts +23 -24
  29. package/src/@core/core.getVersion.ts +23 -24
  30. package/src/@core/core.manualEvent.ts +38 -0
  31. package/src/@core/core.query.ts +38 -38
  32. package/src/@core/core.setNode.ts +80 -80
  33. package/src/@core/core.start.ts +60 -60
  34. package/src/@core/core.stop.ts +31 -31
  35. package/src/@dictionaries/dictionaries.actions.ts +27 -27
  36. package/src/@dictionaries/dictionaries.awips.ts +363 -363
  37. package/src/@dictionaries/dictionaries.cancellation.ts +30 -30
  38. package/src/@dictionaries/dictionaries.causes.ts +35 -35
  39. package/src/@dictionaries/dictionaries.correlations.ts +42 -42
  40. package/src/@dictionaries/dictionaries.enhanced.ts +66 -109
  41. package/src/@dictionaries/dictionaries.events.ts +82 -82
  42. package/src/@dictionaries/dictionaries.expressions.ts +28 -28
  43. package/src/@dictionaries/dictionaries.global.ts +24 -0
  44. package/src/@dictionaries/dictionaries.hail.ts +35 -35
  45. package/src/@dictionaries/dictionaries.icao.ts +258 -258
  46. package/src/@dictionaries/dictionaries.matches.ts +54 -35
  47. package/src/@dictionaries/dictionaries.products.ts +24 -24
  48. package/src/@dictionaries/dictionaries.records.ts +25 -25
  49. package/src/@dictionaries/dictionaries.severity.ts +27 -27
  50. package/src/@dictionaries/dictionaries.shapefiles.ts +35 -35
  51. package/src/@dictionaries/dictionaries.states.ts +71 -71
  52. package/src/@dictionaries/dictionaries.status.ts +30 -30
  53. package/src/@dictionaries/dictionaries.tags.ts +92 -92
  54. package/src/@dictionaries/dictionaries.testing.ts +24 -24
  55. package/src/@events/events.api.ts +116 -118
  56. package/src/@events/events.text.ts +84 -81
  57. package/src/@events/events.ugc.ts +89 -85
  58. package/src/@events/events.vtec.ts +86 -87
  59. package/src/@manager/manager.mkEvent.ts +97 -88
  60. package/src/@manager/manager.rmEvent.ts +56 -49
  61. package/src/@manager/manager.setHash.ts +35 -36
  62. package/src/@manager/manager.updateEvents.ts +32 -34
  63. package/src/@manager/manager.updateListener.ts +154 -159
  64. package/src/@manager/manager.updateNodes.ts +53 -54
  65. package/src/@modules/@database/database.broadcastify.ts +66 -66
  66. package/src/@modules/@database/database.cache.ts +49 -47
  67. package/src/@modules/@database/database.init.ts +58 -57
  68. package/src/@modules/@database/database.shapefiles.ts +92 -92
  69. package/src/@modules/@database/database.stanza.ts +46 -47
  70. package/src/@modules/@eas/eas.getCleanDescription.ts +91 -91
  71. package/src/@modules/@eas/eas.getFloatPCM16.ts +29 -29
  72. package/src/@modules/@eas/eas.getMergedPCM16.ts +32 -32
  73. package/src/@modules/@eas/eas.getPCM16.ts +52 -52
  74. package/src/@modules/@eas/eas.getPCMToFloat.ts +26 -26
  75. package/src/@modules/@eas/eas.getSampledPCM16.ts +36 -36
  76. package/src/@modules/@eas/eas.getTTS.ts +54 -54
  77. package/src/@modules/@eas/eas.getWavPCM16.ts +52 -52
  78. package/src/@modules/@eas/eas.setAFSK.ts +51 -52
  79. package/src/@modules/@eas/eas.setAsciiToBits.ts +31 -32
  80. package/src/@modules/@eas/eas.setAttentionTone.ts +40 -40
  81. package/src/@modules/@eas/eas.setEasTone.ts +151 -147
  82. package/src/@modules/@eas/eas.setNoise.ts +32 -31
  83. package/src/@modules/@eas/eas.setRadioEffect.ts +50 -49
  84. package/src/@modules/@eas/eas.setSameHeader.ts +44 -45
  85. package/src/@modules/@stanza/stanza.getAwipsType.ts +45 -45
  86. package/src/@modules/@stanza/stanza.validate.ts +49 -49
  87. package/src/@modules/@utilities/utilities.createHttp.ts +70 -70
  88. package/src/@modules/@utilities/utilities.getFormattedTime.ts +43 -43
  89. package/src/@modules/@utilities/utilities.getLatestIssuance.ts +32 -32
  90. package/src/@modules/@utilities/utilities.getMatched.ts +33 -0
  91. package/src/@modules/@utilities/utilities.getSettings.ts +25 -25
  92. package/src/@modules/@utilities/utilities.getShapeNearestPoint.ts +114 -114
  93. package/src/@modules/@utilities/utilities.setCronSchedule.ts +94 -94
  94. package/src/@modules/@utilities/utilities.setDebug.ts +38 -0
  95. package/src/@modules/@utilities/utilities.setEventEmit.ts +41 -41
  96. package/src/@modules/@utilities/utilities.setListener.ts +30 -30
  97. package/src/@modules/@utilities/utilities.setSettings.ts +42 -42
  98. package/src/@modules/@utilities/utilities.setSleep.ts +33 -33
  99. package/src/@modules/@utilities/utilities.setTimeoutAction.ts +62 -58
  100. package/src/@modules/@utilities/utilities.setWarning.ts +34 -34
  101. package/src/@modules/@xmpp/xmpp.xDeploy.ts +57 -58
  102. package/src/@modules/@xmpp/xmpp.xError.ts +26 -28
  103. package/src/@modules/@xmpp/xmpp.xOffline.ts +36 -37
  104. package/src/@modules/@xmpp/xmpp.xOnline.ts +45 -44
  105. package/src/@modules/@xmpp/xmpp.xReconnect.ts +64 -64
  106. package/src/@modules/@xmpp/xmpp.xStanza.ts +62 -62
  107. package/src/@parsers/@hvtec/hvtec.extract.ts +39 -39
  108. package/src/@parsers/@pvtec/pvtec.expires.ts +25 -25
  109. package/src/@parsers/@pvtec/pvtec.extract.ts +48 -48
  110. package/src/@parsers/@text/text.getDescriptionFromProduct.ts +52 -52
  111. package/src/@parsers/@text/text.getEmbed.ts +55 -57
  112. package/src/@parsers/@text/text.getPolygonFromProduct.ts +53 -32
  113. package/src/@parsers/@text/text.getTextFromProduct.ts +42 -42
  114. package/src/@parsers/@text/text.getXML.ts +60 -60
  115. package/src/@parsers/@ugc/ugc.coordinates.ts +110 -109
  116. package/src/@parsers/@ugc/ugc.expiry.ts +31 -31
  117. package/src/@parsers/@ugc/ugc.extract.ts +36 -36
  118. package/src/@parsers/@ugc/ugc.getCache.ts +24 -0
  119. package/src/@parsers/@ugc/ugc.header.ts +29 -29
  120. package/src/@parsers/@ugc/ugc.locations.ts +57 -29
  121. package/src/@parsers/@ugc/ugc.setCache.ts +28 -0
  122. package/src/@parsers/@ugc/ugc.zones.ts +51 -51
  123. package/src/@types/type.attributes.ts +28 -28
  124. package/src/@types/type.compiled.ts +34 -34
  125. package/src/@types/type.event.ts +69 -69
  126. package/src/@types/type.hash.ts +24 -24
  127. package/src/@types/type.hvtec.ts +25 -25
  128. package/src/@types/type.listener.ts +32 -32
  129. package/src/@types/type.properties.ts +77 -77
  130. package/src/@types/type.pvtec.ts +30 -30
  131. package/src/@types/type.settings.ts +84 -83
  132. package/src/@types/type.stanza.ts +37 -37
  133. package/src/@types/type.ugc.ts +24 -24
  134. package/src/bootstrap.ts +115 -112
  135. package/src/index.ts +74 -74
  136. package/test.js +92 -98
  137. package/tsconfig.json +13 -13
  138. package/tsup.config.ts +15 -15
  139. package/dist/index.d.mts +0 -299
  140. package/dist/index.d.ts +0 -299
  141. package/src/@core/core.createEvent.ts +0 -83
@@ -1,54 +1,54 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
-
19
- */
20
-
21
- import { platform } from 'os'
22
- import { writeFileSync } from "fs"
23
- import { execSync } from 'child_process'
24
-
25
- export const getTTS = async (text: string, outputPath: string): Promise<void> => {
26
- const vPlatform = platform();
27
- switch (vPlatform) {
28
- case 'win32': {
29
- try {
30
- const txtPath = outputPath + ".txt";
31
- writeFileSync(txtPath, text, "utf8");
32
- const command = [
33
- "Add-Type -AssemblyName System.Speech;",
34
- `$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer;`,
35
- `$text = Get-Content -Raw -LiteralPath '${txtPath}';`,
36
- `$speak.SetOutputToWaveFile('${outputPath}');`,
37
- `$speak.Speak($text);`,
38
- `$speak.Dispose();`
39
- ].join(" ");
40
- execSync(`powershell -Command "${command}"`, { stdio: 'inherit' })
41
- } catch(error) {
42
- console.error('Error occurred while generating TTS:', error);
43
- }
44
- break;
45
- }
46
- case 'linux':
47
- try {
48
- execSync(`espeak -w "${outputPath}" "${text.replace(/"/g, '\\"')}"`);
49
- } catch {}
50
- break;
51
- default: break;
52
- }
53
- };
54
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+
19
+ */
20
+
21
+ import { platform } from 'os'
22
+ import { writeFileSync } from "fs"
23
+ import { execSync } from 'child_process'
24
+
25
+ export const getTTS = async (text: string, outputPath: string): Promise<void> => {
26
+ const vPlatform = platform();
27
+ switch (vPlatform) {
28
+ case 'win32': {
29
+ try {
30
+ const txtPath = outputPath + ".txt";
31
+ writeFileSync(txtPath, text, "utf8");
32
+ const command = [
33
+ "Add-Type -AssemblyName System.Speech;",
34
+ `$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer;`,
35
+ `$text = Get-Content -Raw -LiteralPath '${txtPath}';`,
36
+ `$speak.SetOutputToWaveFile('${outputPath}');`,
37
+ `$speak.Speak($text);`,
38
+ `$speak.Dispose();`
39
+ ].join(" ");
40
+ execSync(`powershell -Command "${command}"`, { stdio: 'inherit' })
41
+ } catch(error) {
42
+ console.error('Error occurred while generating TTS:', error);
43
+ }
44
+ break;
45
+ }
46
+ case 'linux':
47
+ try {
48
+ execSync(`espeak -w "${outputPath}" "${text.replace(/"/g, '\\"')}"`);
49
+ } catch {}
50
+ break;
51
+ default: break;
52
+ }
53
+ };
54
+
@@ -1,52 +1,52 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
-
19
- */
20
-
21
- interface getWavPCM16Response {
22
- samples: Int16Array
23
- sampleRate: number
24
- channels: number
25
- bitsPerSample: number
26
- }
27
-
28
- export const getWavPCM16 = (buffer: Buffer): getWavPCM16Response => {
29
- if (buffer.toString("ascii", 0, 4) !== "RIFF" || buffer.toString("ascii", 8, 12) !== "WAVE") { return null; }
30
- let fmt = null;
31
- let data = null;
32
- let i = 12;
33
- while (i + 8 <= buffer.length) {
34
- const id = buffer.toString("ascii", i, i + 4);
35
- const size = buffer.readUInt32LE(i + 4);
36
- const start = i + 8;
37
- const end = start + size;
38
- if (id === "fmt ") fmt = buffer.slice(start, end);
39
- if (id === "data") data = buffer.slice(start, end);
40
- i = end + (size % 2);
41
- }
42
- if (!fmt || !data) return null;
43
- const audioFormat = fmt.readUInt16LE(0);
44
- const channels = fmt.readUInt16LE(2);
45
- const sampleRate = fmt.readUInt32LE(4);
46
- const bitsPerSample = fmt.readUInt16LE(14);
47
- if (audioFormat !== 1 || bitsPerSample !== 16 || channels !== 1) { return null; }
48
- const samples = new Int16Array(data.buffer, data.byteOffset, data.length / 2);
49
- return { samples: new Int16Array(samples), sampleRate, channels, bitsPerSample };
50
- }
51
-
52
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+
19
+ */
20
+
21
+ interface getWavPCM16Response {
22
+ samples: Int16Array
23
+ sampleRate: number
24
+ channels: number
25
+ bitsPerSample: number
26
+ }
27
+
28
+ export const getWavPCM16 = (buffer: Buffer): getWavPCM16Response => {
29
+ if (buffer.toString("ascii", 0, 4) !== "RIFF" || buffer.toString("ascii", 8, 12) !== "WAVE") { return null; }
30
+ let fmt = null;
31
+ let data = null;
32
+ let i = 12;
33
+ while (i + 8 <= buffer.length) {
34
+ const id = buffer.toString("ascii", i, i + 4);
35
+ const size = buffer.readUInt32LE(i + 4);
36
+ const start = i + 8;
37
+ const end = start + size;
38
+ if (id === "fmt ") fmt = buffer.slice(start, end);
39
+ if (id === "data") data = buffer.slice(start, end);
40
+ i = end + (size % 2);
41
+ }
42
+ if (!fmt || !data) return null;
43
+ const audioFormat = fmt.readUInt16LE(0);
44
+ const channels = fmt.readUInt16LE(2);
45
+ const sampleRate = fmt.readUInt32LE(4);
46
+ const bitsPerSample = fmt.readUInt16LE(14);
47
+ if (audioFormat !== 1 || bitsPerSample !== 16 || channels !== 1) { return null; }
48
+ const samples = new Int16Array(data.buffer, data.byteOffset, data.length / 2);
49
+ return { samples: new Int16Array(samples), sampleRate, channels, bitsPerSample };
50
+ }
51
+
52
+
@@ -1,52 +1,51 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
-
19
- */
20
-
21
-
22
- export const setAFSK = (bits: number[], sampleRate: number): Int16Array => {
23
- const baud = 520.83;
24
- const markFreq = 2083.3;
25
- const spaceFreq = 1562.5;
26
- const amplitude = 0.6;
27
- const twoPi = Math.PI * 2;
28
- const result = [];
29
- let phase = 0;
30
- let frac = 0;
31
- for (let b = 0; b < bits.length; b++) {
32
- const bit = bits[b];
33
- const freq = bit ? markFreq : spaceFreq;
34
- const samplesPerBit = sampleRate / baud + frac;
35
- const n = Math.round(samplesPerBit);
36
- frac = samplesPerBit - n;
37
- const inc = twoPi * freq / sampleRate;
38
- for (let i = 0; i < n; i++) {
39
- result.push(Math.round(Math.sin(phase) * amplitude * 32767));
40
- phase += inc;
41
- if (phase > twoPi) phase -= twoPi;
42
- }
43
- }
44
- const fadeSamples = Math.floor(sampleRate * 0.002);
45
- for (let i = 0; i < fadeSamples; i++) {
46
- const gain = i / fadeSamples;
47
- result[i] = Math.round(result[i] * gain);
48
- result[result.length - 1 - i] = Math.round(result[result.length - 1 - i] * gain);
49
- }
50
- return Int16Array.from(result);
51
- }
52
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+
19
+ */
20
+
21
+ export const setAFSK = (bits: number[], sampleRate: number): Int16Array => {
22
+ const baud = 520.83;
23
+ const markFreq = 2083.3;
24
+ const spaceFreq = 1562.5;
25
+ const amplitude = 0.6;
26
+ const twoPi = Math.PI * 2;
27
+ const result = [];
28
+ let phase = 0;
29
+ let frac = 0;
30
+ for (let b = 0; b < bits.length; b++) {
31
+ const bit = bits[b];
32
+ const freq = bit ? markFreq : spaceFreq;
33
+ const samplesPerBit = sampleRate / baud + frac;
34
+ const n = Math.round(samplesPerBit);
35
+ frac = samplesPerBit - n;
36
+ const inc = twoPi * freq / sampleRate;
37
+ for (let i = 0; i < n; i++) {
38
+ result.push(Math.round(Math.sin(phase) * amplitude * 32767));
39
+ phase += inc;
40
+ if (phase > twoPi) phase -= twoPi;
41
+ }
42
+ }
43
+ const fadeSamples = Math.floor(sampleRate * 0.002);
44
+ for (let i = 0; i < fadeSamples; i++) {
45
+ const gain = i / fadeSamples;
46
+ result[i] = Math.round(result[i] * gain);
47
+ result[result.length - 1 - i] = Math.round(result[result.length - 1 - i] * gain);
48
+ }
49
+ return Int16Array.from(result);
50
+ }
51
+
@@ -1,32 +1,31 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
-
19
- */
20
-
21
-
22
- export const setAsciiToBits = (str: string): number[] => {
23
- const bits = [];
24
- for (let i = 0; i < str.length; i++) {
25
- const c = str.charCodeAt(i) & 0xFF;
26
- bits.push(0);
27
- for (let b = 0; b < 8; b++) bits.push((c >> b) & 1);
28
- bits.push(1, 1);
29
- }
30
- return bits;
31
- }
32
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+
19
+ */
20
+
21
+ export const setAsciiToBits = (str: string): number[] => {
22
+ const bits = [];
23
+ for (let i = 0; i < str.length; i++) {
24
+ const c = str.charCodeAt(i) & 0xFF;
25
+ bits.push(0);
26
+ for (let b = 0; b < 8; b++) bits.push((c >> b) & 1);
27
+ bits.push(1, 1);
28
+ }
29
+ return bits;
30
+ }
31
+
@@ -1,40 +1,40 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
-
19
- */
20
-
21
- export const setAttentionTone = (ms: number, sampleRate: number): Int16Array => {
22
- const len = Math.floor(ms * sampleRate);
23
- const out = new Int16Array(len);
24
- const f1 = 853;
25
- const f2 = 960;
26
- const twoPi = Math.PI * 2;
27
- const amp = 0.1;
28
- const fadeLen = Math.floor(sampleRate * 0.00);
29
- for (let i = 0; i < len; i++) {
30
- const t = i / sampleRate;
31
- const s = Math.sin(twoPi * f1 * t) + Math.sin(twoPi * f2 * t);
32
- let gain = 1;
33
- if (i < fadeLen) gain = i / fadeLen;
34
- else if (i > len - fadeLen) gain = (len - i) / fadeLen;
35
- const v = Math.max(-1, Math.min(1, (s / 2) * amp * gain));
36
- out[i] = Math.round(v * 32767);
37
- }
38
- return out;
39
- }
40
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+
19
+ */
20
+
21
+ export const setAttentionTone = (ms: number, sampleRate: number): Int16Array => {
22
+ const len = Math.floor(ms * sampleRate);
23
+ const out = new Int16Array(len);
24
+ const f1 = 853;
25
+ const f2 = 960;
26
+ const twoPi = Math.PI * 2;
27
+ const amp = 0.1;
28
+ const fadeLen = Math.floor(sampleRate * 0.00);
29
+ for (let i = 0; i < len; i++) {
30
+ const t = i / sampleRate;
31
+ const s = Math.sin(twoPi * f1 * t) + Math.sin(twoPi * f2 * t);
32
+ let gain = 1;
33
+ if (i < fadeLen) gain = i / fadeLen;
34
+ else if (i > len - fadeLen) gain = (len - i) / fadeLen;
35
+ const v = Math.max(-1, Math.min(1, (s / 2) * amp * gain));
36
+ out[i] = Math.round(v * 32767);
37
+ }
38
+ return out;
39
+ }
40
+