takomusic 2.1.2 → 4.0.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.
- package/README.md +107 -185
- package/dist/__tests__/evaluator.test.d.ts +2 -0
- package/dist/__tests__/evaluator.test.d.ts.map +1 -0
- package/dist/__tests__/evaluator.test.js +465 -0
- package/dist/__tests__/evaluator.test.js.map +1 -0
- package/dist/__tests__/helpers/testUtils.d.ts +64 -0
- package/dist/__tests__/helpers/testUtils.d.ts.map +1 -0
- package/dist/__tests__/helpers/testUtils.js +178 -0
- package/dist/__tests__/helpers/testUtils.js.map +1 -0
- package/dist/__tests__/lexer.test.js +403 -78
- package/dist/__tests__/lexer.test.js.map +1 -1
- package/dist/__tests__/parser.test.js +575 -224
- package/dist/__tests__/parser.test.js.map +1 -1
- package/dist/__tests__/stdlib.test.d.ts +2 -0
- package/dist/__tests__/stdlib.test.d.ts.map +1 -0
- package/dist/__tests__/stdlib.test.js +551 -0
- package/dist/__tests__/stdlib.test.js.map +1 -0
- package/dist/__tests__/typecheck.test.d.ts +2 -0
- package/dist/__tests__/typecheck.test.d.ts.map +1 -0
- package/dist/__tests__/typecheck.test.js +314 -0
- package/dist/__tests__/typecheck.test.js.map +1 -0
- package/dist/__tests__/v3.compiler.test.d.ts +2 -0
- package/dist/__tests__/v3.compiler.test.d.ts.map +1 -0
- package/dist/__tests__/v3.compiler.test.js +192 -0
- package/dist/__tests__/v3.compiler.test.js.map +1 -0
- package/dist/__tests__/v4.compiler.test.d.ts +2 -0
- package/dist/__tests__/v4.compiler.test.d.ts.map +1 -0
- package/dist/__tests__/v4.compiler.test.js +192 -0
- package/dist/__tests__/v4.compiler.test.js.map +1 -0
- package/dist/ast.d.ts +369 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +2 -0
- package/dist/ast.js.map +1 -0
- package/dist/browser/index.d.ts +70 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +336 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/virtualFs.d.ts +56 -0
- package/dist/browser/virtualFs.d.ts.map +1 -0
- package/dist/browser/virtualFs.js +3067 -0
- package/dist/browser/virtualFs.js.map +1 -0
- package/dist/cli/colors.d.ts +47 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +92 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +77 -78
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +33 -30
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/fmt.d.ts.map +1 -1
- package/dist/cli/commands/fmt.js +88 -46
- package/dist/cli/commands/fmt.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +159 -120
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +201 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/lsp.d.ts +2 -0
- package/dist/cli/commands/lsp.d.ts.map +1 -0
- package/dist/cli/commands/lsp.js +15 -0
- package/dist/cli/commands/lsp.js.map +1 -0
- package/dist/cli/commands/render.d.ts.map +1 -1
- package/dist/cli/commands/render.js +181 -272
- package/dist/cli/commands/render.js.map +1 -1
- package/dist/cli/commands/repl.d.ts +2 -0
- package/dist/cli/commands/repl.d.ts.map +1 -0
- package/dist/cli/commands/repl.js +338 -0
- package/dist/cli/commands/repl.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +2 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +220 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/errorHandler.d.ts +16 -0
- package/dist/cli/errorHandler.d.ts.map +1 -1
- package/dist/cli/errorHandler.js +50 -3
- package/dist/cli/errorHandler.js.map +1 -1
- package/dist/cli/index.js +32 -29
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/richFormatter.d.ts +29 -0
- package/dist/cli/richFormatter.d.ts.map +1 -0
- package/dist/cli/richFormatter.js +136 -0
- package/dist/cli/richFormatter.js.map +1 -0
- package/dist/cli/sourceSnippet.d.ts +45 -0
- package/dist/cli/sourceSnippet.d.ts.map +1 -0
- package/dist/cli/sourceSnippet.js +162 -0
- package/dist/cli/sourceSnippet.js.map +1 -0
- package/dist/compiler.d.ts +19 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +230 -0
- package/dist/compiler.js.map +1 -0
- package/dist/config/config.d.ts +0 -24
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +11 -134
- package/dist/config/config.js.map +1 -1
- package/dist/diagnostics.d.ts +73 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +73 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/errors.d.ts +60 -19
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +157 -48
- package/dist/errors.js.map +1 -1
- package/dist/evaluator.d.ts +65 -0
- package/dist/evaluator.d.ts.map +1 -0
- package/dist/evaluator.js +1951 -0
- package/dist/evaluator.js.map +1 -0
- package/dist/formatter.d.ts +17 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +426 -0
- package/dist/formatter.js.map +1 -0
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -8
- package/dist/index.js.map +1 -1
- package/dist/ir.d.ts +156 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +2 -0
- package/dist/ir.js.map +1 -0
- package/dist/{lexer/lexer.d.ts → lexer.d.ts} +19 -17
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +392 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lsp/server.d.ts +11 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +595 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/normalize.d.ts +5 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +277 -0
- package/dist/normalize.js.map +1 -0
- package/dist/package/manager.d.ts +87 -0
- package/dist/package/manager.d.ts.map +1 -0
- package/dist/package/manager.js +267 -0
- package/dist/package/manager.js.map +1 -0
- package/dist/parser.d.ts +73 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +1237 -0
- package/dist/parser.js.map +1 -0
- package/dist/pitch.d.ts +11 -0
- package/dist/pitch.d.ts.map +1 -0
- package/dist/pitch.js +40 -0
- package/dist/pitch.js.map +1 -0
- package/dist/rat.d.ts +14 -0
- package/dist/rat.d.ts.map +1 -0
- package/dist/rat.js +52 -0
- package/dist/rat.js.map +1 -0
- package/dist/renderer-plugin.d.ts +70 -0
- package/dist/renderer-plugin.d.ts.map +1 -0
- package/dist/renderer-plugin.js +141 -0
- package/dist/renderer-plugin.js.map +1 -0
- package/dist/runtime.d.ts +270 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +67 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema/validator.d.ts +3 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +71 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/scope.d.ts +17 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +87 -0
- package/dist/scope.js.map +1 -0
- package/dist/suggestions.d.ts +37 -0
- package/dist/suggestions.d.ts.map +1 -0
- package/dist/suggestions.js +129 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/temp_render.tako.score.json +11655 -0
- package/dist/token.d.ts +85 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +105 -0
- package/dist/token.js.map +1 -0
- package/dist/typecheck.d.ts +4 -0
- package/dist/typecheck.d.ts.map +1 -0
- package/dist/typecheck.js +1069 -0
- package/dist/typecheck.js.map +1 -0
- package/dist/utils/stdlib.d.ts +1 -1
- package/dist/utils/stdlib.d.ts.map +1 -1
- package/dist/utils/stdlib.js +8 -11
- package/dist/utils/stdlib.js.map +1 -1
- package/dist/validation.d.ts +12 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +444 -0
- package/dist/validation.js.map +1 -0
- package/dist/value-codec.d.ts +9 -0
- package/dist/value-codec.d.ts.map +1 -0
- package/dist/value-codec.js +788 -0
- package/dist/value-codec.js.map +1 -0
- package/docs/schemas/IR_V3.schema.json +727 -0
- package/docs/schemas/IR_V4.schema.json +734 -0
- package/docs/schemas/PROFILE_V3.schema.json +100 -0
- package/lib/core.mf +763 -0
- package/lib/curves.mf +34 -169
- package/lib/drums.mf +188 -0
- package/lib/random.mf +33 -0
- package/lib/result.mf +78 -0
- package/lib/rhythm.mf +288 -219
- package/lib/theory.mf +965 -155
- package/lib/time.mf +111 -0
- package/lib/transform.mf +319 -0
- package/lib/vocal.mf +490 -0
- package/package.json +13 -7
- package/dist/__tests__/checker.test.d.ts +0 -2
- package/dist/__tests__/checker.test.d.ts.map +0 -1
- package/dist/__tests__/checker.test.js +0 -160
- package/dist/__tests__/checker.test.js.map +0 -1
- package/dist/__tests__/compiler.test.d.ts +0 -2
- package/dist/__tests__/compiler.test.d.ts.map +0 -1
- package/dist/__tests__/compiler.test.js +0 -145
- package/dist/__tests__/compiler.test.js.map +0 -1
- package/dist/__tests__/generators.test.d.ts +0 -2
- package/dist/__tests__/generators.test.d.ts.map +0 -1
- package/dist/__tests__/generators.test.js +0 -307
- package/dist/__tests__/generators.test.js.map +0 -1
- package/dist/__tests__/interpreter.test.d.ts +0 -2
- package/dist/__tests__/interpreter.test.d.ts.map +0 -1
- package/dist/__tests__/interpreter.test.js +0 -281
- package/dist/__tests__/interpreter.test.js.map +0 -1
- package/dist/__tests__/language-spec.test.d.ts +0 -2
- package/dist/__tests__/language-spec.test.d.ts.map +0 -1
- package/dist/__tests__/language-spec.test.js +0 -408
- package/dist/__tests__/language-spec.test.js.map +0 -1
- package/dist/checker/checker.d.ts +0 -43
- package/dist/checker/checker.d.ts.map +0 -1
- package/dist/checker/checker.js +0 -628
- package/dist/checker/checker.js.map +0 -1
- package/dist/checker/index.d.ts +0 -3
- package/dist/checker/index.d.ts.map +0 -1
- package/dist/checker/index.js +0 -2
- package/dist/checker/index.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -2
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/doctor.js +0 -191
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/import.d.ts +0 -2
- package/dist/cli/commands/import.d.ts.map +0 -1
- package/dist/cli/commands/import.js +0 -111
- package/dist/cli/commands/import.js.map +0 -1
- package/dist/cli/commands/play.d.ts +0 -2
- package/dist/cli/commands/play.d.ts.map +0 -1
- package/dist/cli/commands/play.js +0 -225
- package/dist/cli/commands/play.js.map +0 -1
- package/dist/cli/commands/record.d.ts +0 -2
- package/dist/cli/commands/record.d.ts.map +0 -1
- package/dist/cli/commands/record.js +0 -443
- package/dist/cli/commands/record.js.map +0 -1
- package/dist/compiler/compiler.d.ts +0 -11
- package/dist/compiler/compiler.d.ts.map +0 -1
- package/dist/compiler/compiler.js +0 -213
- package/dist/compiler/compiler.js.map +0 -1
- package/dist/compiler/index.d.ts +0 -2
- package/dist/compiler/index.d.ts.map +0 -1
- package/dist/compiler/index.js +0 -2
- package/dist/compiler/index.js.map +0 -1
- package/dist/formatter/formatter.d.ts +0 -20
- package/dist/formatter/formatter.d.ts.map +0 -1
- package/dist/formatter/formatter.js +0 -436
- package/dist/formatter/formatter.js.map +0 -1
- package/dist/formatter/index.d.ts +0 -2
- package/dist/formatter/index.d.ts.map +0 -1
- package/dist/formatter/index.js +0 -2
- package/dist/formatter/index.js.map +0 -1
- package/dist/generators/index.d.ts +0 -5
- package/dist/generators/index.d.ts.map +0 -1
- package/dist/generators/index.js +0 -5
- package/dist/generators/index.js.map +0 -1
- package/dist/generators/midi.d.ts +0 -3
- package/dist/generators/midi.d.ts.map +0 -1
- package/dist/generators/midi.js +0 -439
- package/dist/generators/midi.js.map +0 -1
- package/dist/generators/musicxml.d.ts +0 -3
- package/dist/generators/musicxml.d.ts.map +0 -1
- package/dist/generators/musicxml.js +0 -425
- package/dist/generators/musicxml.js.map +0 -1
- package/dist/generators/tempo-midi.d.ts +0 -3
- package/dist/generators/tempo-midi.d.ts.map +0 -1
- package/dist/generators/tempo-midi.js +0 -135
- package/dist/generators/tempo-midi.js.map +0 -1
- package/dist/generators/vsqx.d.ts +0 -3
- package/dist/generators/vsqx.d.ts.map +0 -1
- package/dist/generators/vsqx.js +0 -358
- package/dist/generators/vsqx.js.map +0 -1
- package/dist/importers/index.d.ts +0 -2
- package/dist/importers/index.d.ts.map +0 -1
- package/dist/importers/index.js +0 -3
- package/dist/importers/index.js.map +0 -1
- package/dist/importers/musicxml.d.ts +0 -4
- package/dist/importers/musicxml.d.ts.map +0 -1
- package/dist/importers/musicxml.js +0 -438
- package/dist/importers/musicxml.js.map +0 -1
- package/dist/interpreter/builtins/algorithmic.d.ts +0 -12
- package/dist/interpreter/builtins/algorithmic.d.ts.map +0 -1
- package/dist/interpreter/builtins/algorithmic.js +0 -244
- package/dist/interpreter/builtins/algorithmic.js.map +0 -1
- package/dist/interpreter/builtins/audio.d.ts +0 -10
- package/dist/interpreter/builtins/audio.d.ts.map +0 -1
- package/dist/interpreter/builtins/audio.js +0 -169
- package/dist/interpreter/builtins/audio.js.map +0 -1
- package/dist/interpreter/builtins/core.d.ts +0 -16
- package/dist/interpreter/builtins/core.d.ts.map +0 -1
- package/dist/interpreter/builtins/core.js +0 -267
- package/dist/interpreter/builtins/core.js.map +0 -1
- package/dist/interpreter/builtins/dynamics.d.ts +0 -8
- package/dist/interpreter/builtins/dynamics.d.ts.map +0 -1
- package/dist/interpreter/builtins/dynamics.js +0 -86
- package/dist/interpreter/builtins/dynamics.js.map +0 -1
- package/dist/interpreter/builtins/effects.d.ts +0 -16
- package/dist/interpreter/builtins/effects.d.ts.map +0 -1
- package/dist/interpreter/builtins/effects.js +0 -220
- package/dist/interpreter/builtins/effects.js.map +0 -1
- package/dist/interpreter/builtins/index.d.ts +0 -16
- package/dist/interpreter/builtins/index.d.ts.map +0 -1
- package/dist/interpreter/builtins/index.js +0 -17
- package/dist/interpreter/builtins/index.js.map +0 -1
- package/dist/interpreter/builtins/layout.d.ts +0 -12
- package/dist/interpreter/builtins/layout.d.ts.map +0 -1
- package/dist/interpreter/builtins/layout.js +0 -175
- package/dist/interpreter/builtins/layout.js.map +0 -1
- package/dist/interpreter/builtins/live.d.ts +0 -11
- package/dist/interpreter/builtins/live.d.ts.map +0 -1
- package/dist/interpreter/builtins/live.js +0 -125
- package/dist/interpreter/builtins/live.js.map +0 -1
- package/dist/interpreter/builtins/midi.d.ts +0 -17
- package/dist/interpreter/builtins/midi.d.ts.map +0 -1
- package/dist/interpreter/builtins/midi.js +0 -308
- package/dist/interpreter/builtins/midi.js.map +0 -1
- package/dist/interpreter/builtins/mixing.d.ts +0 -6
- package/dist/interpreter/builtins/mixing.d.ts.map +0 -1
- package/dist/interpreter/builtins/mixing.js +0 -62
- package/dist/interpreter/builtins/mixing.js.map +0 -1
- package/dist/interpreter/builtins/notation.d.ts +0 -24
- package/dist/interpreter/builtins/notation.d.ts.map +0 -1
- package/dist/interpreter/builtins/notation.js +0 -251
- package/dist/interpreter/builtins/notation.js.map +0 -1
- package/dist/interpreter/builtins/ornaments.d.ts +0 -8
- package/dist/interpreter/builtins/ornaments.d.ts.map +0 -1
- package/dist/interpreter/builtins/ornaments.js +0 -155
- package/dist/interpreter/builtins/ornaments.js.map +0 -1
- package/dist/interpreter/builtins/techniques.d.ts +0 -11
- package/dist/interpreter/builtins/techniques.d.ts.map +0 -1
- package/dist/interpreter/builtins/techniques.js +0 -234
- package/dist/interpreter/builtins/techniques.js.map +0 -1
- package/dist/interpreter/builtins/tuning.d.ts +0 -7
- package/dist/interpreter/builtins/tuning.d.ts.map +0 -1
- package/dist/interpreter/builtins/tuning.js +0 -52
- package/dist/interpreter/builtins/tuning.js.map +0 -1
- package/dist/interpreter/builtins/types.d.ts +0 -24
- package/dist/interpreter/builtins/types.d.ts.map +0 -1
- package/dist/interpreter/builtins/types.js +0 -3
- package/dist/interpreter/builtins/types.js.map +0 -1
- package/dist/interpreter/builtins/vocaloid.d.ts +0 -10
- package/dist/interpreter/builtins/vocaloid.d.ts.map +0 -1
- package/dist/interpreter/builtins/vocaloid.js +0 -165
- package/dist/interpreter/builtins/vocaloid.js.map +0 -1
- package/dist/interpreter/index.d.ts +0 -4
- package/dist/interpreter/index.d.ts.map +0 -1
- package/dist/interpreter/index.js +0 -4
- package/dist/interpreter/index.js.map +0 -1
- package/dist/interpreter/interpreter.d.ts +0 -318
- package/dist/interpreter/interpreter.d.ts.map +0 -1
- package/dist/interpreter/interpreter.js +0 -9069
- package/dist/interpreter/interpreter.js.map +0 -1
- package/dist/interpreter/runtime.d.ts +0 -78
- package/dist/interpreter/runtime.d.ts.map +0 -1
- package/dist/interpreter/runtime.js +0 -126
- package/dist/interpreter/runtime.js.map +0 -1
- package/dist/interpreter/scope.d.ts +0 -21
- package/dist/interpreter/scope.d.ts.map +0 -1
- package/dist/interpreter/scope.js +0 -61
- package/dist/interpreter/scope.js.map +0 -1
- package/dist/interpreter/trackState.d.ts +0 -206
- package/dist/interpreter/trackState.d.ts.map +0 -1
- package/dist/interpreter/trackState.js +0 -12
- package/dist/interpreter/trackState.js.map +0 -1
- package/dist/interpreter/validators.d.ts +0 -32
- package/dist/interpreter/validators.d.ts.map +0 -1
- package/dist/interpreter/validators.js +0 -64
- package/dist/interpreter/validators.js.map +0 -1
- package/dist/lexer/index.d.ts +0 -2
- package/dist/lexer/index.d.ts.map +0 -1
- package/dist/lexer/index.js +0 -2
- package/dist/lexer/index.js.map +0 -1
- package/dist/lexer/lexer.d.ts.map +0 -1
- package/dist/lexer/lexer.js +0 -646
- package/dist/lexer/lexer.js.map +0 -1
- package/dist/parser/index.d.ts +0 -2
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -2
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -101
- package/dist/parser/parser.d.ts.map +0 -1
- package/dist/parser/parser.js +0 -2006
- package/dist/parser/parser.js.map +0 -1
- package/dist/types/ast.d.ts +0 -362
- package/dist/types/ast.d.ts.map +0 -1
- package/dist/types/ast.js +0 -3
- package/dist/types/ast.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -4
- package/dist/types/index.js.map +0 -1
- package/dist/types/ir/advanced.d.ts +0 -491
- package/dist/types/ir/advanced.d.ts.map +0 -1
- package/dist/types/ir/advanced.js +0 -3
- package/dist/types/ir/advanced.js.map +0 -1
- package/dist/types/ir/algorithmic.d.ts +0 -48
- package/dist/types/ir/algorithmic.d.ts.map +0 -1
- package/dist/types/ir/algorithmic.js +0 -3
- package/dist/types/ir/algorithmic.js.map +0 -1
- package/dist/types/ir/analysis.d.ts +0 -34
- package/dist/types/ir/analysis.d.ts.map +0 -1
- package/dist/types/ir/analysis.js +0 -3
- package/dist/types/ir/analysis.js.map +0 -1
- package/dist/types/ir/audio.d.ts +0 -249
- package/dist/types/ir/audio.d.ts.map +0 -1
- package/dist/types/ir/audio.js +0 -3
- package/dist/types/ir/audio.js.map +0 -1
- package/dist/types/ir/automation.d.ts +0 -46
- package/dist/types/ir/automation.d.ts.map +0 -1
- package/dist/types/ir/automation.js +0 -3
- package/dist/types/ir/automation.js.map +0 -1
- package/dist/types/ir/collaboration.d.ts +0 -20
- package/dist/types/ir/collaboration.d.ts.map +0 -1
- package/dist/types/ir/collaboration.js +0 -3
- package/dist/types/ir/collaboration.js.map +0 -1
- package/dist/types/ir/core.d.ts +0 -200
- package/dist/types/ir/core.d.ts.map +0 -1
- package/dist/types/ir/core.js +0 -3
- package/dist/types/ir/core.js.map +0 -1
- package/dist/types/ir/effects.d.ts +0 -169
- package/dist/types/ir/effects.d.ts.map +0 -1
- package/dist/types/ir/effects.js +0 -3
- package/dist/types/ir/effects.js.map +0 -1
- package/dist/types/ir/extended.d.ts +0 -104
- package/dist/types/ir/extended.d.ts.map +0 -1
- package/dist/types/ir/extended.js +0 -3
- package/dist/types/ir/extended.js.map +0 -1
- package/dist/types/ir/index.d.ts +0 -16
- package/dist/types/ir/index.d.ts.map +0 -1
- package/dist/types/ir/index.js +0 -17
- package/dist/types/ir/index.js.map +0 -1
- package/dist/types/ir/mastering.d.ts +0 -86
- package/dist/types/ir/mastering.d.ts.map +0 -1
- package/dist/types/ir/mastering.js +0 -3
- package/dist/types/ir/mastering.js.map +0 -1
- package/dist/types/ir/midi.d.ts +0 -79
- package/dist/types/ir/midi.d.ts.map +0 -1
- package/dist/types/ir/midi.js +0 -3
- package/dist/types/ir/midi.js.map +0 -1
- package/dist/types/ir/notation.d.ts +0 -963
- package/dist/types/ir/notation.d.ts.map +0 -1
- package/dist/types/ir/notation.js +0 -3
- package/dist/types/ir/notation.js.map +0 -1
- package/dist/types/ir/recording.d.ts +0 -48
- package/dist/types/ir/recording.d.ts.map +0 -1
- package/dist/types/ir/recording.js +0 -3
- package/dist/types/ir/recording.js.map +0 -1
- package/dist/types/ir/sampling.d.ts +0 -59
- package/dist/types/ir/sampling.d.ts.map +0 -1
- package/dist/types/ir/sampling.js +0 -3
- package/dist/types/ir/sampling.js.map +0 -1
- package/dist/types/ir/sequencing.d.ts +0 -118
- package/dist/types/ir/sequencing.d.ts.map +0 -1
- package/dist/types/ir/sequencing.js +0 -3
- package/dist/types/ir/sequencing.js.map +0 -1
- package/dist/types/ir/sync.d.ts +0 -39
- package/dist/types/ir/sync.d.ts.map +0 -1
- package/dist/types/ir/sync.js +0 -3
- package/dist/types/ir/sync.js.map +0 -1
- package/dist/types/ir.d.ts +0 -2
- package/dist/types/ir.d.ts.map +0 -1
- package/dist/types/ir.js +0 -3
- package/dist/types/ir.js.map +0 -1
- package/dist/types/token.d.ts +0 -120
- package/dist/types/token.d.ts.map +0 -1
- package/dist/types/token.js +0 -174
- package/dist/types/token.js.map +0 -1
- package/lib/articulation.mf +0 -46
- package/lib/composition.mf +0 -299
- package/lib/dynamics.mf +0 -141
- package/lib/expression.mf +0 -221
- package/lib/genres.mf +0 -348
- package/lib/notation.mf +0 -224
- package/lib/ornaments.mf +0 -98
- package/lib/patterns.mf +0 -170
- package/lib/utils.mf +0 -140
package/README.md
CHANGED
|
@@ -1,229 +1,151 @@
|
|
|
1
|
-
# TakoMusic
|
|
1
|
+
# TakoMusic (v4)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TakoMusic is a music composition DSL that evaluates to a neutral `Score` IR and renders via external plugins.
|
|
4
|
+
The language core is backend-agnostic and pushes sound binding to Render Profiles.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Highlights
|
|
6
7
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- **Algorithmic Composition**: Euclidean rhythms, Markov chains, pattern generation
|
|
13
|
-
- **Module System**: Organize code with imports/exports
|
|
14
|
-
- **CLI Tools**: Build, check, format, play, import, record, and render
|
|
8
|
+
- `score`/`clip` DSL with deterministic evaluation (`export fn main() -> Score`)
|
|
9
|
+
- Rational time model (Dur/Pos) without ticks
|
|
10
|
+
- Abstract sounds + render profiles decouple composition from output
|
|
11
|
+
- Renderer Plugin protocol: `capabilities` / `validate` / `render`
|
|
12
|
+
- Web Playground with real-time audio preview
|
|
15
13
|
|
|
16
|
-
##
|
|
14
|
+
## Quick Start
|
|
17
15
|
|
|
18
16
|
```bash
|
|
19
|
-
|
|
20
|
-
npm
|
|
21
|
-
```
|
|
17
|
+
# Install
|
|
18
|
+
npm install -g takomusic
|
|
22
19
|
|
|
23
|
-
|
|
20
|
+
# Build a single file (no config needed)
|
|
21
|
+
mf build song.mf
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
mf
|
|
29
|
-
mf init myproject -t piano # Piano template
|
|
30
|
-
mf init --list # List all templates
|
|
23
|
+
# Or initialize a project
|
|
24
|
+
mf init
|
|
25
|
+
mf build
|
|
26
|
+
mf render
|
|
31
27
|
```
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```mfs
|
|
36
|
-
export proc main() {
|
|
37
|
-
title("My First Song");
|
|
38
|
-
ppq(480);
|
|
39
|
-
timeSig(4, 4);
|
|
40
|
-
tempo(120);
|
|
41
|
-
|
|
42
|
-
track(midi, piano, { ch: 1, program: 0 }) {
|
|
43
|
-
at(1:1);
|
|
44
|
-
chord([C4, E4, G4], 1n);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
track(midi, drums, { ch: 10, vel: 100 }) {
|
|
48
|
-
at(1:1);
|
|
49
|
-
drum(kick, 4n); drum(hhc, 4n);
|
|
50
|
-
drum(snare, 4n); drum(hhc, 4n);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
```
|
|
29
|
+
## Demo Song
|
|
54
30
|
|
|
55
|
-
|
|
31
|
+
Check out `examples/cyberpunk_drive.mf` - a complete synthwave track demonstrating TakoMusic's capabilities:
|
|
32
|
+
|
|
33
|
+
- 64 bars, 8 tracks, 128 BPM
|
|
34
|
+
- Drums, bass, arpeggios, pads, and lead melody
|
|
35
|
+
- Uses std:core, std:transform, std:theory, std:drums
|
|
56
36
|
|
|
57
37
|
```bash
|
|
58
|
-
|
|
59
|
-
mf build
|
|
60
|
-
mf
|
|
61
|
-
mf render -p cli # Render audio
|
|
38
|
+
# Build and render the demo
|
|
39
|
+
mf build examples/cyberpunk_drive.mf
|
|
40
|
+
mf render examples/cyberpunk_drive.mf.score.json -p profiles/midi.mf.profile.json
|
|
62
41
|
```
|
|
63
42
|
|
|
64
|
-
## CLI Commands
|
|
65
|
-
|
|
66
|
-
| Command | Description |
|
|
67
|
-
|---------|-------------|
|
|
68
|
-
| `mf init [dir]` | Initialize new project |
|
|
69
|
-
| `mf build` | Compile to IR and output formats |
|
|
70
|
-
| `mf check` | Static analysis |
|
|
71
|
-
| `mf fmt` | Format source files |
|
|
72
|
-
| `mf play [file]` | Live preview with FluidSynth |
|
|
73
|
-
| `mf import <file>` | Import MusicXML to MFS |
|
|
74
|
-
| `mf record` | Record MIDI input |
|
|
75
|
-
| `mf render -p <profile>` | Render audio |
|
|
76
|
-
| `mf doctor` | Check dependencies |
|
|
77
|
-
|
|
78
|
-
**Available Templates:** `default`, `piano`, `orchestral`, `edm`, `chiptune`, `jazz`, `vocaloid`, `minimal`
|
|
79
|
-
|
|
80
43
|
## Documentation
|
|
81
44
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
**Drum Names:** `kick`, `snare`, `hhc`, `hho`, `tom1`, `crash`, `ride`
|
|
108
|
-
|
|
109
|
-
### Control Structures
|
|
110
|
-
|
|
111
|
-
```mfs
|
|
112
|
-
// Procedures
|
|
113
|
-
proc myPattern() {
|
|
114
|
-
note(C4, 4n);
|
|
45
|
+
**Web Documentation**: https://takomusic.pages.dev (includes Playground)
|
|
46
|
+
|
|
47
|
+
Local documentation:
|
|
48
|
+
- Language spec: `docs/LANGUAGE.md`
|
|
49
|
+
- Core DSL & built-ins: `docs/BUILTINS.md`
|
|
50
|
+
- Standard library: `docs/STDLIB.md`
|
|
51
|
+
- Rendering and plugins: `docs/RENDERING.md`
|
|
52
|
+
- Schemas: `docs/SCHEMAS.md`
|
|
53
|
+
|
|
54
|
+
## Example (.mf)
|
|
55
|
+
|
|
56
|
+
```tako
|
|
57
|
+
import { concat, repeat } from "std:core";
|
|
58
|
+
import { kick, snare, hhc } from "std:drums";
|
|
59
|
+
import { majorTriad, minorTriad } from "std:theory";
|
|
60
|
+
|
|
61
|
+
fn drumPart() -> Clip {
|
|
62
|
+
return clip {
|
|
63
|
+
hit(kick, q, vel: 0.9);
|
|
64
|
+
hit(hhc, e, vel: 0.5);
|
|
65
|
+
hit(hhc, e, vel: 0.5);
|
|
66
|
+
hit(snare, q, vel: 0.85);
|
|
67
|
+
hit(hhc, q, vel: 0.5);
|
|
68
|
+
};
|
|
115
69
|
}
|
|
116
70
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
71
|
+
fn chords() -> Clip {
|
|
72
|
+
return clip {
|
|
73
|
+
chord(majorTriad(C4), w, vel: 0.6);
|
|
74
|
+
chord(minorTriad(A3), w, vel: 0.6);
|
|
75
|
+
chord(majorTriad(F3), w, vel: 0.6);
|
|
76
|
+
chord(majorTriad(G3), w, vel: 0.6);
|
|
77
|
+
};
|
|
120
78
|
}
|
|
121
79
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
} else {
|
|
126
|
-
rest(4n);
|
|
127
|
-
}
|
|
128
|
-
```
|
|
80
|
+
export fn main() -> Score {
|
|
81
|
+
return score {
|
|
82
|
+
meta { title "Simple Song"; }
|
|
129
83
|
|
|
130
|
-
|
|
84
|
+
meter { 1:1 -> 4/4; }
|
|
85
|
+
tempo { 1:1 -> 120bpm; }
|
|
131
86
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
drum(hhc, 8n);
|
|
137
|
-
}
|
|
87
|
+
sound "piano" kind instrument { range A0..C8; }
|
|
88
|
+
sound "kit" kind drumKit {
|
|
89
|
+
drumKeys { kick; snare; hhc; }
|
|
90
|
+
}
|
|
138
91
|
|
|
139
|
-
|
|
140
|
-
|
|
92
|
+
track "Piano" role Instrument sound "piano" {
|
|
93
|
+
place 1:1 repeat(chords(), 2);
|
|
94
|
+
}
|
|
141
95
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
for (bar in 1..=4) {
|
|
145
|
-
BEAT_8();
|
|
96
|
+
track "Drums" role Drums sound "kit" {
|
|
97
|
+
place 1:1 repeat(drumPart(), 8);
|
|
146
98
|
}
|
|
147
|
-
}
|
|
99
|
+
};
|
|
148
100
|
}
|
|
149
101
|
```
|
|
150
102
|
|
|
151
|
-
|
|
103
|
+
## Pipeline
|
|
152
104
|
|
|
153
|
-
|
|
154
|
-
import
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
105
|
+
1. Parse `.mf` -> AST
|
|
106
|
+
2. Resolve/import + typecheck (Pos/Dur separation)
|
|
107
|
+
3. Evaluate `main()` -> `Score`
|
|
108
|
+
4. Normalize IR (bar:beat -> absolute Pos)
|
|
109
|
+
5. Emit `score.json` (IR v4)
|
|
110
|
+
6. Render via profile + renderer plugin
|
|
158
111
|
|
|
159
|
-
##
|
|
160
|
-
|
|
161
|
-
```toml
|
|
162
|
-
[project]
|
|
163
|
-
name = "my-song"
|
|
164
|
-
version = "1.0.0"
|
|
165
|
-
entry = "src/main.mf"
|
|
166
|
-
dist = "dist"
|
|
167
|
-
out = "out"
|
|
168
|
-
|
|
169
|
-
[profiles.cli]
|
|
170
|
-
backend = "headless"
|
|
171
|
-
musicxml_out = "dist/vocal.musicxml"
|
|
172
|
-
band_mid_out = "dist/band.mid"
|
|
173
|
-
render_out = "out/mix.mp3"
|
|
174
|
-
vocal_cmd = ["neutrino", "{musicxml}", "{vocal_wav}"]
|
|
175
|
-
midi_cmd = ["fluidsynth", "-ni", "soundfont.sf2", "{mid}", "-F", "{band_wav}"]
|
|
176
|
-
mix_cmd = ["ffmpeg", "-i", "{vocal_wav}", "-i", "{band_wav}", "-y", "{mix_wav}"]
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## External Tools
|
|
180
|
-
|
|
181
|
-
### FluidSynth (Live Preview & MIDI Rendering)
|
|
112
|
+
## CLI
|
|
182
113
|
|
|
183
114
|
```bash
|
|
184
|
-
#
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
# macOS
|
|
188
|
-
brew install fluid-synth
|
|
115
|
+
# Check syntax and types
|
|
116
|
+
mf check song.mf
|
|
189
117
|
|
|
190
|
-
#
|
|
191
|
-
|
|
192
|
-
|
|
118
|
+
# Build single file (no config required)
|
|
119
|
+
mf build song.mf
|
|
120
|
+
mf build song.mf -o output.json
|
|
193
121
|
|
|
194
|
-
|
|
122
|
+
# Build project with mfconfig.toml
|
|
123
|
+
mf build
|
|
124
|
+
mf build -w # Watch mode
|
|
195
125
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
126
|
+
# Render to output format
|
|
127
|
+
mf render score.json -p profile.json
|
|
128
|
+
```
|
|
199
129
|
|
|
200
|
-
|
|
130
|
+
Renderer plugins are external executables; use `--plugin` to override the resolver if needed.
|
|
201
131
|
|
|
202
|
-
|
|
203
|
-
# Windows
|
|
204
|
-
winget install FFmpeg
|
|
132
|
+
## Standard Library
|
|
205
133
|
|
|
206
|
-
|
|
207
|
-
|
|
134
|
+
| Module | Description |
|
|
135
|
+
|--------|-------------|
|
|
136
|
+
| `std:core` | `concat`, `repeat`, `overlay`, `padTo`, `slice`, `shift` |
|
|
137
|
+
| `std:transform` | `transpose`, `stretch`, `quantize`, `swing`, `humanize` |
|
|
138
|
+
| `std:theory` | Chords, scales, intervals, progressions |
|
|
139
|
+
| `std:curves` | `linear`, `easeInOut`, `piecewise` |
|
|
140
|
+
| `std:drums` | Drum keys and patterns |
|
|
141
|
+
| `std:vocal` | `text`, `align`, `vibrato`, `autoBreath` |
|
|
208
142
|
|
|
209
|
-
|
|
210
|
-
apt install ffmpeg
|
|
211
|
-
```
|
|
143
|
+
## Versioning
|
|
212
144
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
| E050 | Global function called after track started |
|
|
218
|
-
| E110 | Pitch out of range (0-127) |
|
|
219
|
-
| E200 | Vocal note overlap |
|
|
220
|
-
| E210 | Invalid/empty lyric in vocal track |
|
|
221
|
-
| E220 | drum() used in vocal track |
|
|
222
|
-
| E221 | chord() used in vocal track |
|
|
223
|
-
| E300 | Top-level execution in imported module |
|
|
224
|
-
| E310 | Recursion detected |
|
|
225
|
-
| E400 | Import not found / undefined symbol / no main() |
|
|
226
|
-
| E401 | For range bounds must be compile-time constants |
|
|
145
|
+
- Language: v4
|
|
146
|
+
- IR schema: `tako.irVersion = 4`
|
|
147
|
+
- Profile schema: `tako.profileVersion = 1`
|
|
148
|
+
- Plugin protocol: `tako.pluginProtocolVersion = 1`
|
|
227
149
|
|
|
228
150
|
## License
|
|
229
151
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/evaluator.test.ts"],"names":[],"mappings":""}
|