takomusic 1.2.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 (335) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +230 -0
  3. package/dist/__tests__/checker.test.d.ts +2 -0
  4. package/dist/__tests__/checker.test.d.ts.map +1 -0
  5. package/dist/__tests__/checker.test.js +316 -0
  6. package/dist/__tests__/checker.test.js.map +1 -0
  7. package/dist/__tests__/compiler.test.d.ts +2 -0
  8. package/dist/__tests__/compiler.test.d.ts.map +1 -0
  9. package/dist/__tests__/compiler.test.js +260 -0
  10. package/dist/__tests__/compiler.test.js.map +1 -0
  11. package/dist/__tests__/generators.test.d.ts +2 -0
  12. package/dist/__tests__/generators.test.d.ts.map +1 -0
  13. package/dist/__tests__/generators.test.js +283 -0
  14. package/dist/__tests__/generators.test.js.map +1 -0
  15. package/dist/__tests__/interpreter.test.d.ts +2 -0
  16. package/dist/__tests__/interpreter.test.d.ts.map +1 -0
  17. package/dist/__tests__/interpreter.test.js +298 -0
  18. package/dist/__tests__/interpreter.test.js.map +1 -0
  19. package/dist/__tests__/lexer.test.d.ts +2 -0
  20. package/dist/__tests__/lexer.test.d.ts.map +1 -0
  21. package/dist/__tests__/lexer.test.js +89 -0
  22. package/dist/__tests__/lexer.test.js.map +1 -0
  23. package/dist/__tests__/parser.test.d.ts +2 -0
  24. package/dist/__tests__/parser.test.d.ts.map +1 -0
  25. package/dist/__tests__/parser.test.js +116 -0
  26. package/dist/__tests__/parser.test.js.map +1 -0
  27. package/dist/checker/checker.d.ts +37 -0
  28. package/dist/checker/checker.d.ts.map +1 -0
  29. package/dist/checker/checker.js +428 -0
  30. package/dist/checker/checker.js.map +1 -0
  31. package/dist/checker/index.d.ts +3 -0
  32. package/dist/checker/index.d.ts.map +1 -0
  33. package/dist/checker/index.js +2 -0
  34. package/dist/checker/index.js.map +1 -0
  35. package/dist/cli/commands/build.d.ts +2 -0
  36. package/dist/cli/commands/build.d.ts.map +1 -0
  37. package/dist/cli/commands/build.js +173 -0
  38. package/dist/cli/commands/build.js.map +1 -0
  39. package/dist/cli/commands/check.d.ts +2 -0
  40. package/dist/cli/commands/check.d.ts.map +1 -0
  41. package/dist/cli/commands/check.js +79 -0
  42. package/dist/cli/commands/check.js.map +1 -0
  43. package/dist/cli/commands/doctor.d.ts +2 -0
  44. package/dist/cli/commands/doctor.d.ts.map +1 -0
  45. package/dist/cli/commands/doctor.js +187 -0
  46. package/dist/cli/commands/doctor.js.map +1 -0
  47. package/dist/cli/commands/fmt.d.ts +2 -0
  48. package/dist/cli/commands/fmt.d.ts.map +1 -0
  49. package/dist/cli/commands/fmt.js +73 -0
  50. package/dist/cli/commands/fmt.js.map +1 -0
  51. package/dist/cli/commands/import.d.ts +2 -0
  52. package/dist/cli/commands/import.d.ts.map +1 -0
  53. package/dist/cli/commands/import.js +99 -0
  54. package/dist/cli/commands/import.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +2 -0
  56. package/dist/cli/commands/init.d.ts.map +1 -0
  57. package/dist/cli/commands/init.js +514 -0
  58. package/dist/cli/commands/init.js.map +1 -0
  59. package/dist/cli/commands/play.d.ts +2 -0
  60. package/dist/cli/commands/play.d.ts.map +1 -0
  61. package/dist/cli/commands/play.js +216 -0
  62. package/dist/cli/commands/play.js.map +1 -0
  63. package/dist/cli/commands/record.d.ts +2 -0
  64. package/dist/cli/commands/record.d.ts.map +1 -0
  65. package/dist/cli/commands/record.js +393 -0
  66. package/dist/cli/commands/record.js.map +1 -0
  67. package/dist/cli/commands/render.d.ts +2 -0
  68. package/dist/cli/commands/render.d.ts.map +1 -0
  69. package/dist/cli/commands/render.js +278 -0
  70. package/dist/cli/commands/render.js.map +1 -0
  71. package/dist/cli/index.d.ts +3 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js +93 -0
  74. package/dist/cli/index.js.map +1 -0
  75. package/dist/compiler/compiler.d.ts +12 -0
  76. package/dist/compiler/compiler.d.ts.map +1 -0
  77. package/dist/compiler/compiler.js +146 -0
  78. package/dist/compiler/compiler.js.map +1 -0
  79. package/dist/compiler/index.d.ts +2 -0
  80. package/dist/compiler/index.d.ts.map +1 -0
  81. package/dist/compiler/index.js +2 -0
  82. package/dist/compiler/index.js.map +1 -0
  83. package/dist/config/config.d.ts +43 -0
  84. package/dist/config/config.d.ts.map +1 -0
  85. package/dist/config/config.js +200 -0
  86. package/dist/config/config.js.map +1 -0
  87. package/dist/config/index.d.ts +2 -0
  88. package/dist/config/index.d.ts.map +1 -0
  89. package/dist/config/index.js +2 -0
  90. package/dist/config/index.js.map +1 -0
  91. package/dist/errors.d.ts +49 -0
  92. package/dist/errors.d.ts.map +1 -0
  93. package/dist/errors.js +168 -0
  94. package/dist/errors.js.map +1 -0
  95. package/dist/formatter/formatter.d.ts +13 -0
  96. package/dist/formatter/formatter.d.ts.map +1 -0
  97. package/dist/formatter/formatter.js +242 -0
  98. package/dist/formatter/formatter.js.map +1 -0
  99. package/dist/formatter/index.d.ts +2 -0
  100. package/dist/formatter/index.d.ts.map +1 -0
  101. package/dist/formatter/index.js +2 -0
  102. package/dist/formatter/index.js.map +1 -0
  103. package/dist/generators/index.d.ts +5 -0
  104. package/dist/generators/index.d.ts.map +1 -0
  105. package/dist/generators/index.js +5 -0
  106. package/dist/generators/index.js.map +1 -0
  107. package/dist/generators/midi.d.ts +3 -0
  108. package/dist/generators/midi.d.ts.map +1 -0
  109. package/dist/generators/midi.js +360 -0
  110. package/dist/generators/midi.js.map +1 -0
  111. package/dist/generators/musicxml.d.ts +3 -0
  112. package/dist/generators/musicxml.d.ts.map +1 -0
  113. package/dist/generators/musicxml.js +332 -0
  114. package/dist/generators/musicxml.js.map +1 -0
  115. package/dist/generators/tempo-midi.d.ts +3 -0
  116. package/dist/generators/tempo-midi.d.ts.map +1 -0
  117. package/dist/generators/tempo-midi.js +123 -0
  118. package/dist/generators/tempo-midi.js.map +1 -0
  119. package/dist/generators/vsqx.d.ts +3 -0
  120. package/dist/generators/vsqx.d.ts.map +1 -0
  121. package/dist/generators/vsqx.js +354 -0
  122. package/dist/generators/vsqx.js.map +1 -0
  123. package/dist/importers/index.d.ts +2 -0
  124. package/dist/importers/index.d.ts.map +1 -0
  125. package/dist/importers/index.js +3 -0
  126. package/dist/importers/index.js.map +1 -0
  127. package/dist/importers/musicxml.d.ts +4 -0
  128. package/dist/importers/musicxml.d.ts.map +1 -0
  129. package/dist/importers/musicxml.js +392 -0
  130. package/dist/importers/musicxml.js.map +1 -0
  131. package/dist/index.d.ts +11 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +12 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/interpreter/builtins/algorithmic.d.ts +12 -0
  136. package/dist/interpreter/builtins/algorithmic.d.ts.map +1 -0
  137. package/dist/interpreter/builtins/algorithmic.js +244 -0
  138. package/dist/interpreter/builtins/algorithmic.js.map +1 -0
  139. package/dist/interpreter/builtins/audio.d.ts +10 -0
  140. package/dist/interpreter/builtins/audio.d.ts.map +1 -0
  141. package/dist/interpreter/builtins/audio.js +169 -0
  142. package/dist/interpreter/builtins/audio.js.map +1 -0
  143. package/dist/interpreter/builtins/core.d.ts +15 -0
  144. package/dist/interpreter/builtins/core.d.ts.map +1 -0
  145. package/dist/interpreter/builtins/core.js +265 -0
  146. package/dist/interpreter/builtins/core.js.map +1 -0
  147. package/dist/interpreter/builtins/dynamics.d.ts +8 -0
  148. package/dist/interpreter/builtins/dynamics.d.ts.map +1 -0
  149. package/dist/interpreter/builtins/dynamics.js +86 -0
  150. package/dist/interpreter/builtins/dynamics.js.map +1 -0
  151. package/dist/interpreter/builtins/effects.d.ts +16 -0
  152. package/dist/interpreter/builtins/effects.d.ts.map +1 -0
  153. package/dist/interpreter/builtins/effects.js +220 -0
  154. package/dist/interpreter/builtins/effects.js.map +1 -0
  155. package/dist/interpreter/builtins/index.d.ts +16 -0
  156. package/dist/interpreter/builtins/index.d.ts.map +1 -0
  157. package/dist/interpreter/builtins/index.js +17 -0
  158. package/dist/interpreter/builtins/index.js.map +1 -0
  159. package/dist/interpreter/builtins/layout.d.ts +12 -0
  160. package/dist/interpreter/builtins/layout.d.ts.map +1 -0
  161. package/dist/interpreter/builtins/layout.js +175 -0
  162. package/dist/interpreter/builtins/layout.js.map +1 -0
  163. package/dist/interpreter/builtins/live.d.ts +11 -0
  164. package/dist/interpreter/builtins/live.d.ts.map +1 -0
  165. package/dist/interpreter/builtins/live.js +125 -0
  166. package/dist/interpreter/builtins/live.js.map +1 -0
  167. package/dist/interpreter/builtins/midi.d.ts +16 -0
  168. package/dist/interpreter/builtins/midi.d.ts.map +1 -0
  169. package/dist/interpreter/builtins/midi.js +320 -0
  170. package/dist/interpreter/builtins/midi.js.map +1 -0
  171. package/dist/interpreter/builtins/mixing.d.ts +6 -0
  172. package/dist/interpreter/builtins/mixing.d.ts.map +1 -0
  173. package/dist/interpreter/builtins/mixing.js +62 -0
  174. package/dist/interpreter/builtins/mixing.js.map +1 -0
  175. package/dist/interpreter/builtins/notation.d.ts +24 -0
  176. package/dist/interpreter/builtins/notation.d.ts.map +1 -0
  177. package/dist/interpreter/builtins/notation.js +251 -0
  178. package/dist/interpreter/builtins/notation.js.map +1 -0
  179. package/dist/interpreter/builtins/ornaments.d.ts +8 -0
  180. package/dist/interpreter/builtins/ornaments.d.ts.map +1 -0
  181. package/dist/interpreter/builtins/ornaments.js +155 -0
  182. package/dist/interpreter/builtins/ornaments.js.map +1 -0
  183. package/dist/interpreter/builtins/techniques.d.ts +11 -0
  184. package/dist/interpreter/builtins/techniques.d.ts.map +1 -0
  185. package/dist/interpreter/builtins/techniques.js +234 -0
  186. package/dist/interpreter/builtins/techniques.js.map +1 -0
  187. package/dist/interpreter/builtins/tuning.d.ts +7 -0
  188. package/dist/interpreter/builtins/tuning.d.ts.map +1 -0
  189. package/dist/interpreter/builtins/tuning.js +52 -0
  190. package/dist/interpreter/builtins/tuning.js.map +1 -0
  191. package/dist/interpreter/builtins/types.d.ts +27 -0
  192. package/dist/interpreter/builtins/types.d.ts.map +1 -0
  193. package/dist/interpreter/builtins/types.js +3 -0
  194. package/dist/interpreter/builtins/types.js.map +1 -0
  195. package/dist/interpreter/builtins/vocaloid.d.ts +10 -0
  196. package/dist/interpreter/builtins/vocaloid.d.ts.map +1 -0
  197. package/dist/interpreter/builtins/vocaloid.js +165 -0
  198. package/dist/interpreter/builtins/vocaloid.js.map +1 -0
  199. package/dist/interpreter/index.d.ts +4 -0
  200. package/dist/interpreter/index.d.ts.map +1 -0
  201. package/dist/interpreter/index.js +4 -0
  202. package/dist/interpreter/index.js.map +1 -0
  203. package/dist/interpreter/interpreter.d.ts +305 -0
  204. package/dist/interpreter/interpreter.d.ts.map +1 -0
  205. package/dist/interpreter/interpreter.js +8463 -0
  206. package/dist/interpreter/interpreter.js.map +1 -0
  207. package/dist/interpreter/runtime.d.ts +67 -0
  208. package/dist/interpreter/runtime.d.ts.map +1 -0
  209. package/dist/interpreter/runtime.js +88 -0
  210. package/dist/interpreter/runtime.js.map +1 -0
  211. package/dist/interpreter/scope.d.ts +21 -0
  212. package/dist/interpreter/scope.d.ts.map +1 -0
  213. package/dist/interpreter/scope.js +60 -0
  214. package/dist/interpreter/scope.js.map +1 -0
  215. package/dist/interpreter/trackState.d.ts +205 -0
  216. package/dist/interpreter/trackState.d.ts.map +1 -0
  217. package/dist/interpreter/trackState.js +12 -0
  218. package/dist/interpreter/trackState.js.map +1 -0
  219. package/dist/lexer/index.d.ts +2 -0
  220. package/dist/lexer/index.d.ts.map +1 -0
  221. package/dist/lexer/index.js +2 -0
  222. package/dist/lexer/index.js.map +1 -0
  223. package/dist/lexer/lexer.d.ts +30 -0
  224. package/dist/lexer/lexer.d.ts.map +1 -0
  225. package/dist/lexer/lexer.js +385 -0
  226. package/dist/lexer/lexer.js.map +1 -0
  227. package/dist/parser/index.d.ts +2 -0
  228. package/dist/parser/index.d.ts.map +1 -0
  229. package/dist/parser/index.js +2 -0
  230. package/dist/parser/index.js.map +1 -0
  231. package/dist/parser/parser.d.ts +55 -0
  232. package/dist/parser/parser.d.ts.map +1 -0
  233. package/dist/parser/parser.js +896 -0
  234. package/dist/parser/parser.js.map +1 -0
  235. package/dist/types/ast.d.ts +220 -0
  236. package/dist/types/ast.d.ts.map +1 -0
  237. package/dist/types/ast.js +3 -0
  238. package/dist/types/ast.js.map +1 -0
  239. package/dist/types/index.d.ts +4 -0
  240. package/dist/types/index.d.ts.map +1 -0
  241. package/dist/types/index.js +4 -0
  242. package/dist/types/index.js.map +1 -0
  243. package/dist/types/ir/advanced.d.ts +491 -0
  244. package/dist/types/ir/advanced.d.ts.map +1 -0
  245. package/dist/types/ir/advanced.js +3 -0
  246. package/dist/types/ir/advanced.js.map +1 -0
  247. package/dist/types/ir/algorithmic.d.ts +48 -0
  248. package/dist/types/ir/algorithmic.d.ts.map +1 -0
  249. package/dist/types/ir/algorithmic.js +3 -0
  250. package/dist/types/ir/algorithmic.js.map +1 -0
  251. package/dist/types/ir/analysis.d.ts +34 -0
  252. package/dist/types/ir/analysis.d.ts.map +1 -0
  253. package/dist/types/ir/analysis.js +3 -0
  254. package/dist/types/ir/analysis.js.map +1 -0
  255. package/dist/types/ir/audio.d.ts +249 -0
  256. package/dist/types/ir/audio.d.ts.map +1 -0
  257. package/dist/types/ir/audio.js +3 -0
  258. package/dist/types/ir/audio.js.map +1 -0
  259. package/dist/types/ir/automation.d.ts +46 -0
  260. package/dist/types/ir/automation.d.ts.map +1 -0
  261. package/dist/types/ir/automation.js +3 -0
  262. package/dist/types/ir/automation.js.map +1 -0
  263. package/dist/types/ir/collaboration.d.ts +20 -0
  264. package/dist/types/ir/collaboration.d.ts.map +1 -0
  265. package/dist/types/ir/collaboration.js +3 -0
  266. package/dist/types/ir/collaboration.js.map +1 -0
  267. package/dist/types/ir/core.d.ts +153 -0
  268. package/dist/types/ir/core.d.ts.map +1 -0
  269. package/dist/types/ir/core.js +3 -0
  270. package/dist/types/ir/core.js.map +1 -0
  271. package/dist/types/ir/effects.d.ts +169 -0
  272. package/dist/types/ir/effects.d.ts.map +1 -0
  273. package/dist/types/ir/effects.js +3 -0
  274. package/dist/types/ir/effects.js.map +1 -0
  275. package/dist/types/ir/extended.d.ts +104 -0
  276. package/dist/types/ir/extended.d.ts.map +1 -0
  277. package/dist/types/ir/extended.js +3 -0
  278. package/dist/types/ir/extended.js.map +1 -0
  279. package/dist/types/ir/index.d.ts +16 -0
  280. package/dist/types/ir/index.d.ts.map +1 -0
  281. package/dist/types/ir/index.js +17 -0
  282. package/dist/types/ir/index.js.map +1 -0
  283. package/dist/types/ir/mastering.d.ts +86 -0
  284. package/dist/types/ir/mastering.d.ts.map +1 -0
  285. package/dist/types/ir/mastering.js +3 -0
  286. package/dist/types/ir/mastering.js.map +1 -0
  287. package/dist/types/ir/midi.d.ts +79 -0
  288. package/dist/types/ir/midi.d.ts.map +1 -0
  289. package/dist/types/ir/midi.js +3 -0
  290. package/dist/types/ir/midi.js.map +1 -0
  291. package/dist/types/ir/notation.d.ts +963 -0
  292. package/dist/types/ir/notation.d.ts.map +1 -0
  293. package/dist/types/ir/notation.js +3 -0
  294. package/dist/types/ir/notation.js.map +1 -0
  295. package/dist/types/ir/recording.d.ts +48 -0
  296. package/dist/types/ir/recording.d.ts.map +1 -0
  297. package/dist/types/ir/recording.js +3 -0
  298. package/dist/types/ir/recording.js.map +1 -0
  299. package/dist/types/ir/sampling.d.ts +59 -0
  300. package/dist/types/ir/sampling.d.ts.map +1 -0
  301. package/dist/types/ir/sampling.js +3 -0
  302. package/dist/types/ir/sampling.js.map +1 -0
  303. package/dist/types/ir/sequencing.d.ts +118 -0
  304. package/dist/types/ir/sequencing.d.ts.map +1 -0
  305. package/dist/types/ir/sequencing.js +3 -0
  306. package/dist/types/ir/sequencing.js.map +1 -0
  307. package/dist/types/ir/sync.d.ts +39 -0
  308. package/dist/types/ir/sync.d.ts.map +1 -0
  309. package/dist/types/ir/sync.js +3 -0
  310. package/dist/types/ir/sync.js.map +1 -0
  311. package/dist/types/ir.d.ts +2 -0
  312. package/dist/types/ir.d.ts.map +1 -0
  313. package/dist/types/ir.js +3 -0
  314. package/dist/types/ir.js.map +1 -0
  315. package/dist/types/token.d.ts +72 -0
  316. package/dist/types/token.d.ts.map +1 -0
  317. package/dist/types/token.js +90 -0
  318. package/dist/types/token.js.map +1 -0
  319. package/dist/utils/stdlib.d.ts +18 -0
  320. package/dist/utils/stdlib.d.ts.map +1 -0
  321. package/dist/utils/stdlib.js +51 -0
  322. package/dist/utils/stdlib.js.map +1 -0
  323. package/lib/articulation.mf +46 -0
  324. package/lib/composition.mf +299 -0
  325. package/lib/curves.mf +183 -0
  326. package/lib/dynamics.mf +141 -0
  327. package/lib/expression.mf +221 -0
  328. package/lib/genres.mf +348 -0
  329. package/lib/notation.mf +224 -0
  330. package/lib/ornaments.mf +98 -0
  331. package/lib/patterns.mf +170 -0
  332. package/lib/rhythm.mf +269 -0
  333. package/lib/theory.mf +257 -0
  334. package/lib/utils.mf +140 -0
  335. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi.js","sourceRoot":"","sources":["../../src/generators/midi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SongIR } from '../types/ir.js';
