@maccesar/titools 5.2.3 → 5.2.5
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/README.md +96 -87
- package/docs/examples.md +10 -3
- package/package.json +2 -2
- package/skills/ti-synthengine/SKILL.md +50 -18
- package/skills/ti-synthengine/assets/example/README.md +19 -6
- package/skills/ti-synthengine/assets/example/app.js +69 -12
- package/skills/ti-synthengine/assets/index.d.ts +106 -0
- package/skills/ti-synthengine/references/advanced-examples.md +34 -9
- package/skills/ti-synthengine/references/api.md +327 -246
- package/skills/ti-synthengine/references/audio-engine.md +28 -14
- package/skills/ti-synthengine/references/audio-pipeline-validation.md +1 -1
- package/skills/ti-synthengine/references/examples.md +5 -5
- package/skills/ti-synthengine/references/guide.md +40 -21
- package/skills/ti-synthengine/references/instruments-and-effects.md +164 -0
- package/skills/ti-synthengine/references/native-tone-repetition-validation.md +59 -0
- package/skills/ti-synthengine/references/native-variation-proposal.md +182 -0
- package/skills/ti-synthengine/references/native-variation-validation.md +63 -0
- package/skills/ti-synthengine/references/native-variation.md +285 -0
- package/skills/ti-synthengine/references/recipes-interaction.md +3 -1
- package/skills/ti-synthengine/references/recipes.md +3 -2
- package/skills/ti-synthengine/references/recommendations.md +5 -5
- package/skills/ti-synthengine/references/sound-design.md +18 -16
- package/skills/ti-synthengine/references/source-notes.md +54 -37
- package/skills/ti-synthengine/references/source-snapshot.json +188 -144
- package/skills/ti-synthengine/references/stats-performance.md +1 -1
- package/skills/ti-synthengine/references/troubleshooting.md +43 -35
|
@@ -1,83 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"module": "ti.synthengine",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"repository": "https://github.com/macCesar/TiSynthEngine",
|
|
5
|
-
"commit": "
|
|
6
|
-
"reviewed_on": "2026-
|
|
5
|
+
"commit": "ec04f4e634075c41b55f66279eabcd78b9652d58",
|
|
6
|
+
"reviewed_on": "2026-11-02",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"source": "documentation/api.md",
|
|
10
10
|
"destination": "references/api.md",
|
|
11
|
-
"source_sha256": "
|
|
12
|
-
"mirrored_sha256": "
|
|
11
|
+
"source_sha256": "b58d60cf38a96157e523722d1f9cb9508f785cc2de9c2c1ff306e328c77df9dc",
|
|
12
|
+
"mirrored_sha256": "b19142e8356eb80f62202bdf3bdd9c2fa0301ae205761e89f0f9dab981c26fb2",
|
|
13
13
|
"links": [],
|
|
14
|
-
"link_fixes": [
|
|
15
|
-
{
|
|
16
|
-
"original_markdown": "`setStatsEnabled` also returns Boolean acceptance. `stopAll`, `resetStats` and `shutdown` do not return a value. `getDefaults` returns the contract object described below. `getStats` returns a new statistics snapshot.",
|
|
17
|
-
"mirrored_markdown": "`setStatsEnabled` also returns Boolean acceptance. `stopAll`, `resetStats` and `shutdown` do not return a value. `getDefaults` returns the contract object described below. `getStats` returns a new statistics snapshot. `getSequenceState` returns the applied sequence state or `null`."
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"original_markdown": "Android additionally reports `capabilities` flags for native sequences, master processing and modulations, plus `limits.stepDurationMs`. The current iOS result omits those keys while implementing the corresponding methods and millisecond sequences. Detect a required method with `typeof synth.playSequence === 'function'` (and the other methods your feature needs); a missing capability flag is not proof that a method is unavailable. Both platforms report the `limits` object shown here.",
|
|
21
|
-
"mirrored_markdown": "Android additionally reports `capabilities: { nativeSequence: true, masterProcessing: true, modulations: true }` and `limits.stepDurationMs`. The reviewed iOS result omits those two metadata entries while implementing the corresponding methods and millisecond sequences. Both platforms report `limits.maxSequences`, `limits.priority` and `limits.effectSend`. Detect the required methods instead of requiring an Android-only flag. `limits.stepDuration` is in beats on both platforms; for millisecond sequences the accepted range is `4000 / sampleRate` through 60,000."
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"original_markdown": "| `stepDuration` | 0.000001 | 60,000 | sequence units |",
|
|
25
|
-
"mirrored_markdown": "| `stepDuration` | `20 / sampleRate` | 300 | beats; returned by both platforms |\n| `stepDurationMs` | `4000 / sampleRate` | 60,000 | ms; returned by Android only, accepted in ms sequences on both |"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"original_markdown": "Omitted attack/release values are shortened to fit an event smaller than the default envelope. Explicit values must satisfy the documented envelope rules. `getDefaults()` reports the baseline defaults, not these per-event adjustments.",
|
|
29
|
-
"mirrored_markdown": "Omitted attack/release values are shortened to fit an event smaller than the default envelope. Explicit values must satisfy the documented envelope rules. `getDefaults()` reports the baseline defaults, not these per-event adjustments.\n\nAt this source pin, the iOS timed tone/chord command builder converts accepted\nzero attack/release values to at least one sample. Android retains zero samples.\nThis differs from the shared validator accepting zero; do not promise identical\nzero-edge rendering. Held notes have the separately documented 3 ms minimum."
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"original_markdown": "| `rejectedRequestCount` | Rejected Boolean API requests, counted once per call. |",
|
|
33
|
-
"mirrored_markdown": "| `rejectedRequestCount` | Counted API rejections, including sequence-publication rejection; not a complete rejected-call tally on every native path. |"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"original_markdown": "| `rejectedRequestsByReason` | `{ validation, engineStopped, queueFull }`; sum equals rejection total. |",
|
|
37
|
-
"mirrored_markdown": "| `rejectedRequestsByReason` | `{ validation, engineStopped, queueFull }`; sum equals the recorded rejection total. |"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"original_markdown": "`renderLoad`, `peakRenderLoad`, `outputPeakDbFS`, `outputRmsDbFS`, `preLimiterPeakDb`, `maxLimiterReductionDb` and `limiterReductionDb` are `null` until enabled and measured, and after shutdown.",
|
|
41
|
-
"mirrored_markdown": "At this source pin, iOS early rejections in tempo/sequence operations and a\nstopped `setMasterProcessing` call can bypass rejection counters. Incompatible\nheld spatial-mode or modulation updates also have uncounted iOS returns.\nAndroid counts more of these cases, but an unknown/retired `stopSequence` return\ncan also be uncounted. The reason sum equals the recorded total, not every\nrejected request. These counters are diagnostics; the API return is authoritative.\n\n`renderLoad`, `peakRenderLoad`, `outputPeakDbFS`, `outputRmsDbFS`, `preLimiterPeakDb`, `maxLimiterReductionDb` and `limiterReductionDb` are `null` until enabled and measured, and after shutdown."
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"original_markdown": "With a full pool, release voices are replaced first, then the oldest attack.",
|
|
45
|
-
"mirrored_markdown": "Within priority-eligible candidates in a full pool, release voices are replaced first, then the oldest attack."
|
|
46
|
-
}
|
|
47
|
-
]
|
|
14
|
+
"link_fixes": []
|
|
48
15
|
},
|
|
49
16
|
{
|
|
50
17
|
"source": "documentation/audio-engine.md",
|
|
51
18
|
"destination": "references/audio-engine.md",
|
|
52
|
-
"source_sha256": "
|
|
53
|
-
"mirrored_sha256": "
|
|
19
|
+
"source_sha256": "3e7728703a9f82631f5c4ba2641b1a9735c0d3988ef9001b8e4a4f5e47d1818d",
|
|
20
|
+
"mirrored_sha256": "a43c94c7f72913438d529a1cbd8a13dcb6df0da317ee548b5064fdf587f7f5ab",
|
|
54
21
|
"links": [],
|
|
55
22
|
"link_fixes": [
|
|
56
23
|
{
|
|
57
|
-
"original_markdown": "
|
|
58
|
-
"mirrored_markdown": "
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"original_markdown": "With `filterHzEnd` the cutoff follows `from * (to / from) ^ t`, where `t` runs from 0 to 1 across the event, and coefficients are recomputed every eighth sample. Without a sweep they are computed once, when the note starts.",
|
|
62
|
-
"mirrored_markdown": "For timed tones and chords, `filterHzEnd` follows `from * (to / from) ^ t`, where `t` runs from 0 to 1 across the event, and coefficients are recomputed every eighth sample. Native sequence cutoff sweeps instead use note length and then hold their target through release. The current Android renderer refreshes them every sixteenth sample, also forcing the target at the release deadline; the Apple renderer refreshes them every eighth sample. These renderer paths do not establish sample-identical platform output. Held live cutoff/Q and modulation updates have their own ramp/control paths. Without a sweep or live modulation, coefficients are computed once at note start."
|
|
24
|
+
"original_markdown": "The [performance review](../docs/validation/performance-review.json) separates measured host improvements, exact compatibility checks and pending device acceptance. Its [raw evidence](../docs/validation/performance-review-evidence.zip) retains rejected prototypes and the investigation of idle/stereo regressions. The Apple FIR, stable-control cache and exact idle-effects bypass were evaluated as one atomic candidate and then rejected after physical 32-stereo timing regressed. All three production changes were removed together; the full-score publication and control-memory fixes remain.",
|
|
25
|
+
"mirrored_markdown": "The [performance review](performance-review.json) separates measured host improvements, exact compatibility checks and pending device acceptance. Its [raw evidence](performance-review-evidence.zip) retains rejected prototypes and the investigation of idle/stereo regressions. The Apple FIR, stable-control cache and exact idle-effects bypass were evaluated as one atomic candidate and then rejected after physical 32-stereo timing regressed. All three production changes were removed together; the full-score publication and control-memory fixes remain."
|
|
63
26
|
},
|
|
64
27
|
{
|
|
65
|
-
"original_markdown": "
|
|
66
|
-
"mirrored_markdown": "
|
|
28
|
+
"original_markdown": "The [Studio technical validation report](../docs/validation/studio-validation.json) records the calibration and corrected full-chain host benchmark, including failed deadline acceptance and pending device checks. Its host performance result must not be presented as hardware realtime acceptance.",
|
|
29
|
+
"mirrored_markdown": "The [Studio technical validation report](studio-validation.json) records the calibration and corrected full-chain host benchmark, including failed deadline acceptance and pending device checks. Its host performance result must not be presented as hardware realtime acceptance."
|
|
67
30
|
},
|
|
68
31
|
{
|
|
69
|
-
"original_markdown": "
|
|
70
|
-
"mirrored_markdown": "
|
|
32
|
+
"original_markdown": "Public API 1.1.0 uses one renderer, at most 32 voices and capacity for 1-4 sequences. `bus` categories and per-voice sends share one effects chain. These API changes do not establish complete multiplatform ten-minute maximum-load acceptance; the measured iPad result and Android limits are recorded separately in [physical validation](../docs/validation/physical-validation.json) and [the performance summary](stats-performance.md). Host timing, bypass comparisons, memory accounting, actual Android/iOS builds and the remaining device/listening checks are separate evidence. The cited Studio and unified-transport benchmarks are historical observations. In the pre-variation layout, effects buffers at 192 kHz used approximately 13.1 MiB and four maximum-size triple-bank transports used 8,627,712 bytes (8.23 MiB), excluding renderer voices and queues. Version 1.1.0 grows those four transports to 9,537,152 bytes (9.10 MiB) on the measured 64-bit macOS layout, an increase of 909,440 bytes; see [variation storage measurements](native-variation-validation.md#storage-and-callback-work). These structure sizes are not a new whole-process or physical-device measurement. Total accounting must also include renderer voices/tails, command queues, effects, bridge/canonical options and recovery peaks. The 32 MiB additional-memory target remains a target, not a certified bound for version 1.1.0.",
|
|
33
|
+
"mirrored_markdown": "Public API 1.1.0 uses one renderer, at most 32 voices and capacity for 1-4 sequences. `bus` categories and per-voice sends share one effects chain. These API changes do not establish complete multiplatform ten-minute maximum-load acceptance; the measured iPad result and Android limits are recorded separately in [physical validation](physical-validation.json) and [the performance summary](stats-performance.md). Host timing, bypass comparisons, memory accounting, actual Android/iOS builds and the remaining device/listening checks are separate evidence. The cited Studio and unified-transport benchmarks are historical observations. In the pre-variation layout, effects buffers at 192 kHz used approximately 13.1 MiB and four maximum-size triple-bank transports used 8,627,712 bytes (8.23 MiB), excluding renderer voices and queues. Version 1.1.0 grows those four transports to 9,537,152 bytes (9.10 MiB) on the measured 64-bit macOS layout, an increase of 909,440 bytes; see [variation storage measurements](native-variation-validation.md#storage-and-callback-work). These structure sizes are not a new whole-process or physical-device measurement. Total accounting must also include renderer voices/tails, command queues, effects, bridge/canonical options and recovery peaks. The 32 MiB additional-memory target remains a target, not a certified bound for version 1.1.0."
|
|
71
34
|
}
|
|
72
35
|
]
|
|
73
36
|
},
|
|
74
37
|
{
|
|
75
38
|
"source": "documentation/examples.md",
|
|
76
39
|
"destination": "references/examples.md",
|
|
77
|
-
"source_sha256": "
|
|
78
|
-
"mirrored_sha256": "
|
|
40
|
+
"source_sha256": "1b3be798d8f606381696d9e00cda330c11475402397e4760dcbc3041a39ef404",
|
|
41
|
+
"mirrored_sha256": "51d74ad017afe090cb0ef0596251026554fcdca5d75c7e844d4e18ece5c68d2e",
|
|
79
42
|
"links": [],
|
|
80
43
|
"link_fixes": [
|
|
44
|
+
{
|
|
45
|
+
"original_markdown": "Every snippet on this page uses the TiSynthEngine 1.1.0 contract. Unless a snippet includes startup code, it assumes the engine is already running.",
|
|
46
|
+
"mirrored_markdown": "Every snippet on this page uses the TiSynthEngine 1.1.0 contract. Unless a snippet includes startup code, it assumes the engine is already running.\n\nAdditional [curated recipes](recipes.md) provide application sound and interaction variants."
|
|
47
|
+
},
|
|
81
48
|
{
|
|
82
49
|
"original_markdown": "For interactive instruments and native processing, begin with [held motors](#sustained-game-motor), [native sequences](#native-sequence-with-chords-and-edits), [master processing](#chorus-delay-reverb-and-creative-saturation) or [two LFOs](#two-voice-lfos). Use matching official packages and check method availability before enabling a feature.",
|
|
83
50
|
"mirrored_markdown": "For interactive instruments and native processing, begin with [held motors](advanced-examples.md#sustained-game-motor), [native sequences](advanced-examples.md#native-sequence-with-chords-and-edits), [master processing](advanced-examples.md#chorus-delay-reverb-and-creative-saturation) or [two LFOs](advanced-examples.md#two-voice-lfos). Use matching official packages and check method availability before enabling a feature."
|
|
@@ -87,20 +54,12 @@
|
|
|
87
54
|
"mirrored_markdown": "The startup example uses `ambient` for game/UI feedback. On iOS it respects silent mode and mixes with other apps. The module default is `playback`; Android validates either value without changing its output. Shut down before changing the policy. Use the [interactive session controls](../assets/example/README.md#audio-session) to compare them."
|
|
88
55
|
},
|
|
89
56
|
{
|
|
90
|
-
"original_markdown": "Follow the [interactive demo setup and test checklist](../example/README.md) to run [`example/app.js`](../example/app.js). It includes headphone positioning, session selection, pattern completion/replacement and
|
|
91
|
-
"mirrored_markdown": "Follow the [interactive demo setup and test checklist](../assets/example/README.md) to run [`example/app.js`](../assets/example/app.js). It includes headphone positioning, session selection, pattern completion/replacement and
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"original_markdown": "# Examples\n\nEvery snippet on this page uses the TiSynthEngine 1.0.0 contract. Unless a snippet includes startup code, it assumes the engine is already running.",
|
|
95
|
-
"mirrored_markdown": "# Examples\n\nEvery snippet on this page uses the TiSynthEngine 1.0.0 contract. Unless a snippet includes startup code, it assumes the engine is already running.\n\nAdditional [curated recipes](recipes.md) provide application sound and interaction variants."
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"original_markdown": "",
|
|
99
|
-
"mirrored_markdown": "Continue with [advanced examples](advanced-examples.md).\n"
|
|
57
|
+
"original_markdown": "Follow the [interactive demo setup and test checklist](../example/README.md) to run [`example/app.js`](../example/app.js). It includes headphone positioning, session selection, pattern completion/replacement and the statistics methods `getStats`, `enableStats`, `disableStats` and `resetStats`. For a service-level statistics recipe, see [read engine statistics](guide.md#read-engine-statistics).",
|
|
58
|
+
"mirrored_markdown": "Follow the [interactive demo setup and test checklist](../assets/example/README.md) to run [`example/app.js`](../assets/example/app.js). It includes headphone positioning, session selection, pattern completion/replacement and the statistics methods `getStats`, `enableStats`, `disableStats` and `resetStats`. For a service-level statistics recipe, see [read engine statistics](guide.md#read-engine-statistics)."
|
|
100
59
|
},
|
|
101
60
|
{
|
|
102
|
-
"original_markdown": "
|
|
103
|
-
"mirrored_markdown": "
|
|
61
|
+
"original_markdown": "\n\n## Sustained game motor\n",
|
|
62
|
+
"mirrored_markdown": "\n\nContinue with [advanced examples](advanced-examples.md).\n## Sustained game motor\n"
|
|
104
63
|
}
|
|
105
64
|
],
|
|
106
65
|
"source_parts": [
|
|
@@ -111,8 +70,8 @@
|
|
|
111
70
|
{
|
|
112
71
|
"source": "documentation/examples.md",
|
|
113
72
|
"destination": "references/advanced-examples.md",
|
|
114
|
-
"source_sha256": "
|
|
115
|
-
"mirrored_sha256": "
|
|
73
|
+
"source_sha256": "1b3be798d8f606381696d9e00cda330c11475402397e4760dcbc3041a39ef404",
|
|
74
|
+
"mirrored_sha256": "e41a547bfb6d23b8e3460092e64eb8292587e8d15863ba1abe30daf7bbc8f163",
|
|
116
75
|
"links": [],
|
|
117
76
|
"link_fixes": [],
|
|
118
77
|
"source_parts": [
|
|
@@ -123,8 +82,8 @@
|
|
|
123
82
|
{
|
|
124
83
|
"source": "documentation/guide.md",
|
|
125
84
|
"destination": "references/guide.md",
|
|
126
|
-
"source_sha256": "
|
|
127
|
-
"mirrored_sha256": "
|
|
85
|
+
"source_sha256": "0edc2fb8bccb4412d80e00d63a5a631b455d0ede6178c16642e63e37ce3dd77e",
|
|
86
|
+
"mirrored_sha256": "ccc8e263b9c7a09811bb116aad758bd6e847b2f6a567c35129bd86466e5b7aa2",
|
|
128
87
|
"links": [],
|
|
129
88
|
"link_fixes": [
|
|
130
89
|
{
|
|
@@ -144,24 +103,16 @@
|
|
|
144
103
|
"mirrored_markdown": "See the [complete field contract](api.md#getstats), [measurement limits](stats-performance.md) and [interactive statistics controls](../assets/example/README.md#statistics)."
|
|
145
104
|
},
|
|
146
105
|
{
|
|
147
|
-
"original_markdown": "The
|
|
148
|
-
"mirrored_markdown": "The
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"original_markdown": "Calls that create or change sound return `true` when accepted and `false` when rejected. During development, handle that result and inspect logcat or the Xcode console for the structured validation warning.",
|
|
152
|
-
"mirrored_markdown": "Timed and held sound calls and accepted edits return `true` when accepted and `false` when rejected. `playSequence` instead returns a positive sequence ID or `0`; state queries return their documented state or `null`, and lifecycle/cleanup methods follow their own return contracts. During development, handle the relevant result and inspect logcat or the Xcode console for the structured validation warning."
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"original_markdown": "Supply the current position whenever an effect fires. A projectile launch cue can use the launch position; an impact uses the collision position. Repeated short motor events can use successive positions. A single active tone cannot move after submission because positions remain fixed, including on an identified sustained voice. Stereo `panEnd` movement cannot be combined with binaural; do not continually retrigger long sounds every frame to imitate movement.",
|
|
156
|
-
"mirrored_markdown": "Supply the current position whenever an effect fires. A projectile launch cue can use the launch position; an impact uses the collision position. Timed event positions remain fixed after submission. An identified sustained voice started spatially can instead change `spatialX`/`spatialY` through `updateVoice`, with 10 ms ramps and retained spatial history. A stereo voice cannot become spatial through an update. Stereo `panEnd` movement cannot be combined with binaural; do not continually retrigger long sounds every frame to imitate movement."
|
|
106
|
+
"original_markdown": "The diagnostics include `preLimiterPeakDb` (maximum signal before final limiting, in dBFS) and `maxLimiterReductionDb` (greatest limiter attenuation in dB) accumulated since reset. Unlike the approximately 200 ms window reduction field, brief peaks remain visible between UI polls. Enable measurements, reset before the scenario and keep `null`/absent fields distinct from measured zero. The [measurement example](examples.md#measure-peaks-and-limiter-reduction) shows opt-in polling and cleanup.",
|
|
107
|
+
"mirrored_markdown": "The diagnostics include `preLimiterPeakDb` (maximum signal before final limiting, in dBFS) and `maxLimiterReductionDb` (greatest limiter attenuation in dB) accumulated since reset. Unlike the approximately 200 ms window reduction field, brief peaks remain visible between UI polls. Enable measurements, reset before the scenario and keep `null`/absent fields distinct from measured zero. The [measurement example](advanced-examples.md#measure-peaks-and-limiter-reduction) shows opt-in polling and cleanup."
|
|
157
108
|
}
|
|
158
109
|
]
|
|
159
110
|
},
|
|
160
111
|
{
|
|
161
112
|
"source": "documentation/recommendations.md",
|
|
162
113
|
"destination": "references/recommendations.md",
|
|
163
|
-
"source_sha256": "
|
|
164
|
-
"mirrored_sha256": "
|
|
114
|
+
"source_sha256": "f72c3df9c36df0cbdb843bbe2c6799ae537324ece499fe6d1a2de80e43df5261",
|
|
115
|
+
"mirrored_sha256": "56f6783408dee02778b5ff1aa20751254740286c3dbafb46654def0ed5182f94",
|
|
165
116
|
"links": [],
|
|
166
117
|
"link_fixes": [
|
|
167
118
|
{
|
|
@@ -169,25 +120,25 @@
|
|
|
169
120
|
"mirrored_markdown": "Fixed input/event gain does not decrease when unrelated voices start. If level dips, inspect `maxLimiterReductionDb` and `preLimiterPeakDb`, then consider same-pitch phase cancellation or the device's speaker protection. Eight coherent independent voices can still exceed the limiter threshold; module capacity is not a clean-mix loudness guarantee. See [measurement example](advanced-examples.md#measure-peaks-and-limiter-reduction)."
|
|
170
121
|
},
|
|
171
122
|
{
|
|
172
|
-
"original_markdown": "
|
|
173
|
-
"mirrored_markdown": "
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"original_markdown": "- Timed tones, chords and pattern steps last at most 60 seconds. Sustained `noteOn` voices last until release, replacement or shutdown.",
|
|
177
|
-
"mirrored_markdown": "- Timed tones and chords last at most 60 seconds including release. Sequence intervals and explicit note lengths use the sequence unit, at most 300 beats or 60,000 ms; sequence ADSR remains in milliseconds and release may extend beyond the interval. Sustained `noteOn` voices last until release, replacement or shutdown."
|
|
123
|
+
"original_markdown": "Measure the complete workload on each target device, including held voices, binaural, LFOs, all enabled effects and tails. The [historical statistics benchmark](stats-performance.md) predates these features; the [current technical report](../docs/validation/studio-validation.json) includes an unmet full-chain host deadline criterion. Neither is a guarantee of game-frame rate, physical audio deadlines, heat or battery life.\n",
|
|
124
|
+
"mirrored_markdown": "Measure the complete workload on each target device, including held voices, binaural, LFOs, all enabled effects and tails. The [historical statistics benchmark](stats-performance.md) predates these features; the [current technical report](studio-validation.json) includes an unmet full-chain host deadline criterion. Neither is a guarantee of game-frame rate, physical audio deadlines, heat or battery life.\n"
|
|
178
125
|
}
|
|
179
126
|
]
|
|
180
127
|
},
|
|
181
128
|
{
|
|
182
129
|
"source": "documentation/sound-design.md",
|
|
183
130
|
"destination": "references/sound-design.md",
|
|
184
|
-
"source_sha256": "
|
|
185
|
-
"mirrored_sha256": "
|
|
131
|
+
"source_sha256": "ac3f4552065051bc5291d8838945ed256ad3b0da7857e1f1cb5f54f5962ebfae",
|
|
132
|
+
"mirrored_sha256": "7daf9a50dbac8eabcdb5c69079d78c0747aefa7602f24c1c66c1536faa6edbdc",
|
|
186
133
|
"links": [],
|
|
187
134
|
"link_fixes": [
|
|
188
135
|
{
|
|
189
|
-
"original_markdown": "
|
|
190
|
-
"mirrored_markdown": "
|
|
136
|
+
"original_markdown": "# Sound design with TiSynthEngine",
|
|
137
|
+
"mirrored_markdown": "# Sound design with TiSynthEngine\n\nAdditional [curated recipes](recipes.md) provide application sound and interaction variants."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"original_markdown": "Choose a held voice when the ending follows a player action instead of a fixed duration: motor, charge beam, pad or the last chord of a ceremony. `noteOn` starts a positive app-owned ID; `noteOff` begins release from the current level, and compatible `updateNote` edits ramp over 10 ms. Distinct IDs remain independent events with fixed gain. Reserve enough capacity for their releases and unrelated effects, and release on cancellation as well as ordinary key up. See the [held motor recipe](examples.md#sustained-game-motor) for retry/cleanup handling.",
|
|
141
|
+
"mirrored_markdown": "Choose a held voice when the ending follows a player action instead of a fixed duration: motor, charge beam, pad or the last chord of a ceremony. `noteOn` starts a positive app-owned ID; `noteOff` begins release from the current level, and compatible `updateNote` edits ramp over 10 ms. Distinct IDs remain independent events with fixed gain. Reserve enough capacity for their releases and unrelated effects, and release on cancellation as well as ordinary key up. See the [held motor recipe](advanced-examples.md#sustained-game-motor) for retry/cleanup handling."
|
|
191
142
|
},
|
|
192
143
|
{
|
|
193
144
|
"original_markdown": "The two additional voice LFOs move filter cutoff, square PWM or sine FM index using sine/triangle shapes. Cutoff movement creates slow breathing or rhythmic filtering; PWM adds changing harmonic color; a small FM-index modulation varies brightness. Free rates reach 20 Hz, and synced rates follow native transport tempo. These slots are separate from pitch vibrato. Avoid deep/high-rate modulation with strong resonance or high-frequency FM; safe parameter clamping does not guarantee a pleasant or alias-free sound. The [two-LFO example](examples.md#two-voice-lfos) shows a filtered PWM pad.",
|
|
@@ -196,18 +147,14 @@
|
|
|
196
147
|
{
|
|
197
148
|
"original_markdown": "All processors are off initially, with input gain 1. Enable one shared chain through `setMasterProcessing`; select `applyTo` categories such as `music` and `ambience` to keep explosions dry. Per-voice `effectSend` overrides that category selection. [Configuration](examples.md#chorus-delay-reverb-and-creative-saturation) and [exact ranges](api.md#setmasterprocessingoptions) explain chorus, delay, reverb and optional saturation.",
|
|
198
149
|
"mirrored_markdown": "All processors are off initially, with input gain 1. Enable one shared chain through `setMasterProcessing`; select `applyTo` categories such as `music` and `ambience` to keep explosions dry. Per-voice `effectSend` overrides that category selection. [Configuration](advanced-examples.md#chorus-delay-reverb-and-creative-saturation) and [exact ranges](api.md#setmasterprocessingoptions) explain chorus, delay, reverb and optional saturation."
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
"original_markdown": "# Sound design with TiSynthEngine\n\nTiSynthEngine generates sound with oscillators, without recorded samples. Pitch, waveform, envelope, movement and level define each sound, from interface feedback and musical cues to alarms, retro effects and simple percussion.",
|
|
202
|
-
"mirrored_markdown": "# Sound design with TiSynthEngine\n\nTiSynthEngine generates sound with oscillators, without recorded samples. Pitch, waveform, envelope, movement and level define each sound, from interface feedback and musical cues to alarms, retro effects and simple percussion.\n\nAdditional [curated recipes](recipes.md) provide application sound and interaction variants."
|
|
203
150
|
}
|
|
204
151
|
]
|
|
205
152
|
},
|
|
206
153
|
{
|
|
207
154
|
"source": "documentation/troubleshooting.md",
|
|
208
155
|
"destination": "references/troubleshooting.md",
|
|
209
|
-
"source_sha256": "
|
|
210
|
-
"mirrored_sha256": "
|
|
156
|
+
"source_sha256": "37fd3173ccfce393ab354713df66fbcc99c7281131ea45de1b3aae1e2d6f2160",
|
|
157
|
+
"mirrored_sha256": "e38bec8838cfda912fd16610d92c13e9395e65d5794ac02a58bff39a7b79c5aa",
|
|
211
158
|
"links": [],
|
|
212
159
|
"link_fixes": [
|
|
213
160
|
{
|
|
@@ -217,43 +164,52 @@
|
|
|
217
164
|
{
|
|
218
165
|
"original_markdown": "Enable diagnostics, reset deliberately, then inspect `preLimiterPeakDb` and `maxLimiterReductionDb`. They retain the native pre-limiter peak and greatest attenuation since reset, including brief interventions between UI polls. `limiterReductionDb` is a window measurement and can return to zero sooner. Older packages may omit the accumulated fields; disabled/unmeasured diagnostics return `null`. See [measurement example](examples.md#measure-peaks-and-limiter-reduction).",
|
|
219
166
|
"mirrored_markdown": "Enable diagnostics, reset deliberately, then inspect `preLimiterPeakDb` and `maxLimiterReductionDb`. They retain the native pre-limiter peak and greatest attenuation since reset, including brief interventions between UI polls. `limiterReductionDb` is a window measurement and can return to zero sooner. Older packages may omit the accumulated fields; disabled/unmeasured diagnostics return `null`. See [measurement example](advanced-examples.md#measure-peaks-and-limiter-reduction)."
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"source": "documentation/stats-performance.md",
|
|
172
|
+
"destination": "references/stats-performance.md",
|
|
173
|
+
"source_sha256": "085142b6ade7b4f7b5965f6a638f967fdceba5ab1f26fb85e8cb496d5b886b6a",
|
|
174
|
+
"mirrored_sha256": "037c3b8a99c5eea1cc133e4b0418268617d904d6fd5848da0a95a0d52f442340",
|
|
175
|
+
"links": [],
|
|
176
|
+
"link_fixes": [
|
|
177
|
+
{
|
|
178
|
+
"original_markdown": "[Unified validation evidence](../docs/validation/unified-validation.json) records native binary hashes, contract and regression results, the five-rate ten-minute simulated transport clock test, consumer checks and remaining acceptance work. Nine reference renders and thirty rate/wave cases match the archived renderer sample for sample with the new functions inactive. The effects history optimization also preserves its five-rate render hashes.",
|
|
179
|
+
"mirrored_markdown": "[Unified validation evidence](unified-validation.json) records native binary hashes, contract and regression results, the five-rate ten-minute simulated transport clock test, consumer checks and remaining acceptance work. Nine reference renders and thirty rate/wave cases match the archived renderer sample for sample with the new functions inactive. The effects history optimization also preserves its five-rate render hashes."
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"original_markdown": "[Unified bypass measurements](../docs/validation/unified-bypass-performance.json) retain the complete matched trials against `937e774`, with four sequence slots preallocated in the current engine. Initial stereo regressions prompted changes to inactive voice scans, send ramps, constant controls and compiler inlining. These are measurements of the Android callback on macOS, not iOS callback or physical output results.",
|
|
183
|
+
"mirrored_markdown": "[Unified bypass measurements](unified-bypass-performance.json) retain the complete matched trials against `937e774`, with four sequence slots preallocated in the current engine. Initial stereo regressions prompted changes to inactive voice scans, send ramps, constant controls and compiler inlining. These are measurements of the Android callback on macOS, not iOS callback or physical output results."
|
|
220
184
|
},
|
|
221
185
|
{
|
|
222
|
-
"original_markdown": "
|
|
223
|
-
"mirrored_markdown": "
|
|
186
|
+
"original_markdown": "A later source-frozen recheck includes the physical-phase constant-control and exact Android FIR optimizations. Three configurations remain within the screening limits. One-voice stereo still exceeds the total-time screen after the same warmed ten-pair protocol (+3.49% total, +1.73% p95). A focused layout comparison restored the previous voice offsets but improved total time by less than 0.5%, so that candidate was rejected. This latest-source host screen remains open. The [complete recheck and layout trials](../docs/validation/bypass-physical-recheck-evidence.zip) and summary in the JSON report preserve this result separately from the earlier source.",
|
|
187
|
+
"mirrored_markdown": "A later source-frozen recheck includes the physical-phase constant-control and exact Android FIR optimizations. Three configurations remain within the screening limits. One-voice stereo still exceeds the total-time screen after the same warmed ten-pair protocol (+3.49% total, +1.73% p95). A focused layout comparison restored the previous voice offsets but improved total time by less than 0.5%, so that candidate was rejected. This latest-source host screen remains open. The [complete recheck and layout trials](bypass-physical-recheck-evidence.zip) and summary in the JSON report preserve this result separately from the earlier source."
|
|
224
188
|
},
|
|
225
189
|
{
|
|
226
|
-
"original_markdown": "
|
|
227
|
-
"mirrored_markdown": "
|
|
190
|
+
"original_markdown": "[Physical validation evidence](../docs/validation/physical-validation.json) records the device protocol, measurements and remaining acceptance work. The isolated diagnostic uses separate app identifiers and preserves the applications' saved data. Its callback histogram and memory queries exist only in temporary instrumented module copies; they are excluded from production packages. Reproduction tools are in `tools/device-validation/`.",
|
|
191
|
+
"mirrored_markdown": "[Physical validation evidence](physical-validation.json) records the device protocol, measurements and remaining acceptance work. The isolated diagnostic uses separate app identifiers and preserves the applications' saved data. Its callback histogram and memory queries exist only in temporary instrumented module copies; they are excluded from production packages. Reproduction tools are in `tools/device-validation/`."
|
|
228
192
|
},
|
|
229
193
|
{
|
|
230
|
-
"original_markdown": "-
|
|
231
|
-
"mirrored_markdown": "-
|
|
194
|
+
"original_markdown": "[Frontier physical measurements](../docs/validation/frontier-physical-validation.json) cover Arcade and simulations starting with 20 or 80 large asteroids on both devices. The [iPad raw reports](../docs/validation/frontier-ipad-evidence.zip) retain actual Metal presentation timestamps; the [Android raw reports](../docs/validation/frontier-android-evidence.zip) retain SurfaceFlinger presentations aligned with native realtime/monotonic clocks. Arcade and simulation20 satisfy the predefined equivalent-load coverage and presentation/FPS limits. Strict simulation80 matching reaches 47.5% coverage on iPad and 45% on Android against the required 50%, so those comparisons remain inconclusive. Exploratory matching remains separate from the primary result; no causal audio-driven FPS improvement is claimed.",
|
|
195
|
+
"mirrored_markdown": "[Frontier physical measurements](frontier-physical-validation.json) cover Arcade and simulations starting with 20 or 80 large asteroids on both devices. The [iPad raw reports](frontier-ipad-evidence.zip) retain actual Metal presentation timestamps; the [Android raw reports](frontier-android-evidence.zip) retain SurfaceFlinger presentations aligned with native realtime/monotonic clocks. Arcade and simulation20 satisfy the predefined equivalent-load coverage and presentation/FPS limits. Strict simulation80 matching reaches 47.5% coverage on iPad and 45% on Android against the required 50%, so those comparisons remain inconclusive. Exploratory matching remains separate from the primary result; no causal audio-driven FPS improvement is claimed."
|
|
232
196
|
},
|
|
233
197
|
{
|
|
234
|
-
"original_markdown": "
|
|
235
|
-
"mirrored_markdown": "
|
|
198
|
+
"original_markdown": "The [Android Sim80 correction](../docs/validation/android-sim80-correction.json) reuses FIR coefficients across eight consecutive samples of a voice while preserving partial-sum rounding, sequence boundaries, mix order, ramps and tails. Stereo output and other Android ABIs retain their previous render path. In the short headphone diagnostic at 48 kHz/256 frames, with the same 512-frame output buffer and volume120/160, the corrected candidate reached 32 voices/25 tails and reported zero output xruns. CPU p95 occupied [96.5%,97.0%) of the deadline; 80 CPU-timed and 104 wall-timed callbacks still exceeded one block deadline. Output buffering absorbed those overruns in this run. Cesar then accepted live manual Sim80 with headphones as clean, without perceptible distortion. This is acceptance of that short scene, not the ten-minute maximum-load render criterion. The [raw correction reports](../docs/validation/android-sim80-correction-evidence.zip) retain the original, intermediate and corrected captures separately. Private PCM/profiling interfaces remain excluded from production packages. Full multiplatform acceptance remains open.",
|
|
199
|
+
"mirrored_markdown": "The [Android Sim80 correction](android-sim80-correction.json) reuses FIR coefficients across eight consecutive samples of a voice while preserving partial-sum rounding, sequence boundaries, mix order, ramps and tails. Stereo output and other Android ABIs retain their previous render path. In the short headphone diagnostic at 48 kHz/256 frames, with the same 512-frame output buffer and volume120/160, the corrected candidate reached 32 voices/25 tails and reported zero output xruns. CPU p95 occupied [96.5%,97.0%) of the deadline; 80 CPU-timed and 104 wall-timed callbacks still exceeded one block deadline. Output buffering absorbed those overruns in this run. Cesar then accepted live manual Sim80 with headphones as clean, without perceptible distortion. This is acceptance of that short scene, not the ten-minute maximum-load render criterion. The [raw correction reports](android-sim80-correction-evidence.zip) retain the original, intermediate and corrected captures separately. Private PCM/profiling interfaces remain excluded from production packages. Full multiplatform acceptance remains open."
|
|
236
200
|
},
|
|
237
201
|
{
|
|
238
|
-
"original_markdown": "
|
|
239
|
-
"mirrored_markdown": "
|
|
202
|
+
"original_markdown": "This is a historical statistics-only comparison, before sustained voices, native sequence transport, master effects and the two additional voice LFOs. It is not a performance measurement of those features. See [current technical validation](../docs/validation/studio-validation.json) for newer evidence and its device/deadline limits.",
|
|
203
|
+
"mirrored_markdown": "This is a historical statistics-only comparison, before sustained voices, native sequence transport, master effects and the two additional voice LFOs. It is not a performance measurement of those features. See [current technical validation](studio-validation.json) for newer evidence and its device/deadline limits."
|
|
240
204
|
},
|
|
241
205
|
{
|
|
242
|
-
"original_markdown": "
|
|
243
|
-
"mirrored_markdown": "
|
|
206
|
+
"original_markdown": "[Raw trials and investigation](../docs/validation/stats-performance.json). Reproduce with `tests/stats_benchmark_host.cpp` and `tools/benchmark_stats.py`; see [engine test instructions](audio-engine.md#engine-statistics).\n",
|
|
207
|
+
"mirrored_markdown": "[Raw trials and investigation](stats-performance.json). Reproduce with `tests/stats_benchmark_host.cpp` and `tools/benchmark_stats.py`; see [engine test instructions](audio-engine.md#engine-statistics).\n"
|
|
244
208
|
}
|
|
245
209
|
]
|
|
246
210
|
},
|
|
247
211
|
{
|
|
248
|
-
"source": "
|
|
249
|
-
"destination": "references/stats-performance.md",
|
|
250
|
-
"source_sha256": "3d6d35b9e0e49a778777d406418eaba04ebd57da871a322da28fae0190c5cb17",
|
|
251
|
-
"mirrored_sha256": "4dbd8a85cbce7c08369c4c9b5d4d2c0cf6a8e0dd0fa508b9c6aaf95774f7be12",
|
|
252
|
-
"links": [],
|
|
253
|
-
"link_fixes": []
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"source": "documentation/stats-performance.json",
|
|
212
|
+
"source": "docs/validation/stats-performance.json",
|
|
257
213
|
"destination": "references/stats-performance.json",
|
|
258
214
|
"source_sha256": "bd0cf07295d0d8f1120e66f527e9ca6d9a014efdc43dff5675716e8e26abe5b3",
|
|
259
215
|
"mirrored_sha256": "bd0cf07295d0d8f1120e66f527e9ca6d9a014efdc43dff5675716e8e26abe5b3",
|
|
@@ -261,7 +217,7 @@
|
|
|
261
217
|
"link_fixes": []
|
|
262
218
|
},
|
|
263
219
|
{
|
|
264
|
-
"source": "
|
|
220
|
+
"source": "docs/validation/studio-validation.json",
|
|
265
221
|
"destination": "references/studio-validation.json",
|
|
266
222
|
"source_sha256": "b6abcf9229b8bb812cb4da467e3c495ab66c41041fb7562ca3c371d79671509b",
|
|
267
223
|
"mirrored_sha256": "b6abcf9229b8bb812cb4da467e3c495ab66c41041fb7562ca3c371d79671509b",
|
|
@@ -269,7 +225,7 @@
|
|
|
269
225
|
"link_fixes": []
|
|
270
226
|
},
|
|
271
227
|
{
|
|
272
|
-
"source": "
|
|
228
|
+
"source": "docs/validation/unified-bypass-performance.json",
|
|
273
229
|
"destination": "references/unified-bypass-performance.json",
|
|
274
230
|
"source_sha256": "12622f00804bd866be90ac40579b868e8f6fcbd35635bf8000febb21adef2563",
|
|
275
231
|
"mirrored_sha256": "12622f00804bd866be90ac40579b868e8f6fcbd35635bf8000febb21adef2563",
|
|
@@ -277,7 +233,7 @@
|
|
|
277
233
|
"link_fixes": []
|
|
278
234
|
},
|
|
279
235
|
{
|
|
280
|
-
"source": "
|
|
236
|
+
"source": "docs/validation/unified-validation.json",
|
|
281
237
|
"destination": "references/unified-validation.json",
|
|
282
238
|
"source_sha256": "4754da69159f4ab35544d0f0a8ef6e5568dda9e74162b1c2dad2bb807d905fd8",
|
|
283
239
|
"mirrored_sha256": "4754da69159f4ab35544d0f0a8ef6e5568dda9e74162b1c2dad2bb807d905fd8",
|
|
@@ -285,7 +241,7 @@
|
|
|
285
241
|
"link_fixes": []
|
|
286
242
|
},
|
|
287
243
|
{
|
|
288
|
-
"source": "
|
|
244
|
+
"source": "docs/validation/physical-validation.json",
|
|
289
245
|
"destination": "references/physical-validation.json",
|
|
290
246
|
"links": [],
|
|
291
247
|
"link_fixes": [],
|
|
@@ -293,7 +249,7 @@
|
|
|
293
249
|
"mirrored_sha256": "73233c11a1d2aa06654a06486ef52a08d961473d83b0c5b2a44e19a6eac28c0b"
|
|
294
250
|
},
|
|
295
251
|
{
|
|
296
|
-
"source": "
|
|
252
|
+
"source": "docs/validation/frontier-physical-validation.json",
|
|
297
253
|
"destination": "references/frontier-physical-validation.json",
|
|
298
254
|
"links": [],
|
|
299
255
|
"link_fixes": [],
|
|
@@ -307,12 +263,12 @@
|
|
|
307
263
|
"links": [],
|
|
308
264
|
"link_fixes": [
|
|
309
265
|
{
|
|
310
|
-
"original_markdown": "The Classic Titanium app in [app.js](app.js) demonstrates the timed sounds, native sequences and statistics with the `sequenceend` event on Android and iOS. It
|
|
311
|
-
"mirrored_markdown": "The Classic Titanium app in [app.js](app.js) demonstrates the timed sounds, native sequences and statistics with the `sequenceend` event on Android and iOS. It
|
|
266
|
+
"original_markdown": "The Classic Titanium app in [app.js](app.js) demonstrates the timed sounds, native sequences and statistics with the `sequenceend` event on Android and iOS. It requires module version 1.1.0 and public API 1.1.0 for native finite-tone repetition, attack variation and the recommended note/statistics methods. Held voices, master processing and voice LFOs have copyable examples in the [advanced documentation](../documentation/examples.md#sustained-game-motor); this reference app does not expose those newer controls. The default engine configuration is 16 voices, `conservative` mixing and the `playback` session; master volume starts at 100% and optional diagnostics start off.",
|
|
267
|
+
"mirrored_markdown": "The Classic Titanium app in [app.js](app.js) demonstrates the timed sounds, native sequences and statistics with the `sequenceend` event on Android and iOS. It requires module version 1.1.0 and public API 1.1.0 for native finite-tone repetition, attack variation and the recommended note/statistics methods. Held voices, master processing and voice LFOs have copyable examples in the [advanced documentation](../../references/advanced-examples.md#sustained-game-motor); this reference app does not expose those newer controls. The default engine configuration is 16 voices, `conservative` mixing and the `playback` session; master volume starts at 100% and optional diagnostics start off."
|
|
312
268
|
},
|
|
313
269
|
{
|
|
314
|
-
"original_markdown": "
|
|
315
|
-
"mirrored_markdown": "
|
|
270
|
+
"original_markdown": "4. Copy the entire `example/` folder into the test app's `Resources/`, including [app.js](app.js), [sequenceScore.js](lib/sequenceScore.js) and [sequenceOwner.js](lib/sequenceOwner.js). It needs no images or audio files.\n5. Build and run the test app with the Titanium CLI or your existing Titanium launch configuration. Use Titanium SDK 13.2.0.GA or newer, Android compile API 35 or newer, and iOS 15 or newer. See the [module installation guide](../documentation/guide.md#install-the-module).",
|
|
271
|
+
"mirrored_markdown": "4. Copy the entire `example/` folder into the test app's `Resources/`, including [app.js](app.js), [sequenceScore.js](lib/sequenceScore.js) and [sequenceOwner.js](lib/sequenceOwner.js). It needs no images or audio files.\n5. Build and run the test app with the Titanium CLI or your existing Titanium launch configuration. Use Titanium SDK 13.2.0.GA or newer, Android compile API 35 or newer, and iOS 15 or newer. See the [module installation guide](../../references/guide.md#install-the-module)."
|
|
316
272
|
},
|
|
317
273
|
{
|
|
318
274
|
"original_markdown": "SPATIAL CHORD places the whole chord above/right. SPATIAL PATTERN places three broadband hits above/left, below/center and above/right using per-step coordinates. Neither sends stereo pan fields while binaural is active. The output remains two channels on a front plane, without rear positioning, distance attenuation or head tracking. See the [app integration guide](../documentation/guide.md#integrate-binaural-in-a-2d-app) for source mapping and amplitude sliders.",
|
|
@@ -325,10 +281,18 @@
|
|
|
325
281
|
{
|
|
326
282
|
"original_markdown": "The panel shows active/peak/spatial/tail voices, pending commands, replacements, request/publication rejections, priority drops, callback load, stereo output peak and backend underruns. It displays `n/a` for unmeasured or unavailable values, keeping them distinct from zero. Signal windows need about 200 ms of output after enabling. Native snapshots also include RMS, limiter reduction, sample rate, buffer and latency fields; consult the [complete field reference](../documentation/api.md#getstats) when integrating a full diagnostic view.",
|
|
327
283
|
"mirrored_markdown": "The panel shows active/peak/spatial/tail voices, pending commands, replacements, request/publication rejections, priority drops, callback load, stereo output peak and backend underruns. It displays `n/a` for unmeasured or unavailable values, keeping them distinct from zero. Signal windows need about 200 ms of output after enabling. Native snapshots also include RMS, limiter reduction, sample rate, buffer and latency fields; consult the [complete field reference](../../references/api.md#getstats) when integrating a full diagnostic view."
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"original_markdown": "The ATTACK VARIATION button submits the same metal-strike recipe on each press. With `capabilities.variation === true` and `variationSchemaVersion === 1`, the renderer chooses pitch, FM depth and level once per admitted attack. Older packages receive the original recipe without the dictionary. This button uses independent timed events; the [variation guide](../documentation/native-variation.md) separately demonstrates sustained ownership and native sequence retriggers. Physical listening acceptance remains separate from host correctness checks.",
|
|
287
|
+
"mirrored_markdown": "The ATTACK VARIATION button submits the same metal-strike recipe on each press. With `capabilities.variation === true` and `variationSchemaVersion === 1`, the renderer chooses pitch, FM depth and level once per admitted attack. Older packages receive the original recipe without the dictionary. This button uses independent timed events; the [variation guide](../../references/native-variation.md) separately demonstrates sustained ownership and native sequence retriggers. Physical listening acceptance remains separate from host correctness checks."
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"original_markdown": "`playTone` remains a standalone Boolean operation and rejects `intervalMs`; `repeatTone` always returns a numeric ID or 0 and requires the interval. Independent JavaScript calls remain supported, including finite bursts scheduled by an application's own event clock. See [the full contract and standalone burst example](../documentation/api.md#finite-tone-repetition).\n",
|
|
291
|
+
"mirrored_markdown": "`playTone` remains a standalone Boolean operation and rejects `intervalMs`; `repeatTone` always returns a numeric ID or 0 and requires the interval. Independent JavaScript calls remain supported, including finite bursts scheduled by an application's own event clock. See [the full contract and standalone burst example](../../references/api.md#finite-tone-repetition).\n"
|
|
328
292
|
}
|
|
329
293
|
],
|
|
330
|
-
"source_sha256": "
|
|
331
|
-
"mirrored_sha256": "
|
|
294
|
+
"source_sha256": "e191a701a3a913c85b15503fd256e0aec085eb731a587b1bf4faa43865c81982",
|
|
295
|
+
"mirrored_sha256": "88d93d5ffbf8bb4c7bdb6d72f4ee5fe96332704987127ff66d99beeed9677d9a"
|
|
332
296
|
},
|
|
333
297
|
{
|
|
334
298
|
"source": "example/app.js",
|
|
@@ -336,8 +300,8 @@
|
|
|
336
300
|
"kind": "example-asset",
|
|
337
301
|
"links": [],
|
|
338
302
|
"link_fixes": [],
|
|
339
|
-
"source_sha256": "
|
|
340
|
-
"mirrored_sha256": "
|
|
303
|
+
"source_sha256": "f8e2ed90f072f516bb4ca796fb6dd8443600585526455e416fface49535ccb40",
|
|
304
|
+
"mirrored_sha256": "f8e2ed90f072f516bb4ca796fb6dd8443600585526455e416fface49535ccb40"
|
|
341
305
|
},
|
|
342
306
|
{
|
|
343
307
|
"source": "example/lib/sequenceScore.js",
|
|
@@ -358,7 +322,7 @@
|
|
|
358
322
|
"mirrored_sha256": "2c7a639aa9e7347872240556734165a749e4abb44f19cb14546d9ae822e1c5b3"
|
|
359
323
|
},
|
|
360
324
|
{
|
|
361
|
-
"source": "
|
|
325
|
+
"source": "docs/validation/bypass-physical-recheck-evidence.zip",
|
|
362
326
|
"destination": "references/bypass-physical-recheck-evidence.zip",
|
|
363
327
|
"kind": "evidence-archive",
|
|
364
328
|
"links": [],
|
|
@@ -367,7 +331,7 @@
|
|
|
367
331
|
"mirrored_sha256": "910eb9eafebd7d46797192053ec7f4f9f3fc88c6bfd1b83b07acefd1e51603a2"
|
|
368
332
|
},
|
|
369
333
|
{
|
|
370
|
-
"source": "
|
|
334
|
+
"source": "docs/validation/frontier-android-evidence.zip",
|
|
371
335
|
"destination": "references/frontier-android-evidence.zip",
|
|
372
336
|
"kind": "evidence-archive",
|
|
373
337
|
"links": [],
|
|
@@ -376,7 +340,7 @@
|
|
|
376
340
|
"mirrored_sha256": "217a06978982d601ad10796865b22dbac69f202e4bf91ae07ba268734d4fef08"
|
|
377
341
|
},
|
|
378
342
|
{
|
|
379
|
-
"source": "
|
|
343
|
+
"source": "docs/validation/frontier-ipad-evidence.zip",
|
|
380
344
|
"destination": "references/frontier-ipad-evidence.zip",
|
|
381
345
|
"kind": "evidence-archive",
|
|
382
346
|
"links": [],
|
|
@@ -385,7 +349,7 @@
|
|
|
385
349
|
"mirrored_sha256": "56369b202d279efbf4f9a720a0a99dba2f398410cb8e042ef1200a3a63be245b"
|
|
386
350
|
},
|
|
387
351
|
{
|
|
388
|
-
"source": "
|
|
352
|
+
"source": "docs/validation/android-sim80-correction.json",
|
|
389
353
|
"destination": "references/android-sim80-correction.json",
|
|
390
354
|
"links": [],
|
|
391
355
|
"link_fixes": [],
|
|
@@ -393,7 +357,7 @@
|
|
|
393
357
|
"mirrored_sha256": "675c2201b9e0bfad7c8bf6255f8a9440eb45ef0a915c24eee9e47db12745a1c0"
|
|
394
358
|
},
|
|
395
359
|
{
|
|
396
|
-
"source": "
|
|
360
|
+
"source": "docs/validation/android-sim80-correction-evidence.zip",
|
|
397
361
|
"destination": "references/android-sim80-correction-evidence.zip",
|
|
398
362
|
"links": [],
|
|
399
363
|
"link_fixes": [],
|
|
@@ -402,7 +366,7 @@
|
|
|
402
366
|
"kind": "evidence-archive"
|
|
403
367
|
},
|
|
404
368
|
{
|
|
405
|
-
"source": "
|
|
369
|
+
"source": "docs/validation/performance-review.json",
|
|
406
370
|
"destination": "references/performance-review.json",
|
|
407
371
|
"links": [],
|
|
408
372
|
"link_fixes": [],
|
|
@@ -410,7 +374,7 @@
|
|
|
410
374
|
"mirrored_sha256": "e822b3361bb5cdb31e635863d84b179ef41edfe6a1214ae99ca3a9d327d21d3a"
|
|
411
375
|
},
|
|
412
376
|
{
|
|
413
|
-
"source": "
|
|
377
|
+
"source": "docs/validation/performance-review-evidence.zip",
|
|
414
378
|
"destination": "references/performance-review-evidence.zip",
|
|
415
379
|
"links": [],
|
|
416
380
|
"link_fixes": [],
|
|
@@ -422,15 +386,69 @@
|
|
|
422
386
|
"source": "documentation/audio-pipeline-validation.md",
|
|
423
387
|
"destination": "references/audio-pipeline-validation.md",
|
|
424
388
|
"source_sha256": "7359d85de63e9fe94f85477e03a22fc1531c8acaabe30333e7ff2515cc5ec3e9",
|
|
425
|
-
"mirrored_sha256": "
|
|
389
|
+
"mirrored_sha256": "71f668b1467fa8afc92cddd627f688247ef6f48f2bf8a0ebdc2a2b05427e3521",
|
|
426
390
|
"links": [],
|
|
427
391
|
"link_fixes": []
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"source": "documentation/instruments-and-effects.md",
|
|
395
|
+
"destination": "references/instruments-and-effects.md",
|
|
396
|
+
"links": [],
|
|
397
|
+
"link_fixes": [],
|
|
398
|
+
"source_sha256": "6c9b96c406c54426a1d37a85b42909a50621cc647d08d37fa89c19283b3acfa0",
|
|
399
|
+
"mirrored_sha256": "ced9d66af8528bf8a88463f953ff3892ef4234be5551cade9a210a91fd53e746"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"source": "documentation/native-variation.md",
|
|
403
|
+
"destination": "references/native-variation.md",
|
|
404
|
+
"links": [],
|
|
405
|
+
"link_fixes": [
|
|
406
|
+
{
|
|
407
|
+
"original_markdown": "Both renderers use [`shared/synth_variation.h`](../shared/synth_variation.h): stable schema slots, integer-defined SplitMix64 finalization and exact uint32-to-uniform conversion. Parsing prepares a fixed 144-byte configuration outside the audio callback. The callback performs bounded arithmetic without allocation, locks, JavaScript calls or entropy services.",
|
|
408
|
+
"mirrored_markdown": "Both renderers use [`shared/synth_variation.h`](https://github.com/macCesar/TiSynthEngine/blob/7cd035409453b01df2736aef56f2316d94ca019c/shared/synth_variation.h): stable schema slots, integer-defined SplitMix64 finalization and exact uint32-to-uniform conversion. Parsing prepares a fixed 144-byte configuration outside the audio callback. The callback performs bounded arithmetic without allocation, locks, JavaScript calls or entropy services."
|
|
409
|
+
}
|
|
410
|
+
],
|
|
411
|
+
"source_sha256": "650d2c675dc4b4e09a85521812b7fedd3b02cb993a451378a8082e2b7782303a",
|
|
412
|
+
"mirrored_sha256": "a34c4100b5f28888252855ce0e68494097cbca4df76ee9298cfcd05efa14e839"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"source": "documentation/native-variation-proposal.md",
|
|
416
|
+
"destination": "references/native-variation-proposal.md",
|
|
417
|
+
"links": [],
|
|
418
|
+
"link_fixes": [],
|
|
419
|
+
"source_sha256": "17b74434b0e03e5353b71c693d4ec722dede92fee8aed142003e67f60e158e27",
|
|
420
|
+
"mirrored_sha256": "bcb2ab5cdc13d0c5c47a9b8d81a1c1eaae3af5a1c85a3f8cf85ca3ae2b300b1d"
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"source": "documentation/native-variation-validation.md",
|
|
424
|
+
"destination": "references/native-variation-validation.md",
|
|
425
|
+
"links": [],
|
|
426
|
+
"link_fixes": [],
|
|
427
|
+
"source_sha256": "df18826824984cb440d7412b547663ba6b8a7152bc347508114d7af982c90e68",
|
|
428
|
+
"mirrored_sha256": "bab57291d98d537a42adf4992121dce1887bcb1b4affecf94c4174168a5629dc"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"source": "documentation/native-tone-repetition-validation.md",
|
|
432
|
+
"destination": "references/native-tone-repetition-validation.md",
|
|
433
|
+
"links": [],
|
|
434
|
+
"link_fixes": [],
|
|
435
|
+
"source_sha256": "b29758b5ec3b50650c4e30e8c408cb9bc680cad3fc158e543c3f6eec00c268a1",
|
|
436
|
+
"mirrored_sha256": "186b3baaff1c7bbbf8977f0ad5e00b632f63155ea29c2903554c8ac1738259dd"
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"source": "index.d.ts",
|
|
440
|
+
"destination": "assets/index.d.ts",
|
|
441
|
+
"links": [],
|
|
442
|
+
"link_fixes": [],
|
|
443
|
+
"kind": "declaration-asset",
|
|
444
|
+
"source_sha256": "0b1dd381258bd4891090c2e2b56bbeb66f0be66daa1c9fbab6145a9dc09a0620",
|
|
445
|
+
"mirrored_sha256": "0b1dd381258bd4891090c2e2b56bbeb66f0be66daa1c9fbab6145a9dc09a0620"
|
|
428
446
|
}
|
|
429
447
|
],
|
|
430
448
|
"excluded_documents": [
|
|
431
449
|
{
|
|
432
450
|
"source": "documentation/index.md",
|
|
433
|
-
"source_sha256": "
|
|
451
|
+
"source_sha256": "23b00db329fb53cd445e71a2e746ab8dbfdfe8d5c827c60929ff06af3b3757c3",
|
|
434
452
|
"reason": "Upstream documentation index; SKILL.md is the distributed navigation entry point."
|
|
435
453
|
},
|
|
436
454
|
{
|
|
@@ -439,10 +457,10 @@
|
|
|
439
457
|
"reason": "Dependency and KEMAR notices remain with the official module and its binary packages; this skill redistributes documentation, not the native code or HRTF data. Re-review attribution when the source notice changes."
|
|
440
458
|
}
|
|
441
459
|
],
|
|
442
|
-
"source_state": "
|
|
443
|
-
"
|
|
444
|
-
"
|
|
445
|
-
"
|
|
460
|
+
"source_state": "committed",
|
|
461
|
+
"api_version": "1.1.0",
|
|
462
|
+
"published_version": "1.1.0",
|
|
463
|
+
"historical_public_packages": [
|
|
446
464
|
{
|
|
447
465
|
"platform": "android",
|
|
448
466
|
"version": "1.0.2",
|
|
@@ -494,5 +512,31 @@
|
|
|
494
512
|
"ios/README.html": "b3ed190cbb3ca9022943f2f71d5e927fde7f8d8a75c2a23ab3aa51324a07a5dc"
|
|
495
513
|
}
|
|
496
514
|
}
|
|
515
|
+
],
|
|
516
|
+
"public_packages": [
|
|
517
|
+
{
|
|
518
|
+
"platform": "android",
|
|
519
|
+
"version": "1.1.0",
|
|
520
|
+
"release_url": "https://github.com/macCesar/TiSynthEngine/releases/tag/android-1.1.0",
|
|
521
|
+
"download_url": "https://github.com/macCesar/TiSynthEngine/releases/download/android-1.1.0/ti.synthengine-android-1.1.0.zip",
|
|
522
|
+
"filename": "ti.synthengine-android-1.1.0.zip",
|
|
523
|
+
"sha256": "69dea7daaa8b5dd77f7a3d4d6e6ad801e2a0bd48f9e2c79b9caf584dd56e36eb",
|
|
524
|
+
"downloaded_on_utc": "2026-11-02",
|
|
525
|
+
"crc_verified": true,
|
|
526
|
+
"release_target_commit": "7cd035409453b01df2736aef56f2316d94ca019c",
|
|
527
|
+
"types_match_source": true
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"platform": "iphone",
|
|
531
|
+
"version": "1.1.0",
|
|
532
|
+
"release_url": "https://github.com/macCesar/TiSynthEngine/releases/tag/ios-1.1.0",
|
|
533
|
+
"download_url": "https://github.com/macCesar/TiSynthEngine/releases/download/ios-1.1.0/ti.synthengine-iphone-1.1.0.zip",
|
|
534
|
+
"filename": "ti.synthengine-iphone-1.1.0.zip",
|
|
535
|
+
"sha256": "c426fed49d78926f8dd4e176addaebf0cb0fe4592c5eb48c842aef833ad798b4",
|
|
536
|
+
"downloaded_on_utc": "2026-11-02",
|
|
537
|
+
"crc_verified": true,
|
|
538
|
+
"release_target_commit": "7cd035409453b01df2736aef56f2316d94ca019c",
|
|
539
|
+
"types_match_source": true
|
|
540
|
+
}
|
|
497
541
|
]
|
|
498
542
|
}
|