rlo-engine 1.0.3

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 (154) hide show
  1. package/README.md +493 -0
  2. package/dist/AudioEffects.d.ts +16 -0
  3. package/dist/AudioEffects.d.ts.map +1 -0
  4. package/dist/AudioEffects.js +41 -0
  5. package/dist/AudioEffects.js.map +1 -0
  6. package/dist/Instruments/Analog/AnalogSynthBase.d.ts +22 -0
  7. package/dist/Instruments/Analog/AnalogSynthBase.d.ts.map +1 -0
  8. package/dist/Instruments/Analog/AnalogSynthBase.js +30 -0
  9. package/dist/Instruments/Analog/AnalogSynthBase.js.map +1 -0
  10. package/dist/Instruments/Analog/BassSynth.d.ts +14 -0
  11. package/dist/Instruments/Analog/BassSynth.d.ts.map +1 -0
  12. package/dist/Instruments/Analog/BassSynth.js +25 -0
  13. package/dist/Instruments/Analog/BassSynth.js.map +1 -0
  14. package/dist/Instruments/Analog/ChiptuneSynth.d.ts +14 -0
  15. package/dist/Instruments/Analog/ChiptuneSynth.d.ts.map +1 -0
  16. package/dist/Instruments/Analog/ChiptuneSynth.js +19 -0
  17. package/dist/Instruments/Analog/ChiptuneSynth.js.map +1 -0
  18. package/dist/Instruments/Analog/FMSynth.d.ts +15 -0
  19. package/dist/Instruments/Analog/FMSynth.d.ts.map +1 -0
  20. package/dist/Instruments/Analog/FMSynth.js +23 -0
  21. package/dist/Instruments/Analog/FMSynth.js.map +1 -0
  22. package/dist/Instruments/Analog/FormantSynth.d.ts +14 -0
  23. package/dist/Instruments/Analog/FormantSynth.d.ts.map +1 -0
  24. package/dist/Instruments/Analog/FormantSynth.js +26 -0
  25. package/dist/Instruments/Analog/FormantSynth.js.map +1 -0
  26. package/dist/Instruments/Analog/LeadSynth.d.ts +13 -0
  27. package/dist/Instruments/Analog/LeadSynth.d.ts.map +1 -0
  28. package/dist/Instruments/Analog/LeadSynth.js +21 -0
  29. package/dist/Instruments/Analog/LeadSynth.js.map +1 -0
  30. package/dist/Instruments/Analog/OrganSynth.d.ts +13 -0
  31. package/dist/Instruments/Analog/OrganSynth.d.ts.map +1 -0
  32. package/dist/Instruments/Analog/OrganSynth.js +24 -0
  33. package/dist/Instruments/Analog/OrganSynth.js.map +1 -0
  34. package/dist/Instruments/Analog/PadSynth.d.ts +14 -0
  35. package/dist/Instruments/Analog/PadSynth.d.ts.map +1 -0
  36. package/dist/Instruments/Analog/PadSynth.js +22 -0
  37. package/dist/Instruments/Analog/PadSynth.js.map +1 -0
  38. package/dist/Instruments/Analog/ReeseBassSynth.d.ts +14 -0
  39. package/dist/Instruments/Analog/ReeseBassSynth.d.ts.map +1 -0
  40. package/dist/Instruments/Analog/ReeseBassSynth.js +22 -0
  41. package/dist/Instruments/Analog/ReeseBassSynth.js.map +1 -0
  42. package/dist/Instruments/Analog/StringSynth.d.ts +13 -0
  43. package/dist/Instruments/Analog/StringSynth.d.ts.map +1 -0
  44. package/dist/Instruments/Analog/StringSynth.js +19 -0
  45. package/dist/Instruments/Analog/StringSynth.js.map +1 -0
  46. package/dist/Instruments/Analog/WoodwindSynth.d.ts +14 -0
  47. package/dist/Instruments/Analog/WoodwindSynth.d.ts.map +1 -0
  48. package/dist/Instruments/Analog/WoodwindSynth.js +35 -0
  49. package/dist/Instruments/Analog/WoodwindSynth.js.map +1 -0
  50. package/dist/Instruments/CoreSynthBase.d.ts +29 -0
  51. package/dist/Instruments/CoreSynthBase.d.ts.map +1 -0
  52. package/dist/Instruments/CoreSynthBase.js +91 -0
  53. package/dist/Instruments/CoreSynthBase.js.map +1 -0
  54. package/dist/Instruments/Decay/AdditiveSynth.d.ts +15 -0
  55. package/dist/Instruments/Decay/AdditiveSynth.d.ts.map +1 -0
  56. package/dist/Instruments/Decay/AdditiveSynth.js +24 -0
  57. package/dist/Instruments/Decay/AdditiveSynth.js.map +1 -0
  58. package/dist/Instruments/Decay/BrassSynth.d.ts +13 -0
  59. package/dist/Instruments/Decay/BrassSynth.d.ts.map +1 -0
  60. package/dist/Instruments/Decay/BrassSynth.js +29 -0
  61. package/dist/Instruments/Decay/BrassSynth.js.map +1 -0
  62. package/dist/Instruments/Decay/ChromaticPercussionSynth.d.ts +15 -0
  63. package/dist/Instruments/Decay/ChromaticPercussionSynth.d.ts.map +1 -0
  64. package/dist/Instruments/Decay/ChromaticPercussionSynth.js +23 -0
  65. package/dist/Instruments/Decay/ChromaticPercussionSynth.js.map +1 -0
  66. package/dist/Instruments/Decay/DecaySynthBase.d.ts +23 -0
  67. package/dist/Instruments/Decay/DecaySynthBase.d.ts.map +1 -0
  68. package/dist/Instruments/Decay/DecaySynthBase.js +35 -0
  69. package/dist/Instruments/Decay/DecaySynthBase.js.map +1 -0
  70. package/dist/Instruments/Decay/ElectricGuitarSynth.d.ts +15 -0
  71. package/dist/Instruments/Decay/ElectricGuitarSynth.d.ts.map +1 -0
  72. package/dist/Instruments/Decay/ElectricGuitarSynth.js +31 -0
  73. package/dist/Instruments/Decay/ElectricGuitarSynth.js.map +1 -0
  74. package/dist/Instruments/Decay/EthnicSynth.d.ts +15 -0
  75. package/dist/Instruments/Decay/EthnicSynth.d.ts.map +1 -0
  76. package/dist/Instruments/Decay/EthnicSynth.js +21 -0
  77. package/dist/Instruments/Decay/EthnicSynth.js.map +1 -0
  78. package/dist/Instruments/Decay/GuitarSynth.d.ts +14 -0
  79. package/dist/Instruments/Decay/GuitarSynth.d.ts.map +1 -0
  80. package/dist/Instruments/Decay/GuitarSynth.js +23 -0
  81. package/dist/Instruments/Decay/GuitarSynth.js.map +1 -0
  82. package/dist/Instruments/Decay/KarplusSynth.d.ts +10 -0
  83. package/dist/Instruments/Decay/KarplusSynth.d.ts.map +1 -0
  84. package/dist/Instruments/Decay/KarplusSynth.js +34 -0
  85. package/dist/Instruments/Decay/KarplusSynth.js.map +1 -0
  86. package/dist/Instruments/Decay/PianoSynth.d.ts +14 -0
  87. package/dist/Instruments/Decay/PianoSynth.d.ts.map +1 -0
  88. package/dist/Instruments/Decay/PianoSynth.js +32 -0
  89. package/dist/Instruments/Decay/PianoSynth.js.map +1 -0
  90. package/dist/Instruments/Decay/SlapBassSynth.d.ts +15 -0
  91. package/dist/Instruments/Decay/SlapBassSynth.d.ts.map +1 -0
  92. package/dist/Instruments/Decay/SlapBassSynth.js +28 -0
  93. package/dist/Instruments/Decay/SlapBassSynth.js.map +1 -0
  94. package/dist/Instruments/ISynthInstrument.d.ts +16 -0
  95. package/dist/Instruments/ISynthInstrument.d.ts.map +1 -0
  96. package/dist/Instruments/ISynthInstrument.js +2 -0
  97. package/dist/Instruments/ISynthInstrument.js.map +1 -0
  98. package/dist/Instruments/InstrumentFactory.d.ts +2 -0
  99. package/dist/Instruments/InstrumentFactory.d.ts.map +1 -0
  100. package/dist/Instruments/InstrumentFactory.js +4 -0
  101. package/dist/Instruments/InstrumentFactory.js.map +1 -0
  102. package/dist/Instruments/Speciality/DrumSynth.d.ts +11 -0
  103. package/dist/Instruments/Speciality/DrumSynth.d.ts.map +1 -0
  104. package/dist/Instruments/Speciality/DrumSynth.js +61 -0
  105. package/dist/Instruments/Speciality/DrumSynth.js.map +1 -0
  106. package/dist/Instruments/Speciality/SoundEffectsSynth.d.ts +12 -0
  107. package/dist/Instruments/Speciality/SoundEffectsSynth.d.ts.map +1 -0
  108. package/dist/Instruments/Speciality/SoundEffectsSynth.js +27 -0
  109. package/dist/Instruments/Speciality/SoundEffectsSynth.js.map +1 -0
  110. package/dist/Instruments/Synthesizer.d.ts +15 -0
  111. package/dist/Instruments/Synthesizer.d.ts.map +1 -0
  112. package/dist/Instruments/Synthesizer.js +27 -0
  113. package/dist/Instruments/Synthesizer.js.map +1 -0
  114. package/dist/RLO-Player.d.ts +298 -0
  115. package/dist/RLO-Player.d.ts.map +1 -0
  116. package/dist/RLO-Player.js +724 -0
  117. package/dist/RLO-Player.js.map +1 -0
  118. package/dist/RLO-Transpiler.d.ts +22 -0
  119. package/dist/RLO-Transpiler.d.ts.map +1 -0
  120. package/dist/RLO-Transpiler.js +133 -0
  121. package/dist/RLO-Transpiler.js.map +1 -0
  122. package/dist/compiler.d.ts +40 -0
  123. package/dist/compiler.d.ts.map +1 -0
  124. package/dist/compiler.js +268 -0
  125. package/dist/compiler.js.map +1 -0
  126. package/dist/crush.d.ts +9 -0
  127. package/dist/crush.d.ts.map +1 -0
  128. package/dist/crush.js +20 -0
  129. package/dist/crush.js.map +1 -0
  130. package/dist/index.d.ts +36 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +59 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/midi-parser.d.ts +10 -0
  135. package/dist/midi-parser.d.ts.map +1 -0
  136. package/dist/midi-parser.js +130 -0
  137. package/dist/midi-parser.js.map +1 -0
  138. package/dist/rlo-engine.min.js +655 -0
  139. package/dist/rlo-engine.min.js.map +1 -0
  140. package/dist/rlo-engine.min.umd.js +2 -0
  141. package/dist/rlo-engine.min.umd.js.map +1 -0
  142. package/dist/types.d.ts +16 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +7 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/vite.config.d.ts +7 -0
  147. package/dist/vite.config.d.ts.map +1 -0
  148. package/dist/vite.config.js +244 -0
  149. package/dist/vite.config.js.map +1 -0
  150. package/dist/vite.config.js13k.d.ts +7 -0
  151. package/dist/vite.config.js13k.d.ts.map +1 -0
  152. package/dist/vite.config.js13k.js +72 -0
  153. package/dist/vite.config.js13k.js.map +1 -0
  154. package/package.json +50 -0
