@maccesar/titools 5.2.5 → 5.3.0

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 (45) hide show
  1. package/README.md +27 -37
  2. package/agents/ti-pro.md +1 -1
  3. package/commands/ti-audit.md +1 -1
  4. package/docs/examples.md +15 -13
  5. package/package.json +1 -1
  6. package/skills/ti-synthengine/SKILL.md +62 -111
  7. package/skills/ti-synthengine/assets/example/README.md +50 -59
  8. package/skills/ti-synthengine/assets/example/app.js +67 -65
  9. package/skills/ti-synthengine/assets/example/lib/sequenceOwner.js +39 -40
  10. package/skills/ti-synthengine/assets/example/lib/soundPreset.js +34 -0
  11. package/skills/ti-synthengine/assets/index.d.ts +122 -2
  12. package/skills/ti-synthengine/references/advanced-examples.md +4 -4
  13. package/skills/ti-synthengine/references/api.md +40 -18
  14. package/skills/ti-synthengine/references/audio-engine.md +15 -57
  15. package/skills/ti-synthengine/references/examples.md +63 -6
  16. package/skills/ti-synthengine/references/guide.md +61 -57
  17. package/skills/ti-synthengine/references/instruments-and-effects.md +15 -15
  18. package/skills/ti-synthengine/references/native-variation.md +53 -14
  19. package/skills/ti-synthengine/references/recipes-interaction.md +25 -20
  20. package/skills/ti-synthengine/references/recipes.md +19 -16
  21. package/skills/ti-synthengine/references/recommendations.md +12 -12
  22. package/skills/ti-synthengine/references/sound-api.md +197 -0
  23. package/skills/ti-synthengine/references/sound-design.md +7 -7
  24. package/skills/ti-synthengine/references/source-notes.md +62 -172
  25. package/skills/ti-synthengine/references/troubleshooting.md +17 -19
  26. package/skills/ti-synthengine/references/upgrade-2.0.0.md +40 -0
  27. package/skills/ti-synthengine/references/android-sim80-correction-evidence.zip +0 -0
  28. package/skills/ti-synthengine/references/android-sim80-correction.json +0 -162
  29. package/skills/ti-synthengine/references/audio-pipeline-validation.md +0 -19
  30. package/skills/ti-synthengine/references/bypass-physical-recheck-evidence.zip +0 -0
  31. package/skills/ti-synthengine/references/frontier-android-evidence.zip +0 -0
  32. package/skills/ti-synthengine/references/frontier-ipad-evidence.zip +0 -0
  33. package/skills/ti-synthengine/references/frontier-physical-validation.json +0 -1918
  34. package/skills/ti-synthengine/references/native-tone-repetition-validation.md +0 -59
  35. package/skills/ti-synthengine/references/native-variation-proposal.md +0 -182
  36. package/skills/ti-synthengine/references/native-variation-validation.md +0 -63
  37. package/skills/ti-synthengine/references/performance-review-evidence.zip +0 -0
  38. package/skills/ti-synthengine/references/performance-review.json +0 -1146
  39. package/skills/ti-synthengine/references/physical-validation.json +0 -1457
  40. package/skills/ti-synthengine/references/source-snapshot.json +0 -542
  41. package/skills/ti-synthengine/references/stats-performance.json +0 -2992
  42. package/skills/ti-synthengine/references/stats-performance.md +0 -82
  43. package/skills/ti-synthengine/references/studio-validation.json +0 -6202
  44. package/skills/ti-synthengine/references/unified-bypass-performance.json +0 -22425
  45. package/skills/ti-synthengine/references/unified-validation.json +0 -314