2
+ export declare function generateMusicXML(ir: SongIR): string;
3
+ //# sourceMappingURL=musicxml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musicxml.d.ts","sourceRoot":"","sources":["../../src/generators/musicxml.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EAcP,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAuHnD"}
@@ -0,0 +1,332 @@
1
+ // MusicXML generator for vocal tracks
2
+ const NOTE_NAMES = ['C', 'C', 'D', 'D', 'E', 'F', 'F', 'G', 'G', 'A', 'A', 'B'];
3
+ const NOTE_ALTERS = [0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0];
4
+ export function generateMusicXML(ir) {
5
+ const vocalTracks = ir.tracks.filter((t) => t.kind === 'vocal');
6
+ if (vocalTracks.length === 0) {
7
+ return generateEmptyMusicXML(ir);
8
+ }
9
+ // Use first vocal track
10
+ const track = vocalTracks[0];
11
+ const notes = track.events.filter((e) => e.type === 'note');
12
+ // Get divisions (ticks per quarter note = ppq)
13
+ const divisions = ir.ppq;
14
+ // Get time signature
15
+ const timeSig = ir.timeSigs[0] ?? { numerator: 4, denominator: 4 };
16
+ const ticksPerMeasure = (divisions * 4 * timeSig.numerator) / timeSig.denominator;
17
+ // Get tempo
18
+ const tempo = ir.tempos[0]?.bpm ?? 120;
19
+ // Group notes by measure
20
+ const measures = [];
21
+ for (const note of notes) {
22
+ const measureIndex = Math.floor(note.tick / ticksPerMeasure);
23
+ while (measures.length <= measureIndex) {
24
+ measures.push([]);
25
+ }
26
+ measures[measureIndex].push(note);
27
+ }
28
+ // Ensure at least one measure
29
+ if (measures.length === 0) {
30
+ measures.push([]);
31
+ }
32
+ let xml = `<?xml version="1.0" encoding="UTF-8"?>
33
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
34
+ <score-partwise version="3.1">
35
+ <work>
36
+ <work-title>${escapeXml(ir.title ?? 'Untitled')}</work-title>
37
+ </work>
38
+ <identification>
39
+ <encoding>
40
+ <software>TakoMusic v1.0.0-alpha</software>
41
+ </encoding>
42
+ </identification>
43
+ <part-list>
44
+ <score-part id="P1">
45
+ <part-name>${escapeXml(track.name)}</part-name>
46
+ </score-part>
47
+ </part-list>
48
+ <part id="P1">
49
+ `;
50
+ for (let i = 0; i < measures.length; i++) {
51
+ xml += ` <measure number="${i + 1}">\n`;
52
+ // First measure: add attributes and direction
53
+ if (i === 0) {
54
+ xml += ` <attributes>
55
+ <divisions>${divisions}</divisions>
56
+ <key>
57
+ <fifths>0</fifths>
58
+ </key>
59
+ <time>
60
+ <beats>${timeSig.numerator}</beats>
61
+ <beat-type>${timeSig.denominator}</beat-type>
62
+ </time>
63
+ <clef>
64
+ <sign>G</sign>
65
+ <line>2</line>
66
+ </clef>
67
+ </attributes>
68
+ <direction placement="above">
69
+ <direction-type>
70
+ <metronome>
71
+ <beat-unit>quarter</beat-unit>
72
+ <per-minute>${tempo}</per-minute>
73
+ </metronome>
74
+ </direction-type>
75
+ <sound tempo="${tempo}"/>
76
+ </direction>
77
+ `;
78
+ }
79
+ // Add notes for this measure
80
+ const measureNotes = measures[i];
81
+ const measureStartTick = i * ticksPerMeasure;
82
+ let currentTick = measureStartTick;
83
+ for (const note of measureNotes) {
84
+ // Add rest if there's a gap
85
+ if (note.tick > currentTick) {
86
+ const restDur = note.tick - currentTick;
87
+ xml += generateRest(restDur, divisions);
88
+ }
89
+ // Add note
90
+ xml += generateNote(note, divisions);
91
+ currentTick = note.tick + note.dur;
92
+ }
93
+ // Fill remaining space with rest
94
+ const measureEndTick = (i + 1) * ticksPerMeasure;
95
+ if (currentTick < measureEndTick) {
96
+ const restDur = measureEndTick - currentTick;
97
+ xml += generateRest(restDur, divisions);
98
+ }
99
+ xml += ` </measure>\n`;
100
+ }
101
+ xml += ` </part>
102
+ </score-partwise>
103
+ `;
104
+ return xml;
105
+ }
106
+ function generateNote(note, divisions) {
107
+ const extNote = note;
108
+ const octave = Math.floor(note.key / 12) - 1;
109
+ const pitchClass = note.key % 12;
110
+ const step = NOTE_NAMES[pitchClass];
111
+ const alter = NOTE_ALTERS[pitchClass];
112
+ let xml = '';
113
+ // Add dynamic direction if present
114
+ if (extNote.dynamic) {
115
+ xml += generateDynamic(extNote.dynamic);
116
+ }
117
+ // Generate grace notes if present
118
+ if (extNote.graceNotes && extNote.graceNotes.length > 0) {
119
+ for (const grace of extNote.graceNotes) {
120
+ xml += generateGraceNote(grace);
121
+ }
122
+ }
123
+ xml += ` <note>
124
+ <pitch>
125
+ <step>${step}</step>
126
+ `;
127
+ if (alter !== 0) {
128
+ xml += ` <alter>${alter}</alter>\n`;
129
+ }
130
+ xml += ` <octave>${octave}</octave>
131
+ </pitch>
132
+ <duration>${note.dur}</duration>
133
+ `;
134
+ // Add tie element (before type)
135
+ if (extNote.tieStart && extNote.tieEnd) {
136
+ xml += ` <tie type="stop"/>
137
+ <tie type="start"/>
138
+ `;
139
+ }
140
+ else if (extNote.tieStart) {
141
+ xml += ` <tie type="start"/>
142
+ `;
143
+ }
144
+ else if (extNote.tieEnd) {
145
+ xml += ` <tie type="stop"/>
146
+ `;
147
+ }
148
+ // Add voice if specified
149
+ if (extNote.voice) {
150
+ xml += ` <voice>${extNote.voice}</voice>
151
+ `;
152
+ }
153
+ xml += ` <type>${getDurationType(note.dur, divisions)}</type>
154
+ `;
155
+ // Add time modification for tuplets
156
+ if (extNote.tuplet) {
157
+ xml += ` <time-modification>
158
+ <actual-notes>${extNote.tuplet.actual}</actual-notes>
159
+ <normal-notes>${extNote.tuplet.normal}</normal-notes>
160
+ </time-modification>
161
+ `;
162
+ }
163
+ // Add notations element for slurs, ties, articulations, tuplets, fermata
164
+ const hasNotations = extNote.slurStart || extNote.slurEnd ||
165
+ extNote.tieStart || extNote.tieEnd ||
166
+ note.articulation || extNote.tuplet || extNote.fermata;
167
+ if (hasNotations) {
168
+ xml += ` <notations>
169
+ `;
170
+ // Tied notation
171
+ if (extNote.tieStart && extNote.tieEnd) {
172
+ xml += ` <tied type="stop"/>
173
+ <tied type="start"/>
174
+ `;
175
+ }
176
+ else if (extNote.tieStart) {
177
+ xml += ` <tied type="start"/>
178
+ `;
179
+ }
180
+ else if (extNote.tieEnd) {
181
+ xml += ` <tied type="stop"/>
182
+ `;
183
+ }
184
+ // Slur notation
185
+ if (extNote.slurStart) {
186
+ xml += ` <slur type="start" number="1"/>
187
+ `;
188
+ }
189
+ if (extNote.slurEnd) {
190
+ xml += ` <slur type="stop" number="1"/>
191
+ `;
192
+ }
193
+ // Tuplet notation
194
+ if (extNote.tuplet) {
195
+ xml += ` <tuplet type="start"/>
196
+ `;
197
+ }
198
+ // Fermata notation
199
+ if (extNote.fermata) {
200
+ xml += ` <fermata/>
201
+ `;
202
+ }
203
+ // Articulations
204
+ if (note.articulation) {
205
+ xml += generateArticulation(note.articulation);
206
+ }
207
+ xml += ` </notations>
208
+ `;
209
+ }
210
+ if (note.lyric) {
211
+ xml += ` <lyric>
212
+ <syllabic>single</syllabic>
213
+ <text>${escapeXml(note.lyric)}</text>
214
+ </lyric>
215
+ `;
216
+ }
217
+ xml += ` </note>\n`;
218
+ return xml;
219
+ }
220
+ function generateGraceNote(grace) {
221
+ const octave = Math.floor(grace.key / 12) - 1;
222
+ const pitchClass = grace.key % 12;
223
+ const step = NOTE_NAMES[pitchClass];
224
+ const alter = NOTE_ALTERS[pitchClass];
225
+ let xml = ` <note>
226
+ <grace${grace.slash ? ' slash="yes"' : ''}/>
227
+ <pitch>
228
+ <step>${step}</step>
229
+ `;
230
+ if (alter !== 0) {
231
+ xml += ` <alter>${alter}</alter>\n`;
232
+ }
233
+ xml += ` <octave>${octave}</octave>
234
+ </pitch>
235
+ <type>eighth</type>
236
+ `;
237
+ if (grace.lyric) {
238
+ xml += ` <lyric>
239
+ <syllabic>single</syllabic>
240
+ <text>${escapeXml(grace.lyric)}</text>
241
+ </lyric>
242
+ `;
243
+ }
244
+ xml += ` </note>
245
+ `;
246
+ return xml;
247
+ }
248
+ function generateDynamic(dynamic) {
249
+ // Generate MusicXML dynamics direction
250
+ return ` <direction placement="below">
251
+ <direction-type>
252
+ <dynamics>
253
+ <${dynamic}/>
254
+ </dynamics>
255
+ </direction-type>
256
+ </direction>
257
+ `;
258
+ }
259
+ function generateArticulation(articulation) {
260
+ // Map articulation to MusicXML element
261
+ const articulationMap = {
262
+ 'staccato': 'staccato',
263
+ 'legato': 'tenuto', // MusicXML doesn't have direct legato, use tenuto
264
+ 'accent': 'accent',
265
+ 'tenuto': 'tenuto',
266
+ 'marcato': 'strong-accent',
267
+ };
268
+ const xmlElement = articulationMap[articulation];
269
+ return ` <articulations>
270
+ <${xmlElement}/>
271
+ </articulations>
272
+ `;
273
+ }
274
+ function generateRest(duration, divisions) {
275
+ return ` <note>
276
+ <rest/>
277
+ <duration>${duration}</duration>
278
+ <type>${getDurationType(duration, divisions)}</type>
279
+ </note>
280
+ `;
281
+ }
282
+ function getDurationType(ticks, divisions) {
283
+ const quarters = ticks / divisions;
284
+ if (quarters >= 4)
285
+ return 'whole';
286
+ if (quarters >= 2)
287
+ return 'half';
288
+ if (quarters >= 1)
289
+ return 'quarter';
290
+ if (quarters >= 0.5)
291
+ return 'eighth';
292
+ if (quarters >= 0.25)
293
+ return '16th';
294
+ if (quarters >= 0.125)
295
+ return '32nd';
296
+ return '64th';
297
+ }
298
+ function generateEmptyMusicXML(ir) {
299
+ return `<?xml version="1.0" encoding="UTF-8"?>
300
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
301
+ <score-partwise version="3.1">
302
+ <work>
303
+ <work-title>${escapeXml(ir.title ?? 'Untitled')}</work-title>
304
+ </work>
305
+ <part-list>
306
+ <score-part id="P1">
307
+ <part-name>Vocal</part-name>
308
+ </score-part>
309
+ </part-list>
310
+ <part id="P1">
311
+ <measure number="1">
312
+ <attributes>
313
+ <divisions>${ir.ppq}</divisions>
314
+ </attributes>
315
+ <note>
316
+ <rest measure="yes"/>
317
+ <duration>${ir.ppq * 4}</duration>
318
+ </note>
319
+ </measure>
320
+ </part>
321
+ </score-partwise>
322
+ `;
323
+ }
324
+ function escapeXml(str) {
325
+ return str
326
+ .replace(/&/g, '&amp;')
327
+ .replace(/</g, '&lt;')
328
+ .replace(/>/g, '&gt;')
329
+ .replace(/"/g, '&quot;')
330
+ .replace(/'/g, '&apos;');
331
+ }
332
+ //# sourceMappingURL=musicxml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musicxml.js","sourceRoot":"","sources":["../../src/generators/musicxml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SongIR } from '../types/ir.js';
2
+ export declare function generateTempoMidi(ir: SongIR): Buffer;
3
+ //# sourceMappingURL=tempo-midi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempo-midi.d.ts","sourceRoot":"","sources":["../../src/generators/tempo-midi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAA4B,MAAM,gBAAgB,CAAC;AAQvE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUpD"}
@@ -0,0 +1,123 @@
1
+ // Tempo MIDI generator - contains only tempo and time signature events
2
+ // MIDI event types
3
+ const META_EVENT = 0xFF;
4
+ const META_TEMPO = 0x51;
5
+ const META_TIME_SIG = 0x58;
6
+ const META_END_TRACK = 0x2F;
7
+ export function generateTempoMidi(ir) {
8
+ const chunks = [];
9
+ // Header chunk
10
+ chunks.push(buildHeaderChunk(ir.ppq));
11
+ // Single tempo track
12
+ chunks.push(buildTempoTrack(ir));
13
+ return Buffer.concat(chunks);
14
+ }
15
+ function buildHeaderChunk(ppq) {
16
+ const header = Buffer.alloc(14);
17
+ // "MThd"
18
+ header.write('MThd', 0);
19
+ // Chunk length (always 6)
20
+ header.writeUInt32BE(6, 4);
21
+ // Format (0 = single track)
22
+ header.writeUInt16BE(0, 8);
23
+ // Number of tracks (1)
24
+ header.writeUInt16BE(1, 10);
25
+ // Division (ticks per quarter note)
26
+ header.writeUInt16BE(ppq, 12);
27
+ return header;
28
+ }
29
+ function buildTempoTrack(ir) {
30
+ const events = [];
31
+ let lastTick = 0;
32
+ // Sort tempo events by tick
33
+ const tempos = [...ir.tempos].sort((a, b) => a.tick - b.tick);
34
+ const timeSigs = [...ir.timeSigs].sort((a, b) => a.tick - b.tick);
35
+ const metaEvents = [
36
+ ...tempos.map((t) => ({ tick: t.tick, type: 'tempo', data: t })),
37
+ ...timeSigs.map((t) => ({ tick: t.tick, type: 'timesig', data: t })),
38
+ ];
39
+ metaEvents.sort((a, b) => a.tick - b.tick);
40
+ for (const event of metaEvents) {
41
+ const delta = event.tick - lastTick;
42
+ lastTick = event.tick;
43
+ if (event.type === 'tempo') {
44
+ const tempo = event.data;
45
+ // Convert BPM to microseconds per quarter note
46
+ const uspq = Math.round(60000000 / tempo.bpm);
47
+ events.push(buildTempoEvent(delta, uspq));
48
+ }
49
+ else {
50
+ const ts = event.data;
51
+ events.push(buildTimeSigEvent(delta, ts.numerator, ts.denominator));
52
+ }
53
+ }
54
+ // End of track
55
+ events.push(buildEndOfTrack(0));
56
+ return buildTrackChunk(events);
57
+ }
58
+ function buildTrackChunk(events) {
59
+ const trackData = Buffer.concat(events);
60
+ const header = Buffer.alloc(8);
61
+ // "MTrk"
62
+ header.write('MTrk', 0);
63
+ // Chunk length
64
+ header.writeUInt32BE(trackData.length, 4);
65
+ return Buffer.concat([header, trackData]);
66
+ }
67
+ function buildTempoEvent(delta, uspq) {
68
+ const deltaBytes = encodeVarLen(delta);
69
+ const data = Buffer.alloc(deltaBytes.length + 6);
70
+ let offset = 0;
71
+ deltaBytes.copy(data, offset);
72
+ offset += deltaBytes.length;
73
+ data[offset++] = META_EVENT;
74
+ data[offset++] = META_TEMPO;
75
+ data[offset++] = 3; // length
76
+ // Microseconds per quarter note (24-bit big endian)
77
+ data[offset++] = (uspq >> 16) & 0xFF;
78
+ data[offset++] = (uspq >> 8) & 0xFF;
79
+ data[offset++] = uspq & 0xFF;
80
+ return data;
81
+ }
82
+ function buildTimeSigEvent(delta, num, den) {
83
+ const deltaBytes = encodeVarLen(delta);
84
+ const data = Buffer.alloc(deltaBytes.length + 7);
85
+ let offset = 0;
86
+ deltaBytes.copy(data, offset);
87
+ offset += deltaBytes.length;
88
+ data[offset++] = META_EVENT;
89
+ data[offset++] = META_TIME_SIG;
90
+ data[offset++] = 4; // length
91
+ // Numerator
92
+ data[offset++] = num;
93
+ // Denominator as power of 2
94
+ data[offset++] = Math.log2(den);
95
+ // Clocks per metronome click (default 24)
96
+ data[offset++] = 24;
97
+ // 32nd notes per quarter note (default 8)
98
+ data[offset++] = 8;
99
+ return data;
100
+ }
101
+ function buildEndOfTrack(delta) {
102
+ const deltaBytes = encodeVarLen(delta);
103
+ const data = Buffer.alloc(deltaBytes.length + 3);
104
+ deltaBytes.copy(data, 0);
105
+ data[deltaBytes.length] = META_EVENT;
106
+ data[deltaBytes.length + 1] = META_END_TRACK;
107
+ data[deltaBytes.length + 2] = 0; // length
108
+ return data;
109
+ }
110
+ function encodeVarLen(value) {
111
+ if (value < 0)
112
+ value = 0;
113
+ const bytes = [];
114
+ bytes.push(value & 0x7F);
115
+ value >>= 7;
116
+ while (value > 0) {
117
+ bytes.push((value & 0x7F) | 0x80);
118
+ value >>= 7;
119
+ }
120
+ bytes.reverse();
121
+ return Buffer.from(bytes);
122
+ }
123
+ //# sourceMappingURL=tempo-midi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempo-midi.js","sourceRoot":"","sources":["../../src/generators/tempo-midi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SongIR } from '../types/ir.js';
2
+ export declare function generateVsqx(ir: SongIR): string;
3
+ //# sourceMappingURL=vsqx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsqx.d.ts","sourceRoot":"","sources":["../../src/generators/vsqx.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAA6C,MAAM,gBAAgB,CAAC;AAExF,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiH/C"}