zeropoint-node 1.0.7 → 1.0.8

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 (151) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/CITATION.cff +1 -1
  3. package/README.md +1 -1
  4. package/package.json +4 -2
  5. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.7.ts +0 -60
  6. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.ts +0 -60
  7. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.ts +0 -60
  8. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.3.6.9.trinity.ts +0 -79
  9. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.9d.dashboard.ts +0 -179
  10. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.adapters.ts +0 -96
  11. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.analog.color.photography.ts +0 -783
  12. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.av.ts +0 -73
  13. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.browser.ts +0 -409
  14. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.chain.of.events.ts +0 -159
  15. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cleanup.ts +0 -116
  16. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.dimensions.ts +0 -597
  17. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.test.ts +0 -491
  18. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.ts +0 -519
  19. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.file.ts +0 -65
  20. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.i.ts +0 -45
  21. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.matrix.ts +0 -75
  22. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.trinity.ts +0 -41
  23. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.universal.linking.ts +0 -1081
  24. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.command.cmyk.ts +0 -46
  25. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.compression.ts +0 -55
  26. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.integration.ts +0 -743
  27. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.ts +0 -26
  28. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.crypto.ts +0 -53
  29. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.css.ts +0 -64
  30. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cursor.ts +0 -56
  31. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decompression.ts +0 -60
  32. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decoqubit.holographic.hypercomputer.ts +0 -888
  33. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.digital.color.photography.ts +0 -926
  34. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.dimension.ts +0 -44
  35. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.encryption.ts +0 -44
  36. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.experience.ts +0 -28
  37. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.feel.ts +0 -43
  38. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.flute.ts +0 -336
  39. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.font.ts +0 -53
  40. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.test.ts +0 -523
  41. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.ts +0 -594
  42. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.frequency.healing.ts +0 -88
  43. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gateway.transformation.ts +0 -650
  44. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.generate.matrix.ts +0 -76
  45. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gods.spirit.magnetometer.ts +0 -879
  46. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.harmonization.status.ts +0 -754
  47. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.hear.ts +0 -41
  48. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.html.body.ts +0 -90
  49. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.body.ts +0 -89
  50. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.design.trinity.ts +0 -70
  51. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.browse.ts +0 -41
  52. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.can.ts +0 -69
  53. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.died.ts +0 -32
  54. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.follow.the.path.ts +0 -90
  55. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.go.ts +0 -68
  56. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.harmonized.ts +0 -304
  57. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.heart.ts +0 -26
  58. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.meta.ts +0 -23
  59. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.motion.ts +0 -27
  60. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.scroll.ts +0 -34
  61. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.search.ts +0 -22
  62. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.sequence.ts +0 -281
  63. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.smell.ts +0 -27
  64. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.state.ts +0 -28
  65. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.stream.ts +0 -106
  66. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.taste.ts +0 -27
  67. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.touch.screen.ts +0 -34
  68. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.trinity.healing.ts +0 -386
  69. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.write.ts +0 -11
  70. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.icon.ts +0 -109
  71. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imagination.integration.ts +0 -74
  72. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imperial.test.ts +0 -389
  73. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infinity.ts +0 -14
  74. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infusion.ts +0 -97
  75. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.integer.harmonics.ts +0 -443
  76. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.test.ts +0 -475
  77. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.ts +0 -646
  78. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.streams.ts +0 -130
  79. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.meta.observation.ts +0 -693
  80. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.mobius.ts +0 -12
  81. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.multiverse.ts +0 -31
  82. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.balance.ts +0 -703
  83. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.explosion.ts +0 -728
  84. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.app.ts +0 -14
  85. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.bus.ts +0 -11
  86. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.ml.ts +0 -9
  87. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.overlay.visual.controller.ts +0 -116
  88. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.paths.ts +0 -10
  89. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.decoding.ts +0 -123
  90. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.trinity.ts +0 -79
  91. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.prime.numbers.squared.ts +0 -871
  92. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.collision.ts +0 -666
  93. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.entanglement.ts +0 -50
  94. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.trinity.ts +0 -59
  95. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.renderer.webgl.ts +0 -99
  96. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.resolve.ts +0 -820
  97. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rife.frequency.ts +0 -74
  98. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.3d.ts +0 -73
  99. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.omnidimension.ts +0 -187
  100. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.overlay.ts +0 -46
  101. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.ts +0 -58
  102. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.router.ts +0 -61
  103. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.geometry.integers.ts +0 -625
  104. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.test.ts +0 -314
  105. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.see.ts +0 -39
  106. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sequence.embodiment.ts +0 -326
  107. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.service.worker.ts +0 -53
  108. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.space.ts +0 -53
  109. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.spiral.ts +0 -75
  110. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.superfluid.mobius.circuit.ts +0 -868
  111. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.terminal.ts +0 -167
  112. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.test.ts +0 -97
  113. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.think.ts +0 -43
  114. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.three.ts +0 -112
  115. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.body.mind.will.ts +0 -2
  116. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.breath.ts +0 -2
  117. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.healing.ts +0 -110
  118. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.ui.ts +0 -92
  119. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.visual.ts +0 -156
  120. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.truly.living.ui.ts +0 -269
  121. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.overlay.ts +0 -25
  122. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.streams.ts +0 -263
  123. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.test.ts +0 -87
  124. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.three.ts +0 -1141
  125. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.unification.hd.rodin.ts +0 -77
  126. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.universe.ts +0 -43
  127. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.uroboros.test.ts +0 -28
  128. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.math.ts +0 -74
  129. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.constants.ts +0 -91
  130. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.ts +0 -59
  131. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.scanner.ts +0 -41
  132. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.science.extract.ts +0 -30
  133. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.ui.ts +0 -64
  134. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vector.ts +0 -70
  135. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.wave.particle.duality.test.ts +0 -29
  136. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.math.ts +0 -506
  137. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.pure.math.ts +0 -546
  138. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.test.ts +0 -452
  139. package/src/0/3/6/9/1/2/4/8/7/5/1/pattern-knowledge.ts +0 -209
  140. package/src/0/3/6/9/1/2/4/8/7/5/a432.experience.ts +0 -22
  141. package/src/0/3/6/9/1/2/4/8/7/a432.experience.ts +0 -19
  142. package/src/0/3/6/9/1/2/4/8/a432.experience.ts +0 -22
  143. package/src/0/3/6/9/1/2/4/a432.experience.ts +0 -22
  144. package/src/0/3/6/9/1/2/a432.experience.ts +0 -22
  145. package/src/0/3/6/9/1/a432.experience.ts +0 -22
  146. package/src/0/3/6/9/a432.experience.ts +0 -22
  147. package/src/0/3/6/a432.experience.ts +0 -22
  148. package/src/0/3/a432.experience.ts +0 -22
  149. package/src/0/3/relation.ts +0 -148
  150. package/src/index.ts +0 -146
  151. package/src/zero-entropy-demo.ts +0 -319
