@maccesar/titools 5.2.0 → 5.2.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/CONTRIBUTING.md +69 -0
- package/README.md +80 -72
- package/agents/ti-pro.md +1 -1
- package/commands/ti-audit.md +2 -2
- package/docs/examples.md +91 -0
- package/docs/knowledge-index.md +57 -0
- package/lib/downloader.js +1 -1
- package/package.json +4 -2
- package/skills/purgetss/references/multi-density-images.md +1 -1
- package/skills/ti-admob-unified/SKILL.md +21 -7
- package/skills/ti-admob-unified/assets/example/app.js +229 -25
- package/skills/ti-admob-unified/assets/example/lib/ads.js +30 -2
- package/skills/ti-admob-unified/assets/example/library-usage.js +33 -1
- package/skills/ti-admob-unified/references/api-reference.md +39 -16
- package/skills/ti-admob-unified/references/banners.md +9 -9
- package/skills/ti-admob-unified/references/contributing.md +14 -9
- package/skills/ti-admob-unified/references/dependencies.md +31 -25
- package/skills/ti-admob-unified/references/fullscreen.md +43 -28
- package/skills/ti-admob-unified/references/game-monetization.md +138 -7
- package/skills/ti-admob-unified/references/getting-started.md +75 -31
- package/skills/ti-admob-unified/references/index.md +5 -2
- package/skills/ti-admob-unified/references/integration.md +8 -6
- package/skills/ti-admob-unified/references/library.md +41 -10
- package/skills/ti-admob-unified/references/mediation-parity.md +17 -0
- package/skills/ti-admob-unified/references/mediation.md +22 -9
- package/skills/ti-admob-unified/references/migration.md +11 -7
- package/skills/ti-admob-unified/references/module-changelog.md +41 -11
- package/skills/ti-admob-unified/references/privacy.md +35 -8
- package/skills/ti-admob-unified/references/production.md +67 -0
- package/skills/ti-admob-unified/references/rewarded-interstitial.md +101 -0
- package/skills/ti-admob-unified/references/roadmap.md +28 -31
- package/skills/ti-admob-unified/references/source-notes.md +51 -4
- package/skills/ti-admob-unified/references/source-snapshot.json +249 -45
- package/skills/ti-admob-unified/references/third-party-notices.md +4 -4
- package/skills/ti-game/SKILL.md +23 -6
- package/skills/ti-game/references/api.md +34 -30
- package/skills/ti-game/references/debugging-performance.md +18 -9
- package/skills/ti-game/references/examples.md +103 -20
- package/skills/ti-game/references/input.md +101 -0
- package/skills/ti-game/references/patterns.md +39 -15
- package/skills/ti-game/references/physics.md +80 -52
- package/skills/ti-game/references/project-setup.md +118 -56
- package/skills/ti-game/references/recipes-action.md +107 -8
- package/skills/ti-game/references/recipes-adventure-effects.md +41 -9
- package/skills/ti-game/references/roadmap.md +10 -3
- package/skills/ti-game/references/source-notes.md +81 -0
- package/skills/ti-game/references/tilemaps.md +12 -4
- package/skills/ti-synthengine/SKILL.md +81 -95
- package/skills/ti-synthengine/assets/example/README.md +84 -0
- package/skills/ti-synthengine/assets/example/app.js +1178 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceOwner.js +83 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceScore.js +25 -0
- package/skills/ti-synthengine/references/advanced-examples.md +174 -0
- package/skills/ti-synthengine/references/android-sim80-correction-evidence.zip +0 -0
- package/skills/ti-synthengine/references/android-sim80-correction.json +162 -0
- package/skills/ti-synthengine/references/api.md +434 -380
- package/skills/ti-synthengine/references/audio-engine.md +157 -230
- package/skills/ti-synthengine/references/bypass-physical-recheck-evidence.zip +0 -0
- package/skills/ti-synthengine/references/examples.md +123 -253
- package/skills/ti-synthengine/references/frontier-android-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-ipad-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-physical-validation.json +1918 -0
- package/skills/ti-synthengine/references/guide.md +188 -156
- package/skills/ti-synthengine/references/performance-review-evidence.zip +0 -0
- package/skills/ti-synthengine/references/performance-review.json +1146 -0
- package/skills/ti-synthengine/references/physical-validation.json +1457 -0
- package/skills/ti-synthengine/references/recipes-interaction.md +549 -0
- package/skills/ti-synthengine/references/recipes.md +423 -599
- package/skills/ti-synthengine/references/recommendations.md +63 -113
- package/skills/ti-synthengine/references/sound-design.md +134 -258
- package/skills/ti-synthengine/references/source-notes.md +93 -105
- package/skills/ti-synthengine/references/source-snapshot.json +379 -32
- package/skills/ti-synthengine/references/stats-performance.md +64 -20
- package/skills/ti-synthengine/references/studio-validation.json +6202 -0
- package/skills/ti-synthengine/references/troubleshooting.md +109 -121
- package/skills/ti-synthengine/references/unified-bypass-performance.json +22425 -0
- package/skills/ti-synthengine/references/unified-validation.json +314 -0
- package/AGENTS-VERCEL-RESEARCH.md +0 -175
|
@@ -1,37 +1,81 @@
|
|
|
1
|
-
> Source snapshot: official TiSynthEngine 1.0.0
|
|
1
|
+
> Source snapshot: official TiSynthEngine 1.0.0 documentation at release source commit `e7cbbe8a6f9ab38088fd8029c7b43cef6501101f` (2026-10-24). Upstream `documentation/stats-performance.md` SHA-256: `3d6d35b9e0e49a778777d406418eaba04ebd57da871a322da28fae0190c5cb17`.
|
|
2
2
|
|
|
3
3
|
# Statistics host comparison
|
|
4
4
|
|
|
5
|
+
## Unified transport validation
|
|
6
|
+
|
|
7
|
+
The unified transport, selective processing and continuous voice controls are implemented in 1.0.0. The following evidence was collected during pre-release development. Both native modules were rebuilt with Titanium SDK 13.4.1.GA. Fresh Android libraries for four ABIs and the three Apple XCFramework libraries were compared with the packaged binaries. The eight consumer applications and the module example use the final API; consumer application builds and physical playback are checked separately below.
|
|
8
|
+
|
|
9
|
+
[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.
|
|
10
|
+
|
|
11
|
+
[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.
|
|
12
|
+
|
|
13
|
+
The original short-process one-voice stereo trial exceeded the total-time screen (+12.01%); a twenty-pair repeat also exceeded it (+7.64%), with two distinct latency groups. A diagnostic then ran one hundred benchmark calls in each process, discarded its first ten calls, and compared ten alternating baseline/current process pairs. Its median change was -0.17% total and -0.01% p95. The other three matched configurations stay within the screening thresholds. All original and diagnostic trials remain in the report. This supports an influence from process startup/core residency; it neither identifies a specific CPU core nor establishes a precise device overhead bound.
|
|
14
|
+
|
|
15
|
+
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.
|
|
16
|
+
|
|
17
|
+
The maximum-load host run covers thirty simulated seconds at 48 kHz with 256-frame blocks, 32 voices, four sequences, binaural output, two LFOs per voice and all effects. Render p95 was 32.13% of the block deadline; one block exceeded its deadline. This run does not satisfy the ten-minute, zero-miss physical acceptance criterion. Counted native buffers at 192 kHz occupy 24,649,584 bytes (23.51 MiB); this native accounting excludes managed allocations, drivers and complete recovery/process peaks. Physical measurements are reported separately below.
|
|
18
|
+
|
|
19
|
+
Reproduce the matched bypass build with `python3 tools/benchmark_unified.py --build-only`, then run `python3 tools/benchmark_unified.py --run-only` while other CPU work is idle. The tool archives each renderer with its own headers and records source/binary hashes. `tests/unified_load_host.cpp` uses the host include/compiler setup in [engine test instructions](audio-engine.md#regression-coverage); compile with `-O3` and supply the simulated duration in seconds when running it. These tools never open a hardware stream.
|
|
20
|
+
|
|
21
|
+
After both real native builds, refresh the ZIP documentation and examples with `python3 tools/package_documentation.py --sdk-path "<Titanium SDK directory>"`. Use `--check-only` to validate temporary candidates first. The tool verifies archive CRC, documentation links/anchors, reports and examples, and proves that all native binary members retain their hashes. It does not compile native code.
|
|
22
|
+
|
|
23
|
+
## Physical validation in progress
|
|
24
|
+
|
|
25
|
+
[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/`.
|
|
26
|
+
|
|
27
|
+
The ninth-generation iPad rendered 600.027 seconds at its actual 44.1 kHz rate, with 1,024-frame callbacks, 32 binaural voices, four sequences, two LFOs per voice and all shared effects. Across 25,841 measured callbacks, p95 occupied [38.8%, 38.9%) of the deadline, the maximum was 55.45%, and no measured callback exceeded its deadline. iOS hardware underruns remain unavailable; this result does not claim a hardware-underrun count of zero.
|
|
28
|
+
|
|
29
|
+
The Android CPH2639 rendered at 48 kHz with 256-frame callbacks. Its short feasibility test fails the render criterion, including after exact-output FIR and constant-control optimizations. Paired wall/thread-CPU measurements confirm substantial CPU cost. The controlled ten-minute test has not started; no Android maximum-load pass is claimed.
|
|
30
|
+
|
|
31
|
+
Memory pressure publishes four 512-step, 32-note scores and repeated complete edits, then exercises recovery. On iPad, a conservative charged-footprint/native-buffer projection at 192 kHz is 33,405,808 bytes, while resident high-water growth is 43,401,216 bytes. These are distinct metrics, and the projection is an estimate from actual 44.1 kHz operation. Android's first whole-process pressure measurement exceeds 32 MiB at its actual 48 kHz rate; the producer-memory correction reduces the observed peak by about 9 to 11 MiB, but the whole-process bound remains unestablished. Neither result certifies whole-process RSS below 32 MiB at physical 192 kHz.
|
|
32
|
+
|
|
33
|
+
[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.
|
|
34
|
+
|
|
35
|
+
Android's two simulation80 Audio-on phases reached 32 spatial voices, callback maxima 3.07/3.19 times their deadline and 67/88 backend xruns. A matched simulation20 renderer elapsed-work diagnostic also exceeded its investigation screen: p95-of-window-p95 increased 6.91%. Source and packaged-class inspection show a wall elapsed counter covering updates, Java/GL calls and descheduling, excluding the explicit FPS sleep and direct EGL swap. Available data cannot isolate CPU contention, governor or indirect driver/GPU effects. Stable presentation timing does not approve this separate renderer-work increase.
|
|
36
|
+
|
|
37
|
+
Cesar initially reported clean manual Sim80 audio on both devices. A later headphone comparison withdrew Android's initial result: many simultaneous explosions sounded saturated on Android, while iPad remained clean. The correction and latest scoped acceptance are recorded below; the original failed measurements remain unchanged.
|
|
38
|
+
|
|
39
|
+
A private Android diagnostic captured 458,496 stereo float frames after the limiter and replayed those exact samples through a fresh empty engine with the same backend, route and volume. Live Sim80 reported 89 backend xruns and a maximum render load of 2.95 times the deadline; copy-only replay reported zero xruns and a maximum load of 3.69%. Cesar heard saturation live and very little or none during replay. Captured samples were finite, peaked at 0.85 (-1.41 dBFS), and ended with 250 ms of exact silence. This supports a delivery failure under live load. The comparison includes physics and synthesis in the live case, so it does not isolate DSP from game or operating-system contention.
|
|
40
|
+
|
|
41
|
+
An exact-output attack-preparation candidate remains outside production. Its physical comparison changed route and volume between baseline and candidate and included overlapping user/automation actions; it cannot establish a causal improvement. The candidate still reported output xruns. A subsequent actual-Sim80 callback profile attributed about 65% of audio-thread CPU samples to the binaural FIR and only 0.45% of measured callback CPU time to new attacks. Blocks without new attacks also exceeded their deadlines.
|
|
42
|
+
|
|
43
|
+
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.
|
|
44
|
+
|
|
45
|
+
## Historical statistics-only comparison
|
|
46
|
+
|
|
47
|
+
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.
|
|
48
|
+
|
|
5
49
|
Beta 1.0.0. Synthetic Android native render on Apple M1. Apple clang version 21.0.0 (clang-2100.3.34.2). Baseline commit `95901c98af5353b86d9dc7c60b29ab9186b038cd`. Both renderers use identical `-O3` flags.
|
|
6
50
|
|
|
7
51
|
One warmup and ten alternating runs per configuration, 48 kHz, 32 slots, 256-frame callbacks, twenty seconds per run. Current modes query native snapshots at 5 Hz. Timing includes command publication and snapshot work; JavaScript/JNI, real scheduler jitter and hardware streams are excluded. macOS user-interactive QoS reduces core-selection variability. Values below are median percentage changes relative to the previous engine.
|
|
8
52
|
|
|
9
53
|
The flagged sustained 32-voice binaural configuration was repeated in isolation with another warmup and ten alternating trials; its table row uses that repeat. The original trials are retained in the raw investigation.
|
|
10
54
|
|
|
11
|
-
| Case
|
|
12
|
-
|
|
|
13
|
-
| silence
|
|
14
|
-
| oneVoice | stereo
|
|
15
|
-
| 32Voices | stereo
|
|
16
|
-
| steals
|
|
17
|
-
| chords
|
|
18
|
-
| patterns | stereo
|
|
19
|
-
| drain
|
|
20
|
-
| silence
|
|
21
|
-
| oneVoice | binaural |
|
|
22
|
-
| 32Voices | binaural |
|
|
23
|
-
| steals
|
|
24
|
-
| chords
|
|
25
|
-
| patterns | binaural |
|
|
26
|
-
| drain
|
|
27
|
-
|
|
28
|
-
All mode/configuration hashes match sample for sample. The direct integration regression also compares float arrays, including a reset during playback. Full mode includes timing, stereo peak/RMS and limiter reduction; basic mode leaves those measurements disabled. Full mode
|
|
55
|
+
| Case | Output | Basic total | Basic p95 | Full total | Full p95 |
|
|
56
|
+
| -------- | -------- | ----------: | --------: | ---------: | -------: |
|
|
57
|
+
| silence | stereo | -73.13% | -72.45% | -71.89% | -70.92% |
|
|
58
|
+
| oneVoice | stereo | -41.29% | -41.09% | -39.20% | -38.70% |
|
|
59
|
+
| 32Voices | stereo | -5.48% | -6.61% | -4.88% | -4.25% |
|
|
60
|
+
| steals | stereo | -7.01% | -6.01% | -0.42% | -1.47% |
|
|
61
|
+
| chords | stereo | -17.88% | -3.59% | -16.64% | -3.15% |
|
|
62
|
+
| patterns | stereo | -40.19% | -39.07% | -38.55% | -36.80% |
|
|
63
|
+
| drain | stereo | -69.59% | -60.42% | -68.12% | -59.24% |
|
|
64
|
+
| silence | binaural | -73.09% | -72.45% | -71.75% | -71.17% |
|
|
65
|
+
| oneVoice | binaural | -16.36% | -19.86% | -13.44% | -17.71% |
|
|
66
|
+
| 32Voices | binaural | -6.09% | -19.89% | -10.14% | -23.25% |
|
|
67
|
+
| steals | binaural | +0.55% | -0.26% | -0.47% | -6.54% |
|
|
68
|
+
| chords | binaural | -8.41% | -6.12% | -3.69% | +1.28% |
|
|
69
|
+
| patterns | binaural | -11.76% | -9.16% | -9.53% | -7.40% |
|
|
70
|
+
| drain | binaural | -45.49% | -22.73% | -50.18% | -21.98% |
|
|
71
|
+
|
|
72
|
+
All mode/configuration hashes match sample for sample. The direct integration regression also compares float arrays, including a reset during playback. Full mode includes timing, stereo peak/RMS and limiter reduction; basic mode leaves those measurements disabled. Full mode does more work than basic mode. The table compares each final configuration with the previous engine.
|
|
29
73
|
|
|
30
74
|
Initial repeated silence regressions were about +5% basic and +19% full. Sparse sounds also crossed the investigation thresholds. The correction uses event-maintained occupancy to skip entirely empty voice/tail groups, in both Android and iOS, while retaining all requested meters. No DSP formulas or emitted samples were changed.
|
|
31
75
|
|
|
32
76
|
The acceptance thresholds are increases above 2% total render time or 5% p95 elapsed block time. No final median exceeds either threshold. The sustained 32-voice binaural full-mode total changed from +5.01% in the original batch to -10.14% in the isolated repeat; this variability prevents treating the percentages as a precise overhead bound. No repeatable regression above the screening limits was established in that case.
|
|
33
77
|
|
|
34
|
-
These are host measurements of the Android renderer and shared telemetry core. They do not execute the iOS callback, include bridge polling cost, establish physical underrun behavior, or demonstrate unchanged device heat, battery use or total app CPU. Both native modules are compiled separately
|
|
78
|
+
These are host measurements of the Android renderer and shared telemetry core. They do not execute the iOS callback, include bridge polling cost, establish physical underrun behavior, or demonstrate unchanged device heat, battery use or total app CPU. Both native modules are compiled separately. Physical stereo/headphone listening and device performance require their own acceptance tests; these results do not establish zero impact on devices.
|
|
35
79
|
|
|
36
80
|
The patterns case replays timed native note publications; it does not run the Java or dispatch scheduler. The drain case repeatedly renders 1 ms voices plus the complete binaural FIR history. Shutdown/rejection/queue concurrency belongs to regression testing, not these timings.
|
|
37
81
|
|