@@ -1,162 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "date": "2026-10-23",
4
- "moduleVersion": "1.0.0 beta",
5
- "status": "corrected-for-tested-Sim80-headphone-case",
6
- "acceptanceComplete": false,
7
- "listening": {
8
- "accepted": true,
9
- "reviewer": "Cesar",
10
- "replyTranslation": "Clean, no perceptible distortion.",
11
- "scenario": "Real Sim80, live synthesis, headphones, eight-output candidate",
12
- "scope": "Subjective acceptance of this short scene, not every voice/effect or a ten-minute maximum-load pass."
13
- },
14
- "implementation": {
15
- "platform": "Android ARM64",
16
- "change": "Reuse FIR coefficients across eight consecutive samples per voice while preserving each sample partial-sum and reduction order. Bound tiles at sequence attacks. Keep the previous stereo and other-ABI paths.",
17
- "gainQualityOrVoiceLimitsChanged": false,
18
- "outputBufferChanged": false,
19
- "publicApiChanged": false,
20
- "diagnosticInterfacesInProduction": false
21
- },
22
- "comparisonWithIOS": {
23
- "sharedBinauralAlgorithm": true,
24
- "ipadMeasuredRate": 44100,
25
- "ipadMeasuredBlockFrames": 1024,
26
- "androidMeasuredRate": 48000,
27
- "androidMeasuredBlockFrames": 256,
28
- "ipadTaps": 128,
29
- "androidTaps": 140,
30
- "limits": "Different measured hardware/output configurations; larger blocks alone do not cure sustained CPU overload."
31
- },
32
- "profilingBeforeCorrection": {
33
- "route": "speaker",
34
- "volumeIndex": 80,
35
- "callbacks": 1801,
36
- "xruns": 73,
37
- "cpuBlocksAboveDeadline": 455,
38
- "withoutOnsetCpuBlocksAboveDeadline": 357,
39
- "onsetCpuShare": 0.004458489684975288,
40
- "spatialFirSamples": 1017,
41
- "audioThreadSamples": 1566,
42
- "scope": "Actual Sim80, flat250HzCPU sampling with inline symbol attribution, not DSP-only isolation."
43
- },
44
- "fourOutputCandidate": {
45
- "speakerXruns": 1,
46
- "speakerCpuP95LoadInterval": [
47
- 1.205,
48
- 1.21
49
- ],
50
- "manualHeadphoneXruns": 37,
51
- "manualHeadphoneVolumeIndex": 120,
52
- "manualHeadphoneCpuP95LoadInterval": [
53
- 1.62,
54
- 1.625
55
- ],
56
- "listening": "Improved but still a couple of perceived distorted moments.",
57
- "limits": "Speaker profiling and manual headphone capture are distinct runs/routes, not a controlled route comparison."
58
- },
59
- "eightOutputCapture": {
60
- "device": "Android CPH2639",
61
- "route": "wired headphones",
62
- "volumeIndex": 120,
63
- "volumeMax": 160,
64
- "sampleRate": 48000,
65
- "callbackFrames": 256,
66
- "burstFrames": 256,
67
- "bufferFrames": 512,
68
- "frames": 480000,
69
- "capturedSeconds": 10,
70
- "xruns": 0,
71
- "routeStayedValid": true,
72
- "callbacks": 1875,
73
- "maxVoices": 32,
74
- "maxTails": 25,
75
- "wallP95LoadInterval": [
76
- 1.02,
77
- 1.025
78
- ],
79
- "cpuP95LoadInterval": [
80
- 0.965,
81
- 0.97
82
- ],
83
- "wallMaxNs": 9150154,
84
- "cpuMaxNs": 8857462,
85
- "wallBlocksAboveDeadline": 104,
86
- "cpuBlocksAboveDeadline": 80,
87
- "clockErrors": 0,
88
- "pcmHash": "7f89b839f15ce44d",
89
- "nonFiniteFrames": 0,
90
- "peakLeft": 0.8500000238418579,
91
- "peakRight": 0.8500000238418579,
92
- "scope": "Private instrumented module with PCM capture/clocks and250Hzsampling. Observed output delivery passed this ten-second scene; callback overruns still prevent a strict render-deadline pass."
93
- },
94
- "verification": {
95
- "streamingVsBlocked": "120000 standalone frames/sixrates8\u2013192k, ramps, wrap and complete state bit-identical on Android; varied short blocks also pass C and forcedAndroidNEON on ARM host.",
96
- "renderer": "135onset/fullstate,20fractionaltransport/fullstate,9legacy renders, spatial regression and fullheld regression match or pass on ARM host.",
97
- "review": "Independent source review found no critical/important issue in four/eight windows, clocks, tails, sends, stereo guard or bounded stack.",
98
- "physicalAcceptance": false,
99
- "stereoBypassChange": {
100
- "scope": "One stereo voice, new fix versus immediately preceding205a renderer, same warmed process, both4slots; previous937screen separate",
101
- "pairs": 10,
102
- "medianRenderRatio": 1.0113211982131405,
103
- "medianP95Ratio": 1.0053333333333334,
104
- "ratios": [
105
- 1.0005653275429052,
106
- 1.0126349702109787,
107
- 1.0196281518419976,
108
- 1.0126315815643214,
109
- 1.0206466219701242,
110
- 1.0100108148619595,
111
- 0.996436735715484,
112
- 1.016768104985823,
113
- 1.0091023055656232,
114
- 0.9846528665539155
115
- ],
116
- "bitExact": true
117
- },
118
- "finalProductionClockHeldLegacy": "Byte-identical to the pre-correction renderer after restoring lazy scalar clock reads and forced inlining."
119
- },
120
- "productionSourceSha256": {
121
- "android/jni/SynthOboeEngine.cpp": "cc7f050084871a79cb028b48081a8e51158a3a69f876c59e0f9de1a6ea7ecac6",
122
- "shared/synth_spatial.h": "d628ef9c60776be463c5dc45a972c9f9bbb0d183656f0dc177211038ba39d75a",
123
- "tests/spatial_regression.c": "2cf768e4dc18035010819b74837921c8b27ae391670acde0bf56197793c655c0"
124
- },
125
- "measuredPrivateArtifact": {
126
- "apkSha256": "324dc75a4b6caddbf6205915287ad90f68f0c735ac9d395ffb6bfb4821cbd934",
127
- "aarSha256": "156156df699eabc8647598b5da7fa4f0d20014c3a765b04120a43a0800e40d47",
128
- "sourceSha256": {
129
- "android/jni/SynthOboeEngine.cpp": "8b0fc7eb99bc1f0b1d76643776fcb7e8eb540f4ba5cd9379313e7f615670e1b0",
130
- "shared/synth_spatial.h": "9184a9d81de04c5216c52b96a8860c33bfd3492081089b34df35743d51e90bbb"
131
- },
132
- "nativeHashes": {
133
- "lib/arm64-v8a/liboboe.so": "2696179a9e302f4047ce04146de39f64930bdfaa75d51da63bc7af1a228b8d73",
134
- "lib/arm64-v8a/libti.synthengine.so": "3c04735e3f4a60b4d5218fadb192121978c30e105f02115383ba68120635c272",
135
- "lib/armeabi-v7a/liboboe.so": "6eebcff8923f11f79d10bd3404afccab9c8d9ba629709334fc76663894b0e914",
136
- "lib/armeabi-v7a/libti.synthengine.so": "b07a4b3d2e1d32b71a5267cd47d52024f9f8414d2531867ebcb0281548402919",
137
- "lib/x86/liboboe.so": "8846bdc73a1ad884e017c7f3082042184bb8c9876651f48e77faef24f7c7eec4",
138
- "lib/x86/libti.synthengine.so": "b13a3adcc8681090d6c305ca7436d60e367ffbcabce0fec0c64861925fcb28cc",
139
- "lib/x86_64/liboboe.so": "f1168819d87b8571bb7c8147176854a2e5783bae6e35d2a420d99dc19692db94",
140
- "lib/x86_64/libti.synthengine.so": "c008b2eb71b38e271a39fc3c5a1d70698e60bd06da578c723637890291970e98"
141
- }
142
- },
143
- "rawEvidenceArchive": "android-sim80-correction-evidence.zip",
144
- "remaining": [
145
- "Android ten-minute maximum-load criterion is still open; do not reinterpret this short Sim80 result as that acceptance.",
146
- "The measured candidate still has80CPU/104wall callbacks above one deadline.",
147
- "Whole-process192k memory, prior one-voice bypass screen, Android Sim20 renderer elapsed work and strict Sim80 presentation matching retain their prior limits."
148
- ],
149
- "publication": "Beta1.0.0, no release or push.",
150
- "rawEvidenceArchiveSha256": "faff448de458ef0cb5299e234177f17a914f7801c27581ab969a9010a68c3c5f",
151
- "productionAndroidBuild": {
152
- "aarSha256": "7e98bf4fbc6fbe4d1f4a5d9f5a561137522e831fb54480ae0310dd22b60a0c2c",
153
- "nativeSoSha256": {
154
- "arm64-v8a": "631aaca4f4dabcedc33cf3bf1b23601de3da6291448a299e195cbf5b07f526e3",
155
- "armeabi-v7a": "1a4100a25f920784dfc5bda91f30fa6f405e2b85deee51a8b14ce5502a2cf47c",
156
- "x86": "8f4545e24cb7f35220445b6e8c04f561bbf5a6cbf55b755c8e8aeffe923e748d",
157
- "x86_64": "96a8c5224129de2cd215c9d3b6a2cc50c08865f2de35bf95274026ea452a4a57"
158
- },
159
- "realFourAbiBuild": true,
160
- "diagnosticCodeAbsent": true
161
- }
162
- }
@@ -1,19 +0,0 @@
1
- > Source snapshot: official TiSynthEngine documentation at commit `ec04f4e634075c41b55f66279eabcd78b9652d58` (2026-11-02). Published module 1.1.0; public API 1.1.0. Upstream `documentation/audio-pipeline-validation.md` SHA-256: `7359d85de63e9fe94f85477e03a22fc1531c8acaabe30333e7ff2515cc5ec3e9`.
2
-
3
- # Audio pipeline correction
4
-
5
- Version 1.0.2 removes final-output retention on Android and iOS while retaining one stereo output per platform, fixed event gains, waveform profiles and chord compensation. It adds no public options. Existing envelopes, release tails and parameter transitions keep their roles.
6
-
7
- The final protector responds immediately to each stereo sample peak. This removes the old mandatory 10 ms delay, at the cost of a different overload response. Heavy mixes can audibly change waveform shape. Protection recovers with a 100 ms exponential time constant. The 0.85/0.70 ceilings describe sample values, not inter-sample peaks or speaker behavior. The master now follows the same linear 10 ms ramp on both platforms. iOS consumers requesting `raw` now receive its documented gain instead of the conservative gain; review those mixes.
8
-
9
- `tests/output_core_regression.c` checks linked impulses, silence/reset, bounded recovery and exact/retargeted master ramps at 16, 44.1, 48, 96 and 192 kHz (absolute double tolerance 1e-12). Android host checks compile the real C++ callback. Apple checks extract the actual callback, helpers and start validation/profile selection, replacing device/Titanium plumbing. The historical Java DSP model is not an oracle for native sound. CI runs production output checks alongside transport, effects, spatial and statistics regressions.
10
-
11
- `tools/calibrate_studio.py` (Android by default, `--platform ios` for Apple) reports all 37 Studio presets individually across independent low/mid/high notes, grouped chords, unisons and overlapping releases at 1, 2, 4, 8, 16 and 32 voices. Its recommendation uses the maximum measured pre-protection peak for the declared usual configuration (1-8 voices) to target −6 dBFS, with 0.01 dB measurement margin and the public volume limit. It reports 16/32-voice stress separately. The recommendations apply to the measured configuration. Event gains remain fixed, and other workloads can exceed the target. Effects and new LFOs are disabled in preset calibration. It never edits Studio.
12
-
13
- The before/after host comparison covered 80 PCM pairs across both renderers at five sample rates. After aligning the former output delay, all 40 cases without overload preserved the waveform within an absolute float tolerance of 1e-7. Overload cases remained finite and within the sample ceiling; their waveform differences were measured. Matched host benchmarks found no median callback-time increase. These measurements do not establish whole-app CPU use or physical output latency.
14
-
15
- Physical comparisons used Studio and Frontier on an OPPO CPH2639 running Android 16 and an iPad. Studio checks covered its 37 presets, short notes, Hold, chords, repetitions, sequences, effects and spatial controls. Frontier checks covered gameplay with simultaneous sounds. The same native candidate binaries were then integrated into the real Studio and Frontier apps, which built and launched on both devices. Their presets and gains were preserved. Route-wide latency, Bluetooth behavior and extended maximum-load acceptance remain outside these results.
16
-
17
- Android can report an underrun during stream startup. An initial matched repeat recorded it in four of six starts for both the original and candidate, with no additional underruns during the subsequent note/chord checks. Further silent tests reproduced the symptom with an independent Oboe 1.11.0 callback that only writes zeros. The startup condition remains unresolved; the counter is retained. Silent tests do not establish whether it causes an audible defect. Oboe's open [LatencyTuner proposal](https://github.com/google/oboe/pull/2432) discusses how startup XRuns affect buffer tuning, but does not eliminate their cause. TiSynthEngine does not use that tuner.
18
-
19
- PCM, original and candidate packages, commands, hashes and device traces are retained outside the app repositories. The physical results apply to the tested devices and scenarios.