@@ -0,0 +1,72 @@
1
+ import { defineConfig } from "vite";
2
+ import zlib from "zlib";
3
+ import { minify } from "terser";
4
+ const customTerserOptions = {
5
+ ecma: 2020,
6
+ module: true,
7
+ compress: {
8
+ drop_console: true,
9
+ passes: 3,
10
+ unsafe: true,
11
+ unsafe_math: true, // Forces native JS Math methods to mangle cleanly
12
+ },
13
+ mangle: {
14
+ toplevel: true,
15
+ properties: { regex: /^_/ }, // Squashes all internal engine fields to 1 char
16
+ },
17
+ format: { comments: false },
18
+ sourceMap: true,
19
+ };
20
+ /**
21
+ * HOSTILE BYTE-SHAVING CONFIGURATION FOR JS13K
22
+ * Replaces all library convenience features with extreme dead-code elimination.
23
+ */
24
+ export default defineConfig({
25
+ define: {
26
+ // Turn OFF everything. We only want pure mathematical oscillators and a raw play function.
27
+ __ENABLE_TRANSPILER__: false, // Strip RLO Binary Decoding
28
+ __ENABLE_MUSIC_PLAYER__: false, // Strip Network Fetch & Reverb Nodes
29
+ __ENABLE_GAME_ENGINE__: false, // Strip Master Compression & SFX Bus
30
+ __ENABLE_WORKER_METRONOME__: false, // Strip Web Worker metronomes
31
+ __ENABLE_NOTE_PARSER__: false, // Strip String parsing (e.g., "C#5")
32
+ __ENABLE_STRICT_GC__: false, // Strip AudioNode Garbage Collection
33
+ },
34
+ build: {
35
+ target: "es2020",
36
+ minify: "terser",
37
+ terserOptions: customTerserOptions,
38
+ lib: {
39
+ entry: "./crush.ts",
40
+ name: "RLOEngine",
41
+ formats: ["es"], // For JS13k, we only need the ultra-lean ES module
42
+ fileName: () => "rlo-engine.min.js",
43
+ },
44
+ },
45
+ plugins: [
46
+ {
47
+ name: "force-terser-on-es-module",
48
+ apply: "build",
49
+ enforce: "post",
50
+ async renderChunk(code, chunk, options) {
51
+ if (options.format === "es") {
52
+ const result = await minify(code, customTerserOptions);
53
+ return { code: result.code, map: result.map };
54
+ }
55
+ return null;
56
+ },
57
+ },
58
+ {
59
+ name: "print-crush-size",
60
+ apply: "build",
61
+ writeBundle(options, bundle) {
62
+ const file = Object.keys(bundle).find((name) => name.endsWith(".js"));
63
+ if (file && bundle[file].type === "chunk") {
64
+ const code = bundle[file].code;
65
+ const gzipped = zlib.gzipSync(code);
66
+ console.log(`\n📦 CRUSH BUILD: ${code.length} bytes (Raw) / ${gzipped.length} bytes (Gzipped)\n`);
67
+ }
68
+ },
69
+ },
70
+ ],
71
+ });
72
+ //# sourceMappingURL=vite.config.js13k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.js13k.js","sourceRoot":"","sources":["../vite.config.js13k.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,IAAa;IACnB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE;QACR,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI,EAAE,kDAAkD;KACtE;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,gDAAgD;KAC9E;IACD,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3B,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;GAGG;AACH,eAAe,YAAY,CAAC;IAC1B,MAAM,EAAE;QACN,2FAA2F;QAC3F,qBAAqB,EAAE,KAAK,EAAE,4BAA4B;QAC1D,uBAAuB,EAAE,KAAK,EAAE,qCAAqC;QACrE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC;QACpE,2BAA2B,EAAE,KAAK,EAAE,8BAA8B;QAClE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC;QACpE,oBAAoB,EAAE,KAAK,EAAE,qCAAqC;KACnE;IACD,KAAK,EAAE;QACL,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,mBAAmB;QAClC,GAAG,EAAE;YACH,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,mDAAmD;YACpE,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB;SACpC;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE,OAAgB;YACvB,OAAO,EAAE,MAAe;YACxB,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,KAAU,EAAE,OAAY;gBACtD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,mBAA0B,CAAC,CAAC;oBAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAU,EAAE,CAAC;gBACjE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,OAAgB;YACvB,WAAW,CAAC,OAAY,EAAE,MAAW;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;oBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpC,OAAO,CAAC,GAAG,CACT,qBAAqB,IAAI,CAAC,MAAM,kBAAkB,OAAO,CAAC,MAAM,oBAAoB,CACrF,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;KACF;CACF,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "rlo-engine",
3
+ "version": "1.0.3",
4
+ "description": "A micro-compiler and procedural Web Audio engine for web-based games.",
5
+ "author": "Rikardt Louw",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "webaudio",
9
+ "js13k",
10
+ "procedural-audio",
11
+ "midi",
12
+ "synthesizer"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/SiliconStreetDev1/rlo-engine.git"
17
+ },
18
+ "main": "dist/rlo-engine.min.umd.js",
19
+ "types": "./dist/index.d.ts",
20
+ "type": "module",
21
+ "module": "dist/rlo-engine.min.js",
22
+ "files": [
23
+ "dist",
24
+ "README.md"
25
+ ],
26
+ "bin": {
27
+ "rlo": "./dist/compiler.js"
28
+ },
29
+ "scripts": {
30
+ "dev": "vite",
31
+ "start": "npm run compile-rlo && vite",
32
+ "build": "vite build && tsc",
33
+ "build:crush": "vite build --config vite.config.js13k.ts",
34
+ "compile-rlo": "tsx compiler.ts",
35
+ "compile-json": "tsx compiler.ts --json",
36
+ "prepack": "npm run build"
37
+ },
38
+ "dependencies": {
39
+ "@tonejs/midi": "^2.0.28",
40
+ "adm-zip": "^0.5.10"
41
+ },
42
+ "devDependencies": {
43
+ "@types/adm-zip": "^0.5.5",
44
+ "@types/node": "^20.12.7",
45
+ "tsx": "^4.11.0",
46
+ "typescript": "^5.4.5",
47
+ "vite": "^5.2.0",
48
+ "terser": "^5.30.3"
49
+ }
50
+ }