@@ -1,443 +0,0 @@
1
- /**
2
- * A432 Integer Harmonics Module
3
- * Pure integer arithmetic for harmonic calculations
4
- * No floating point operations - all exact mathematics
5
- */
6
-
7
- import { abs } from './a432.algebra.ts'
8
- import { legacyDigitalRoot } from './a432.roots.ts'
9
- // ============================================================================
10
- // INTEGER FREQUENCY TABLES
11
- // ============================================================================
12
-
13
- /**
14
- * All frequencies stored as integers (Hz * 10000 for precision)
15
- * This allows 4 decimal places of precision without using floats
16
- */
17
- export const INTEGER_FREQUENCIES = {
18
- // Note frequencies in A432 tuning (Hz * 10000)
19
- C0: 161280, // 16.128 Hz
20
- D0: 181020, // 18.102 Hz
21
- E0: 203190, // 20.319 Hz
22
- F0: 215270, // 21.527 Hz
23
- G0: 241920, // 24.192 Hz
24
- A0: 270000, // 27.000 Hz
25
- B0: 303750, // 30.375 Hz
26
-
27
- C1: 322560, // 32.256 Hz
28
- D1: 362040, // 36.204 Hz
29
- E1: 406380, // 40.638 Hz
30
- F1: 430540, // 43.054 Hz
31
- G1: 483840, // 48.384 Hz
32
- A1: 540000, // 54.000 Hz
33
- B1: 607500, // 60.750 Hz
34
-
35
- C2: 645120, // 64.512 Hz
36
- D2: 724080, // 72.408 Hz
37
- E2: 812760, // 81.276 Hz
38
- F2: 861080, // 86.108 Hz
39
- G2: 967680, // 96.768 Hz
40
- A2: 1080000, // 108.000 Hz
41
- B2: 1215000, // 121.500 Hz
42
-
43
- C3: 1290240, // 129.024 Hz
44
- D3: 1448160, // 144.816 Hz
45
- E3: 1625520, // 162.552 Hz
46
- F3: 1722160, // 172.216 Hz
47
- G3: 1935360, // 193.536 Hz
48
- A3: 2160000, // 216.000 Hz
49
- B3: 2430000, // 243.000 Hz
50
-
51
- C4: 2580480, // 258.048 Hz (Middle C in A432)
52
- D4: 2896320, // 289.632 Hz
53
- E4: 3251040, // 325.104 Hz
54
- F4: 3444320, // 344.432 Hz
55
- G4: 3870720, // 387.072 Hz
56
- A4: 4320000, // 432.000 Hz (A432)
57
- B4: 4860000, // 486.000 Hz
58
-
59
- C5: 5160960, // 516.096 Hz
60
- D5: 5792640, // 579.264 Hz
61
- E5: 6502080, // 650.208 Hz
62
- F5: 6888640, // 688.864 Hz
63
- G5: 7741440, // 774.144 Hz
64
- A5: 8640000, // 864.000 Hz
65
- B5: 9720000, // 972.000 Hz
66
- } as const;
67
-
68
- // ============================================================================
69
- // INTERVAL RATIOS AS INTEGER PAIRS
70
- // ============================================================================
71
-
72
- export const INTERVAL_RATIOS = {
73
- // Just intonation intervals as [numerator, denominator]
74
- UNISON: [1, 1],
75
- MINOR_SECOND: [16, 15],
76
- MAJOR_SECOND: [9, 8],
77
- MINOR_THIRD: [6, 5],
78
- MAJOR_THIRD: [5, 4],
79
- PERFECT_FOURTH: [4, 3],
80
- AUGMENTED_FOURTH: [45, 32],
81
- DIMINISHED_FIFTH: [64, 45],
82
- PERFECT_FIFTH: [3, 2],
83
- MINOR_SIXTH: [8, 5],
84
- MAJOR_SIXTH: [5, 3],
85
- MINOR_SEVENTH: [9, 5],
86
- MAJOR_SEVENTH: [15, 8],
87
- OCTAVE: [2, 1],
88
-
89
- // Pythagorean intervals
90
- PYTHAGOREAN_SECOND: [9, 8],
91
- PYTHAGOREAN_THIRD: [81, 64],
92
- PYTHAGOREAN_FOURTH: [4, 3],
93
- PYTHAGOREAN_FIFTH: [3, 2],
94
- PYTHAGOREAN_SIXTH: [27, 16],
95
- PYTHAGOREAN_SEVENTH: [243, 128],
96
-
97
- // Harmonic series intervals
98
- HARMONIC_2: [2, 1],
99
- HARMONIC_3: [3, 1],
100
- HARMONIC_4: [4, 1],
101
- HARMONIC_5: [5, 1],
102
- HARMONIC_6: [6, 1],
103
- HARMONIC_7: [7, 1],
104
- HARMONIC_8: [8, 1],
105
- HARMONIC_9: [9, 1],
106
- } as const;
107
-
108
- // ============================================================================
109
- // SACRED NUMBER SEQUENCES
110
- // ============================================================================
111
-
112
- export const SACRED_SEQUENCES = {
113
- // Fibonacci sequence
114
- FIBONACCI: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987],
115
-
116
- // Lucas numbers
117
- LUCAS: [2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843],
118
-
119
- // Pell numbers
120
- PELL: [0, 1, 2, 5, 12, 29, 70, 169, 408, 985, 2378, 5741],
121
-
122
- // Tribonacci sequence
123
- TRIBONACCI: [0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504],
124
-
125
- // Perfect numbers
126
- PERFECT: [6, 28, 496, 8128, 33550336],
127
-
128
- // Mersenne primes
129
- MERSENNE: [3, 7, 31, 127, 8191, 131071, 524287, 2147483647],
130
-
131
- // Triangular numbers
132
- TRIANGULAR: [1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120],
133
-
134
- // Square numbers
135
- SQUARE: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225],
136
-
137
- // Pentagonal numbers
138
- PENTAGONAL: [1, 5, 12, 22, 35, 51, 70, 92, 117, 145, 176, 210, 247, 287],
139
-
140
- // Hexagonal numbers
141
- HEXAGONAL: [1, 6, 15, 28, 45, 66, 91, 120, 153, 190, 231, 276, 325],
142
- } as const;
143
-
144
- // ============================================================================
145
- // INTEGER HARMONIC CALCULATOR CLASS
146
- // ============================================================================
147
-
148
- export class IntegerHarmonics {
149
- /**
150
- * Calculate harmonic series using integer math
151
- * @param fundamental Base frequency as integer
152
- * @param count Number of harmonics to generate
153
- */
154
- static harmonicSeries(fundamental: number, count: number): number[] {
155
- const series: number[] = [];
156
- for (let n = 1; n <= count; n++) {
157
- series.push(fundamental * n);
158
- }
159
- return series;
160
- }
161
-
162
- /**
163
- * Calculate subharmonic series (undertones)
164
- * @param fundamental Base frequency as integer
165
- * @param count Number of subharmonics
166
- */
167
- static subharmonicSeries(fundamental: number, count: number): number[] {
168
- const series: number[] = [];
169
- for (let n = 1; n <= count; n++) {
170
- series.push(fundamental / n);
171
- }
172
- return series;
173
- }
174
-
175
- /**
176
- * Apply interval ratio to frequency
177
- * @param frequency Base frequency as integer
178
- * @param numerator Ratio numerator
179
- * @param denominator Ratio denominator
180
- */
181
- static applyInterval(frequency: number, numerator: number, denominator: number): number {
182
- return (frequency * numerator) / denominator;
183
- }
184
-
185
- /**
186
- * Calculate beat frequency between two integer frequencies
187
- */
188
- static beatFrequency(f1: number, f2: number): number {
189
- return abs(f1 - f2);
190
- }
191
-
192
- /**
193
- * Calculate combination tones
194
- */
195
- static combinationTones(f1: number, f2: number): {
196
- sum: number;
197
- difference: number;
198
- product: number;
199
- } {
200
- return {
201
- sum: f1 + f2,
202
- difference: abs(f1 - f2),
203
- product: f1 * f2,
204
- };
205
- }
206
-
207
- /**
208
- * Find common harmonics between two fundamentals
209
- */
210
- static commonHarmonics(f1: number, f2: number, maxHarmonic: number): number[] {
211
- const harmonics1 = this.harmonicSeries(f1, maxHarmonic);
212
- const harmonics2 = this.harmonicSeries(f2, maxHarmonic);
213
-
214
- const common: number[] = [];
215
- for (const h1 of harmonics1) {
216
- if (harmonics2.includes(h1)) {
217
- common.push(h1);
218
- }
219
- }
220
- return common;
221
- }
222
-
223
- /**
224
- * Calculate consonance rating based on ratio simplicity
225
- * Lower numbers = more consonant
226
- */
227
- static consonanceRating(f1: number, f2: number): number {
228
- const gcd = this.gcd(f1, f2);
229
- const ratio1 = f1 / gcd;
230
- const ratio2 = f2 / gcd;
231
- return ratio1 + ratio2;
232
- }
233
-
234
- /**
235
- * Greatest Common Divisor
236
- */
237
- static gcd(a: number, b: number): number {
238
- while (b !== 0) {
239
- const temp = b;
240
- b = a % b;
241
- a = temp;
242
- }
243
- return a;
244
- }
245
-
246
- /**
247
- * Least Common Multiple
248
- */
249
- static lcm(a: number, b: number): number {
250
- return (a * b) / this.gcd(a, b);
251
- }
252
-
253
- /**
254
- * Find convergence point of multiple frequencies
255
- */
256
- static convergencePoint(frequencies: number[]): number {
257
- if (frequencies.length === 0) return 0;
258
- let result = frequencies[0];
259
- for (let i = 1; i < frequencies.length; i++) {
260
- result = this.lcm(result, frequencies[i]);
261
- }
262
- return result;
263
- }
264
-
265
- /**
266
- * Calculate harmonic mean without decimals
267
- */
268
- static harmonicMean(values: number[]): number {
269
- if (values.length === 0) return 0;
270
-
271
- // Find LCM to avoid fractions
272
- let lcmValue = values[0];
273
- for (let i = 1; i < values.length; i++) {
274
- lcmValue = this.lcm(lcmValue, values[i]);
275
- }
276
-
277
- // Calculate sum of LCM/value
278
- let sum = 0;
279
- for (const value of values) {
280
- sum += lcmValue / value;
281
- }
282
-
283
- return (values.length * lcmValue) / sum;
284
- }
285
-
286
- /**
287
- * Generate chord frequencies
288
- */
289
- static chord(root: number, intervals: ReadonlyArray<readonly [number, number]>): number[] {
290
- const frequencies = [root];
291
- for (const [num, den] of intervals) {
292
- frequencies.push(this.applyInterval(root, num, den));
293
- }
294
- return frequencies;
295
- }
296
-
297
- /**
298
- * Major triad in just intonation
299
- */
300
- static majorTriad(root: number): number[] {
301
- return this.chord(root, [
302
- INTERVAL_RATIOS.MAJOR_THIRD,
303
- INTERVAL_RATIOS.PERFECT_FIFTH,
304
- ]);
305
- }
306
-
307
- /**
308
- * Minor triad in just intonation
309
- */
310
- static minorTriad(root: number): number[] {
311
- return this.chord(root, [
312
- INTERVAL_RATIOS.MINOR_THIRD,
313
- INTERVAL_RATIOS.PERFECT_FIFTH,
314
- ]);
315
- }
316
-
317
- /**
318
- * Calculate temperament comma
319
- * Pythagorean comma = (3/2)^12 / 2^7
320
- */
321
- static pythagoreanComma(): [number, number] {
322
- // (3/2)^12 = 3^12 / 2^12 = 531441 / 4096
323
- // 2^7 = 128
324
- // Comma = 531441 / (4096 * 128) = 531441 / 524288
325
- return [531441, 524288];
326
- }
327
-
328
- /**
329
- * Syntonic comma (81/80)
330
- */
331
- static syntonicComma(): [number, number] {
332
- return [81, 80];
333
- }
334
-
335
- /**
336
- * Calculate cents between two frequencies (integer approximation)
337
- * cents = 1200 * log2(f2/f1)
338
- * Using integer math: multiply by 10000 for precision
339
- */
340
- static cents(f1: number, f2: number): number {
341
- // Approximate log2 using integer math
342
- // Find n such that 2^n is close to f2/f1
343
- let ratio = (f2 * 10000) / f1;
344
- let cents = 0;
345
- const power = 10000; // 2^0 * 10000
346
-
347
- // Binary search for log2
348
- for (let i = 11; i >= -11; i--) {
349
- const testPower = i > 0 ? power * (1 << i) : power / (1 << -i);
350
- if (ratio >= testPower) {
351
- cents += i * 100; // Each octave = 1200 cents
352
- ratio = (ratio * 10000) / testPower;
353
- }
354
- }
355
-
356
- return cents;
357
- }
358
- }
359
-
360
- // ============================================================================
361
- // VORTEX MATHEMATICS WITH INTEGERS
362
- // ============================================================================
363
-
364
- export class VortexIntegerMath {
365
- /**
366
- * Digital root using modulo 9
367
- */
368
- static digitalRoot(n: number): number {
369
- return legacyDigitalRoot(n)
370
- }
371
-
372
- /**
373
- * Vortex doubling sequence
374
- */
375
- static vortexDouble(n: number): number {
376
- return this.digitalRoot(n * 2);
377
- }
378
-
379
- /**
380
- * Vortex halving sequence
381
- */
382
- static vortexHalve(n: number): number {
383
- // For halving, we need to handle odd numbers
384
- // Use the pattern: 1→5→7→8→4→2→1
385
- const sequence = [1, 5, 7, 8, 4, 2];
386
- const current = this.digitalRoot(n);
387
- const index = sequence.indexOf(current);
388
- if (index === -1) return current;
389
- return sequence[(index + 1) % sequence.length];
390
- }
391
-
392
- /**
393
- * Generate vortex pattern for number
394
- */
395
- static vortexPattern(n: number, steps: number): number[] {
396
- const pattern: number[] = [];
397
- let current = n;
398
- for (let i = 0; i < steps; i++) {
399
- pattern.push(this.digitalRoot(current));
400
- current = this.vortexDouble(current);
401
- }
402
- return pattern;
403
- }
404
-
405
- /**
406
- * Check if number is on the 3-6-9 axis
407
- */
408
- static isOnAxis(n: number): boolean {
409
- const root = this.digitalRoot(n);
410
- return root === 3 || root === 6 || root === 9;
411
- }
412
-
413
- /**
414
- * Calculate vortex flow between two numbers
415
- */
416
- static vortexFlow(from: number, to: number): number[] {
417
- const fromRoot = this.digitalRoot(from);
418
- const toRoot = this.digitalRoot(to);
419
-
420
- const path: number[] = [fromRoot];
421
- let current = fromRoot;
422
-
423
- // Find path through vortex
424
- for (let i = 0; i < 9 && current !== toRoot; i++) {
425
- current = this.vortexDouble(current);
426
- path.push(current);
427
- }
428
-
429
- return path;
430
- }
431
- }
432
-
433
- // ============================================================================
434
- // EXPORT ALL
435
- // ============================================================================
436
-
437
- export default {
438
- INTEGER_FREQUENCIES,
439
- INTERVAL_RATIOS,
440
- SACRED_SEQUENCES,
441
- IntegerHarmonics,
442
- VortexIntegerMath,
443
- };