@devaloop/devalang 0.0.1-beta.3 → 0.1.2

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 (346) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +251 -221
  3. package/out-tsc/api.d.ts +180 -0
  4. package/out-tsc/api.d.ts.map +1 -0
  5. package/out-tsc/api.js +286 -0
  6. package/out-tsc/api.js.map +1 -0
  7. package/out-tsc/bin/index.d.ts +12 -0
  8. package/out-tsc/bin/index.d.ts.map +1 -0
  9. package/out-tsc/bin/index.js +20 -54
  10. package/out-tsc/bin/index.js.map +1 -0
  11. package/out-tsc/examples/basic-usage.d.ts +8 -0
  12. package/out-tsc/examples/basic-usage.d.ts.map +1 -0
  13. package/out-tsc/examples/basic-usage.js +113 -0
  14. package/out-tsc/examples/basic-usage.js.map +1 -0
  15. package/out-tsc/index.d.ts +19 -5
  16. package/out-tsc/index.d.ts.map +1 -0
  17. package/out-tsc/index.js +24 -6
  18. package/out-tsc/index.js.map +1 -0
  19. package/out-tsc/scripts/copy-wasm-dts.d.ts +7 -0
  20. package/out-tsc/scripts/copy-wasm-dts.d.ts.map +1 -0
  21. package/out-tsc/scripts/copy-wasm-dts.js +36 -32
  22. package/out-tsc/scripts/copy-wasm-dts.js.map +1 -0
  23. package/out-tsc/scripts/postinstall.d.ts +1 -0
  24. package/out-tsc/scripts/postinstall.d.ts.map +1 -0
  25. package/out-tsc/scripts/postinstall.js +4 -1
  26. package/out-tsc/scripts/postinstall.js.map +1 -0
  27. package/out-tsc/scripts/version/bump.d.ts +5 -1
  28. package/out-tsc/scripts/version/bump.d.ts.map +1 -0
  29. package/out-tsc/scripts/version/bump.js +122 -44
  30. package/out-tsc/scripts/version/bump.js.map +1 -0
  31. package/out-tsc/scripts/version/fetch.d.ts +12 -1
  32. package/out-tsc/scripts/version/fetch.d.ts.map +1 -0
  33. package/out-tsc/scripts/version/fetch.js +68 -24
  34. package/out-tsc/scripts/version/fetch.js.map +1 -0
  35. package/out-tsc/scripts/version/index.d.ts +6 -0
  36. package/out-tsc/scripts/version/index.d.ts.map +1 -0
  37. package/out-tsc/scripts/version/index.js +44 -22
  38. package/out-tsc/scripts/version/index.js.map +1 -0
  39. package/out-tsc/scripts/version/sync.d.ts +5 -1
  40. package/out-tsc/scripts/version/sync.d.ts.map +1 -0
  41. package/out-tsc/scripts/version/sync.js +95 -29
  42. package/out-tsc/scripts/version/sync.js.map +1 -0
  43. package/out-tsc/types.d.ts +68 -0
  44. package/out-tsc/types.d.ts.map +1 -0
  45. package/out-tsc/{core/types/value.js → types.js} +4 -0
  46. package/out-tsc/types.js.map +1 -0
  47. package/out-tsc/wasm.d.ts +8 -0
  48. package/out-tsc/wasm.d.ts.map +1 -0
  49. package/out-tsc/{core/index.js → wasm.js} +9 -6
  50. package/out-tsc/wasm.js.map +1 -0
  51. package/package.json +42 -42
  52. package/.cargo/config.toml +0 -2
  53. package/.devalang +0 -9
  54. package/.github/workflows/ci.yml +0 -103
  55. package/Cargo.toml +0 -84
  56. package/docs/CHANGELOG.md +0 -622
  57. package/docs/CONTRIBUTING.md +0 -101
  58. package/docs/ROADMAP.md +0 -38
  59. package/docs/TODO.md +0 -71
  60. package/examples/automation.deva +0 -42
  61. package/examples/bank.deva +0 -7
  62. package/examples/bus.deva +0 -10
  63. package/examples/chain.deva +0 -19
  64. package/examples/condition.deva +0 -20
  65. package/examples/duration.deva +0 -9
  66. package/examples/effect.deva +0 -2
  67. package/examples/events.deva +0 -12
  68. package/examples/filter.deva +0 -11
  69. package/examples/function.deva +0 -15
  70. package/examples/group.deva +0 -12
  71. package/examples/index.deva +0 -63
  72. package/examples/lfo.deva +0 -9
  73. package/examples/loop.deva +0 -10
  74. package/examples/pattern.deva +0 -8
  75. package/examples/plugin.deva +0 -16
  76. package/examples/routing.deva +0 -23
  77. package/examples/samples/hat-808.wav +0 -0
  78. package/examples/samples/kick-808.wav +0 -0
  79. package/examples/synth.deva +0 -24
  80. package/examples/synth_types.deva +0 -17
  81. package/examples/variables.deva +0 -9
  82. package/out-tsc/bin/project-version.json +0 -6
  83. package/out-tsc/core/functions/index.d.ts +0 -42
  84. package/out-tsc/core/functions/index.js +0 -87
  85. package/out-tsc/core/index.d.ts +0 -6
  86. package/out-tsc/core/types/index.d.ts +0 -4
  87. package/out-tsc/core/types/index.js +0 -20
  88. package/out-tsc/core/types/plugin.d.ts +0 -18
  89. package/out-tsc/core/types/plugin.js +0 -2
  90. package/out-tsc/core/types/result.d.ts +0 -27
  91. package/out-tsc/core/types/result.js +0 -2
  92. package/out-tsc/core/types/statement.d.ts +0 -106
  93. package/out-tsc/core/types/statement.js +0 -2
  94. package/out-tsc/core/types/value.d.ts +0 -43
  95. package/out-tsc/pkg/devalang_core.d.ts +0 -15
  96. package/out-tsc/pkg/devalang_core.js +0 -65
  97. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +0 -34
  98. package/out-tsc/scripts/version/copy-to-binary.d.ts +0 -1
  99. package/out-tsc/scripts/version/copy-to-binary.js +0 -79
  100. package/project-version.json +0 -6
  101. package/rust/bindings/Cargo.toml +0 -9
  102. package/rust/bindings/src/lib.rs +0 -86
  103. package/rust/cli/addon/commands.rs +0 -35
  104. package/rust/cli/addon/download.rs +0 -234
  105. package/rust/cli/addon/install.rs +0 -33
  106. package/rust/cli/addon/list.rs +0 -224
  107. package/rust/cli/addon/metadata.rs +0 -124
  108. package/rust/cli/addon/mod.rs +0 -8
  109. package/rust/cli/addon/remove.rs +0 -271
  110. package/rust/cli/addon/update.rs +0 -305
  111. package/rust/cli/addon/utils.rs +0 -109
  112. package/rust/cli/build/commands.rs +0 -153
  113. package/rust/cli/build/mod.rs +0 -2
  114. package/rust/cli/build/process.rs +0 -165
  115. package/rust/cli/check/mod.rs +0 -208
  116. package/rust/cli/discover/commands.rs +0 -275
  117. package/rust/cli/discover/config.rs +0 -109
  118. package/rust/cli/discover/fs.rs +0 -19
  119. package/rust/cli/discover/install.rs +0 -214
  120. package/rust/cli/discover/metadata.rs +0 -48
  121. package/rust/cli/discover/mod.rs +0 -5
  122. package/rust/cli/init/commands.rs +0 -88
  123. package/rust/cli/init/mod.rs +0 -1
  124. package/rust/cli/login/commands.rs +0 -124
  125. package/rust/cli/login/mod.rs +0 -1
  126. package/rust/cli/me/commands.rs +0 -52
  127. package/rust/cli/me/mod.rs +0 -1
  128. package/rust/cli/mod.rs +0 -12
  129. package/rust/cli/parser.rs +0 -320
  130. package/rust/cli/play/commands.rs +0 -375
  131. package/rust/cli/play/io.rs +0 -17
  132. package/rust/cli/play/mod.rs +0 -5
  133. package/rust/cli/play/process.rs +0 -159
  134. package/rust/cli/play/realtime.rs +0 -91
  135. package/rust/cli/play/utils.rs +0 -23
  136. package/rust/cli/telemetry/commands.rs +0 -22
  137. package/rust/cli/telemetry/event_creator.rs +0 -80
  138. package/rust/cli/telemetry/mod.rs +0 -3
  139. package/rust/cli/telemetry/send.rs +0 -51
  140. package/rust/cli/template/commands.rs +0 -69
  141. package/rust/cli/template/mod.rs +0 -1
  142. package/rust/cli/update/commands.rs +0 -6
  143. package/rust/cli/update/mod.rs +0 -1
  144. package/rust/config/driver.rs +0 -112
  145. package/rust/config/mod.rs +0 -3
  146. package/rust/config/ops.rs +0 -26
  147. package/rust/config/settings.rs +0 -101
  148. package/rust/core/audio/engine/driver.rs +0 -237
  149. package/rust/core/audio/engine/export.rs +0 -169
  150. package/rust/core/audio/engine/helpers.rs +0 -178
  151. package/rust/core/audio/engine/mod.rs +0 -56
  152. package/rust/core/audio/engine/notes/dsp.rs +0 -88
  153. package/rust/core/audio/engine/notes/mod.rs +0 -53
  154. package/rust/core/audio/engine/notes/params.rs +0 -294
  155. package/rust/core/audio/engine/sample/insert.rs +0 -300
  156. package/rust/core/audio/engine/sample/mod.rs +0 -40
  157. package/rust/core/audio/engine/sample/padding.rs +0 -170
  158. package/rust/core/audio/evaluator/condition.rs +0 -61
  159. package/rust/core/audio/evaluator/mod.rs +0 -9
  160. package/rust/core/audio/evaluator/numeric.rs +0 -152
  161. package/rust/core/audio/evaluator/rhs.rs +0 -16
  162. package/rust/core/audio/evaluator/string_expr.rs +0 -94
  163. package/rust/core/audio/interpreter/driver.rs +0 -574
  164. package/rust/core/audio/interpreter/mod.rs +0 -2
  165. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +0 -179
  166. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +0 -398
  167. package/rust/core/audio/interpreter/statements/arrow_call/methods/effects.rs +0 -323
  168. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +0 -3
  169. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +0 -371
  170. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +0 -3
  171. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +0 -192
  172. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +0 -24
  173. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +0 -116
  174. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +0 -97
  175. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +0 -100
  176. package/rust/core/audio/interpreter/statements/automate.rs +0 -16
  177. package/rust/core/audio/interpreter/statements/call.rs +0 -325
  178. package/rust/core/audio/interpreter/statements/condition.rs +0 -72
  179. package/rust/core/audio/interpreter/statements/function.rs +0 -24
  180. package/rust/core/audio/interpreter/statements/let_.rs +0 -36
  181. package/rust/core/audio/interpreter/statements/load.rs +0 -17
  182. package/rust/core/audio/interpreter/statements/loop_.rs +0 -115
  183. package/rust/core/audio/interpreter/statements/mod.rs +0 -12
  184. package/rust/core/audio/interpreter/statements/sleep.rs +0 -28
  185. package/rust/core/audio/interpreter/statements/spawn.rs +0 -302
  186. package/rust/core/audio/interpreter/statements/tempo.rs +0 -40
  187. package/rust/core/audio/interpreter/statements/trigger.rs +0 -242
  188. package/rust/core/audio/loader/mod.rs +0 -1
  189. package/rust/core/audio/loader/trigger.rs +0 -98
  190. package/rust/core/audio/mod.rs +0 -6
  191. package/rust/core/audio/player.rs +0 -70
  192. package/rust/core/audio/special/easing.rs +0 -189
  193. package/rust/core/audio/special/env.rs +0 -45
  194. package/rust/core/audio/special/math.rs +0 -134
  195. package/rust/core/audio/special/mod.rs +0 -9
  196. package/rust/core/audio/special/modulator.rs +0 -143
  197. package/rust/core/builder/mod.rs +0 -129
  198. package/rust/core/debugger/lexer.rs +0 -27
  199. package/rust/core/debugger/logs.rs +0 -52
  200. package/rust/core/debugger/mod.rs +0 -30
  201. package/rust/core/debugger/preprocessor.rs +0 -27
  202. package/rust/core/debugger/store.rs +0 -38
  203. package/rust/core/error/mod.rs +0 -269
  204. package/rust/core/lexer/driver.rs +0 -59
  205. package/rust/core/lexer/handler/arrow.rs +0 -82
  206. package/rust/core/lexer/handler/at.rs +0 -21
  207. package/rust/core/lexer/handler/brace.rs +0 -41
  208. package/rust/core/lexer/handler/colon.rs +0 -21
  209. package/rust/core/lexer/handler/comment.rs +0 -30
  210. package/rust/core/lexer/handler/dot.rs +0 -21
  211. package/rust/core/lexer/handler/driver.rs +0 -337
  212. package/rust/core/lexer/handler/identifier.rs +0 -47
  213. package/rust/core/lexer/handler/indent.rs +0 -66
  214. package/rust/core/lexer/handler/mod.rs +0 -15
  215. package/rust/core/lexer/handler/newline.rs +0 -23
  216. package/rust/core/lexer/handler/number.rs +0 -31
  217. package/rust/core/lexer/handler/operator.rs +0 -46
  218. package/rust/core/lexer/handler/parenthesis.rs +0 -41
  219. package/rust/core/lexer/handler/slash.rs +0 -21
  220. package/rust/core/lexer/handler/string.rs +0 -63
  221. package/rust/core/lexer/mod.rs +0 -3
  222. package/rust/core/lexer/token.rs +0 -91
  223. package/rust/core/mod.rs +0 -9
  224. package/rust/core/parser/driver/block.rs +0 -111
  225. package/rust/core/parser/driver/cursor.rs +0 -82
  226. package/rust/core/parser/driver/driver_impl.rs +0 -159
  227. package/rust/core/parser/driver/mod.rs +0 -6
  228. package/rust/core/parser/driver/parse_array.rs +0 -120
  229. package/rust/core/parser/driver/parse_map.rs +0 -247
  230. package/rust/core/parser/driver/parser.rs +0 -160
  231. package/rust/core/parser/handler/arrow_call.rs +0 -328
  232. package/rust/core/parser/handler/at.rs +0 -279
  233. package/rust/core/parser/handler/bank.rs +0 -104
  234. package/rust/core/parser/handler/condition.rs +0 -83
  235. package/rust/core/parser/handler/dot.rs +0 -148
  236. package/rust/core/parser/handler/identifier/automate.rs +0 -254
  237. package/rust/core/parser/handler/identifier/call.rs +0 -91
  238. package/rust/core/parser/handler/identifier/emit.rs +0 -70
  239. package/rust/core/parser/handler/identifier/function.rs +0 -113
  240. package/rust/core/parser/handler/identifier/group.rs +0 -89
  241. package/rust/core/parser/handler/identifier/let_.rs +0 -173
  242. package/rust/core/parser/handler/identifier/mod.rs +0 -55
  243. package/rust/core/parser/handler/identifier/on.rs +0 -107
  244. package/rust/core/parser/handler/identifier/print.rs +0 -49
  245. package/rust/core/parser/handler/identifier/sleep.rs +0 -96
  246. package/rust/core/parser/handler/identifier/spawn.rs +0 -91
  247. package/rust/core/parser/handler/identifier/synth.rs +0 -171
  248. package/rust/core/parser/handler/loop_.rs +0 -194
  249. package/rust/core/parser/handler/mod.rs +0 -9
  250. package/rust/core/parser/handler/pattern.rs +0 -97
  251. package/rust/core/parser/handler/tempo.rs +0 -105
  252. package/rust/core/parser/mod.rs +0 -3
  253. package/rust/core/parser/statement.rs +0 -10
  254. package/rust/core/plugin/loader.rs +0 -137
  255. package/rust/core/plugin/mod.rs +0 -2
  256. package/rust/core/plugin/runner/mod.rs +0 -11
  257. package/rust/core/plugin/runner/non_wasm.rs +0 -481
  258. package/rust/core/plugin/runner/wasm32.rs +0 -44
  259. package/rust/core/preprocessor/loader/inject.rs +0 -313
  260. package/rust/core/preprocessor/loader/loader_helpers.rs +0 -110
  261. package/rust/core/preprocessor/loader/mod.rs +0 -235
  262. package/rust/core/preprocessor/mod.rs +0 -4
  263. package/rust/core/preprocessor/module.rs +0 -55
  264. package/rust/core/preprocessor/processor/handlers.rs +0 -107
  265. package/rust/core/preprocessor/processor/mod.rs +0 -1
  266. package/rust/core/preprocessor/resolver/bank.rs +0 -49
  267. package/rust/core/preprocessor/resolver/call.rs +0 -124
  268. package/rust/core/preprocessor/resolver/condition.rs +0 -95
  269. package/rust/core/preprocessor/resolver/driver.rs +0 -324
  270. package/rust/core/preprocessor/resolver/function.rs +0 -69
  271. package/rust/core/preprocessor/resolver/group.rs +0 -122
  272. package/rust/core/preprocessor/resolver/let_.rs +0 -32
  273. package/rust/core/preprocessor/resolver/loop_.rs +0 -318
  274. package/rust/core/preprocessor/resolver/mod.rs +0 -16
  275. package/rust/core/preprocessor/resolver/pattern.rs +0 -95
  276. package/rust/core/preprocessor/resolver/spawn.rs +0 -99
  277. package/rust/core/preprocessor/resolver/synth.rs +0 -54
  278. package/rust/core/preprocessor/resolver/tempo.rs +0 -48
  279. package/rust/core/preprocessor/resolver/trigger.rs +0 -116
  280. package/rust/core/preprocessor/resolver/value.rs +0 -176
  281. package/rust/core/store/global.rs +0 -57
  282. package/rust/core/store/mod.rs +0 -1
  283. package/rust/lib.rs +0 -323
  284. package/rust/macros/Cargo.toml +0 -14
  285. package/rust/macros/src/lib.rs +0 -52
  286. package/rust/main.rs +0 -557
  287. package/rust/types/Cargo.toml +0 -11
  288. package/rust/types/src/addons.rs +0 -57
  289. package/rust/types/src/ast.rs +0 -202
  290. package/rust/types/src/config.rs +0 -82
  291. package/rust/types/src/lib.rs +0 -15
  292. package/rust/types/src/plugin.rs +0 -20
  293. package/rust/types/src/store.rs +0 -139
  294. package/rust/types/src/telemetry.rs +0 -85
  295. package/rust/utils/Cargo.toml +0 -29
  296. package/rust/utils/src/error.rs +0 -186
  297. package/rust/utils/src/file.rs +0 -477
  298. package/rust/utils/src/first_usage.rs +0 -97
  299. package/rust/utils/src/lib.rs +0 -9
  300. package/rust/utils/src/logger.rs +0 -200
  301. package/rust/utils/src/path.rs +0 -158
  302. package/rust/utils/src/signature.rs +0 -41
  303. package/rust/utils/src/spinner.rs +0 -20
  304. package/rust/utils/src/version.rs +0 -58
  305. package/rust/utils/src/watcher.rs +0 -46
  306. package/rust/web/api.rs +0 -5
  307. package/rust/web/auth.rs +0 -5
  308. package/rust/web/cdn.rs +0 -34
  309. package/rust/web/forge.rs +0 -5
  310. package/rust/web/mod.rs +0 -5
  311. package/rust/web/sso.rs +0 -5
  312. package/templates/minimal/.devalang +0 -5
  313. package/templates/minimal/README.md +0 -218
  314. package/templates/minimal/src/index.deva +0 -2
  315. package/templates/welcome/.devalang +0 -5
  316. package/templates/welcome/README.md +0 -218
  317. package/templates/welcome/samples/kick-808.wav +0 -0
  318. package/templates/welcome/src/index.deva +0 -61
  319. package/templates/welcome/src/variables.deva +0 -3
  320. package/tests/integration.rs +0 -21
  321. package/tests/rust/cli_check_build.rs +0 -21
  322. package/tests/rust/cli_help.rs +0 -12
  323. package/tests/rust/cli_template_list.rs +0 -10
  324. package/tests/rust/cli_version.rs +0 -11
  325. package/tests/typescript/index.spec.ts +0 -136
  326. package/tests/typescript/playhead.spec.ts +0 -36
  327. package/tests/typescript/render_e2e.spec.ts +0 -77
  328. package/tsconfig.json +0 -115
  329. package/typescript/bin/index.ts +0 -28
  330. package/typescript/core/functions/index.ts +0 -94
  331. package/typescript/core/index.ts +0 -6
  332. package/typescript/core/types/index.ts +0 -4
  333. package/typescript/core/types/plugin.ts +0 -19
  334. package/typescript/core/types/result.ts +0 -29
  335. package/typescript/core/types/statement.ts +0 -47
  336. package/typescript/core/types/value.ts +0 -29
  337. package/typescript/index.ts +0 -8
  338. package/typescript/pkg/devalang_core.d.ts +0 -4
  339. package/typescript/pkg/devalang_core.ts +0 -65
  340. package/typescript/scripts/copy-wasm-dts.ts +0 -41
  341. package/typescript/scripts/postinstall.ts +0 -85
  342. package/typescript/scripts/version/bump.ts +0 -44
  343. package/typescript/scripts/version/copy-to-binary.ts +0 -82
  344. package/typescript/scripts/version/fetch.ts +0 -18
  345. package/typescript/scripts/version/index.ts +0 -25
  346. package/typescript/scripts/version/sync.ts +0 -24
@@ -1,101 +0,0 @@
1
- <div align="center">
2
- <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
- </div>
4
-
5
- # Contributing to Devalang
6
-
7
- Thanks for considering a contribution! This document explains how to set up your environment, build the project, and submit changes.
8
-
9
- ## Code of Conduct
10
-
11
- By participating, you agree to follow our community standards: be respectful, constructive, and empathetic. If something goes wrong, please open an issue.
12
-
13
- ## Project structure
14
-
15
- - `rust/`: Rust CLI, core engine, parser, preprocessor, audio runtime
16
- - `typescript/`: TypeScript utilities and scripts
17
- - `pkg/`: WASM package output (generated by wasm-pack)
18
- - `examples/`: Devalang examples
19
- - `docs/`: Documentation
20
-
21
- ## Prerequisites
22
-
23
- - Rust (stable, edition 2024)
24
- - Node.js 18+
25
- - wasm-pack (if you work on the WASM package)
26
-
27
- ## Setup
28
-
29
- 1. Install dependencies
30
-
31
- - Rust toolchain (<https://rustup.rs>)
32
- - Node.js (<https://nodejs.org>)
33
-
34
- 1. Clone and install
35
-
36
- - Clone this repository
37
- - Run `npm install`
38
-
39
- ## Build and run
40
-
41
- - Build (debug): `cargo build`
42
- - Build (release): `cargo build --release`
43
- - TypeScript compile: `npm run script:build`
44
- - Development helpers:
45
- - `npm run rust:dev:build` — build AST/audio once
46
- - `npm run rust:dev:check` — syntax checks with debug logs
47
- - `npm run rust:dev:play` — play audio in a loop (repeat) with debug
48
- - WASM builds:
49
- - Web: `npm run rust:wasm:web`
50
- - Node: `npm run rust:wasm:node`
51
-
52
- ## Tests and sanity checks
53
-
54
- - Build and quick smoke test on examples:
55
- - `cargo build`
56
- - `npm run rust:dev:play`
57
- - Prepublish (used by CI/release): `npm run prepublish`
58
-
59
- ## Versioning and releases
60
-
61
- - Project version lives in multiple places:
62
- - `Cargo.toml`
63
- - `package.json`
64
- - `project-version.json` (includes build counter and last commit)
65
- - `pkg/package.json` (WASM package)
66
- - Bump versions to the next pre-release (e.g. 0.0.1-alpha.16), then tag the repository:
67
- - Bump version: `npm run script:version:bump pre`
68
- - Commit bump: `git commit -am "chore: bump version to 0.0.1-alpha.X"`
69
- - Create tag: `git tag v0.0.1-alpha.X`
70
- - Push: `git push && git push origin v0.0.1-alpha.X`
71
- - CI publishes release artifacts on tags matching `v*`.
72
-
73
- ## Pull requests
74
-
75
- - Keep PRs small and focused
76
- - Describe the motivation and the approach
77
- - Link related issues
78
- - Add/update tests (when relevant)
79
- - Keep the existing style; avoid mass reformatting
80
-
81
- ## Coding guidelines
82
-
83
- - Rust: follow Clippy suggestions where practical; prefer small, focused modules
84
- - Keep public APIs stable; document breaking changes in the changelog
85
- - Add comments where behavior is non-obvious (parser and interpreter paths)
86
-
87
- ## Reporting issues
88
-
89
- Please include:
90
-
91
- - Version (`devalang --version`), OS, and repro steps
92
- - Minimal code sample (`.deva`) if possible
93
- - Expected vs. actual behavior
94
-
95
- ## Security
96
-
97
- If you discover a vulnerability, please report it privately (<contact@devaloop.com>). Do not open a public issue until coordinated disclosure.
98
-
99
- ## Thanks
100
-
101
- We appreciate your time and contributions — whether it’s code, docs, or feedback.
package/docs/ROADMAP.md DELETED
@@ -1,38 +0,0 @@
1
- <div align="center">
2
- <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
- </div>
4
-
5
- # Roadmap
6
-
7
- Devalang is a work in progress. Here’s what we’re planning next:
8
-
9
- ## Completed
10
-
11
- - ✅ **Audio engine**: Integrate the audio engine for sound playback.
12
- - ✅ **MIDI export**: Implement MIDI export functionality to save compositions as MIDI files.
13
- - ✅ **Basic syntax**: Implement the core syntax for Devalang, including data types and basic statements.
14
- - ✅ **Watch mode**: Add a watch mode to automatically rebuild on file changes.
15
- - ✅ **Module system**: Add support for importing and exporting variables between files using `@import` and `@export`.
16
- - ✅ **AST generation**: Implement the Abstract Syntax Tree (AST) generation for debugging and future compilation.
17
- - ✅ **Basic data types**: Support strings, numbers, booleans, maps, and arrays.
18
- - ✅ **BPM assignment**: Implement `bpm` assignment to set the tempo.
19
- - ✅ **Bank declaration**: Add `bank` declaration to define the instrument set.
20
- - ✅ **Looping system**: Implement a looping system with fixed repetitions using `loop 4:`.
21
- - ✅ **Instruction calls**: Add support for instruction calls with parameters (e.g. `.kick auto {reverb:10, decay:20}`).
22
- - ✅ **Let assignments**: Implement `let` assignments for storing reusable values.
23
- - ✅ **Sample loading**: Add `@load` assignment to load samples (.mp3, .wav) for use as values.
24
- - ✅ **WASM support**: Compile Devalang to WebAssembly for use in web applications and other environments.
25
- - ✅ **VSCode extension**: Create a VSCode extension for syntax highlighting and code completion.
26
- - ✅ **Addon generator**: Implement addon generation for creating reusable plugins, banks and presets.
27
- - ✅ **Effect chains**: Implement effect chains for applying multiple effects to a single note or group.
28
-
29
- ## In Progress
30
-
31
- - ⏳ **Testing**: Expand test coverage for all features.
32
- - ⏳ **Mixing & Routing**: Implement mixing and routing capabilities for advanced audio control.
33
-
34
- ## Planned
35
-
36
- - ⏳ **MIDI mapping**: Implement MIDI mapping for external control.
37
- - ⏳ **GUI**: Develop a graphical user interface for easier interaction.
38
- - ⏳ **Smart modules**: Let Devalang detect and use groups, samples, and variables without needing to import them manually.
package/docs/TODO.md DELETED
@@ -1,71 +0,0 @@
1
- <div align="center">
2
- <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
- </div>
4
-
5
- # TODOs list
6
-
7
- This is a list of tasks and features to be implemented in Devalang. Note that this is not an exhaustive list, and some items may be added or removed over time.
8
-
9
- ## Commands
10
-
11
- - [x] Init project
12
- - [x] Implement init command
13
- - [x] Implement template selector
14
- - [x] Template
15
- - [x] Implement template list
16
- - [x] Implement template info
17
- - [x] Checking
18
- - [x] Implement watch mode
19
- - [x] Implement debug mode
20
- - [x] Building
21
- - [x] Implement watch mode
22
- - [x] Implement debug mode
23
- - [x] Implement compression mode
24
- - [x] Play
25
- - [x] Implement Audio Engine
26
- - [x] Implement debug mode
27
- - [x] Implement loop mode
28
-
29
- ## Core components
30
-
31
- - [x] Audio Engine
32
- - [x] Lexer
33
- - [x] Parser
34
- - [x] Preprocessor
35
- - [x] Debugger
36
- - [x] Builder
37
-
38
- ## Syntax elements
39
-
40
- - [x] #
41
- - [x] @import
42
- - [x] @export
43
- - [x] @load
44
- - [x] function
45
- - [x] pattern
46
- - [x] group
47
- - [x] call
48
- - [x] spawn
49
- - [x] sleep
50
- - [x] bpm
51
- - [x] bank
52
- - [x] loop
53
- - [x] let
54
- - [x] if
55
- - [x] else
56
- - [x] else if
57
-
58
- ## Triggers
59
-
60
- - [x] Custom triggers
61
- - [x] Event triggers
62
-
63
- ## Banks
64
-
65
- - [x] Implement bank management (e.g. install, remove, list)
66
- - [x] Create example banks
67
-
68
- ## Plugins
69
-
70
- - [x] Implement plugin system (e.g. install, remove, list)
71
- - [ ] Create example plugins
@@ -1,42 +0,0 @@
1
- bpm 120
2
-
3
- group myLead:
4
- let mySynth = synth sine
5
-
6
- # This will automate all notes inside mySynth
7
- # automate mySynth:
8
- # param volume {
9
- # 0% = 0.0
10
- # 100% = 1.0
11
- # }
12
- # param pan {
13
- # 0% = -1.0
14
- # 100% = 1.0
15
- # }
16
- # param pitch {
17
- # 0% = -12.0
18
- # 100% = 12.0
19
- # }
20
-
21
- # This will automate only one note
22
- mySynth -> note(C4, {
23
- duration: 400,
24
- automate: {
25
- pitch: {
26
- 0%: -12.0
27
- 100%: 12.0
28
- },
29
- pan: {
30
- 0%: -1.0,
31
- 100%: 1.0
32
- }
33
- }
34
- })
35
- mySynth -> note(G4, { duration: 400 })
36
- mySynth -> note(E4, { duration: 600 })
37
- mySynth -> note(A4, { duration: 400 })
38
- mySynth -> note(F4, { duration: 800 })
39
- mySynth -> note(D4, { duration: 400 })
40
- mySynth -> note(B3, { duration: 600 })
41
-
42
- call myLead
@@ -1,7 +0,0 @@
1
- # This file demonstrates the use of banks in Devalang.
2
-
3
- bank devaloop.808 as myBank
4
-
5
- .myBank.kick auto
6
- .myBank.snare auto
7
- .myBank.openhat auto
package/examples/bus.deva DELETED
@@ -1,10 +0,0 @@
1
- # NOTE Planned for future release
2
-
3
- # let sidechainBus = bus {
4
- # fx: [
5
- # { type: "compressor", threshold: -20, ratio: 8, attack: 5, release: 100,
6
- # sidechain: myKick }
7
- # ]
8
- # }
9
- # route myLead -> sidechainBus -> masterBus
10
- # route myKick -> myBass -> masterBus
@@ -1,19 +0,0 @@
1
- let myChord = synth sine
2
-
3
- myChord -> note(C4)
4
- -> arp({ pattern: "up", rate: 1/8 })
5
- -> slide({ duration: 2000 })
6
- -> echo({ delay: 250, feedback: 0.5 })
7
- -> reverb({ room_size: 0.8 })
8
-
9
- myChord -> note(E4)
10
- -> arp({ pattern: "up", rate: 1/8 })
11
- -> slide({ duration: 2000 })
12
- -> echo({ delay: 250, feedback: 0.5 })
13
- -> reverb({ room_size: 0.8 })
14
-
15
- myChord -> note(G4)
16
- -> arp({ pattern: "up", rate: 1/8 })
17
- -> slide({ duration: 2000 })
18
- -> echo({ delay: 250, feedback: 0.5 })
19
- -> reverb({ room_size: 0.8 })
@@ -1,20 +0,0 @@
1
- # This file demonstrates the use of conditional blocks in Devalang.
2
-
3
- @import { duration, default_bank, params, loopCount, tempo } from "./variables.deva"
4
- @import { myGroup } from "./group.deva"
5
-
6
- @load "./samples/kick-808.wav" as kickCustom
7
- @load "./samples/hat-808.wav" as hatCustom
8
-
9
- group conditionBlock:
10
- if tempo > 120:
11
- # Will be executed if the condition is true
12
- .kickCustom auto
13
- else if tempo > 155:
14
- # Will be executed if the condition is false
15
- .hatCustom auto
16
- else:
17
- .kickCustom auto
18
- .hatCustom auto
19
-
20
- @export { conditionBlock }
@@ -1,9 +0,0 @@
1
- # This file demonstrates the use of duration in Devalang.
2
-
3
- @load "./samples/kick-808.wav" as kickCustom
4
- @load "./samples/hat-808.wav" as hatCustom
5
-
6
- .kickCustom 1/4
7
- .hatCustom 1/8
8
- .kickCustom 1/4
9
- .hatCustom 1/8
@@ -1,2 +0,0 @@
1
- # NOTE Planned for future release
2
- # myChord -> note(C4) -> arp({ pattern: "up", rate: 1/8 }) -> slide({ duration: 2000 }) -> echo({ delay: 250, feedback: 0.5 }) -> reverb({ room_size: 0.8 })
@@ -1,12 +0,0 @@
1
- bpm 120
2
-
3
- on beat:
4
- print "kick on each beat"
5
-
6
- on bar:
7
- print "bar!"
8
-
9
- on custom(value):
10
- print "custom event with value: " + value
11
-
12
- emit custom(10)
@@ -1,11 +0,0 @@
1
- let myFilteredSynth = synth sine {
2
- filters: [
3
- { type: "lowpass", cutoff: 800.0, resonance: 1.0 },
4
- { type: "bandpass", cutoff: 400.0, resonance: 1.0 },
5
- { type: "highpass", cutoff: 200.0, resonance: 1.0 }
6
- ],
7
- }
8
-
9
- myFilteredSynth -> note(C4, { duration: 500 })
10
- myFilteredSynth -> note(E4, { duration: 500 })
11
- myFilteredSynth -> note(G4, { duration: 500 })
@@ -1,15 +0,0 @@
1
- # This file demonstrates the use of main features in Devalang.
2
- bpm 135
3
-
4
- bank devaloop.808 as myBank
5
-
6
- let entityTest1 = .myBank.kick auto
7
- let entityTest2 = .myBank.clap auto
8
- let entityTest3 = .myBank.snare auto
9
-
10
- fn myFirstGroup(entity1, entity2, entity3):
11
- .entity1
12
- .entity2
13
- .entity3
14
-
15
- call myFirstGroup(entityTest1, entityTest2, entityTest3)
@@ -1,12 +0,0 @@
1
- # This file demonstrates the use of grouping in Devalang.
2
-
3
- @import { duration, default_bank, params, loopCount, tempo } from "./variables.deva"
4
-
5
- @load "./samples/kick-808.wav" as kickCustom
6
- @load "./samples/hat-808.wav" as hatCustom
7
-
8
- group myGroup:
9
- .kickCustom duration params
10
- .hatCustom duration params
11
-
12
- @export { myGroup }
@@ -1,63 +0,0 @@
1
- # This file demonstrates general use cases of Devalang.
2
-
3
- # BPM definition
4
- bpm 125
5
-
6
- # Bank picking (make sure you've installed it)
7
- bank devaloop.808 as my808Bank
8
-
9
- # Pattern literal without options
10
- pattern kickPattern with my808Bank.kick = "x--- x--- x--- x---"
11
-
12
- group myGroup:
13
- # Rhythmic (each beat playing a kick)
14
- # on beat:
15
- # .my808Bank.kick 1/4
16
-
17
- # Synth definition with ADSR
18
- let myLead = synth sine {
19
- attack: 0,
20
- decay: 100,
21
- sustain: 100,
22
- release: 100
23
- }
24
-
25
- # Global automation
26
- automate myLead:
27
- param volume {
28
- 0% = 0.0
29
- 100% = 0.5
30
- }
31
- param pitch {
32
- 0% = -12.0
33
- 100% = 12.0
34
- }
35
-
36
- # Notes in a loop with condition
37
- for i in [1, 2, 3]:
38
- if i == 3:
39
- myLead -> note(C5, { duration: 200 })
40
- print "Playing note C5 for " + i
41
-
42
- # Pause runtime for 500ms
43
- sleep 500
44
-
45
- # Note with automation
46
- myLead -> note(C4, {
47
- duration: 400,
48
- velocity: 0.8,
49
- automate: {
50
- pan: {
51
- 0%: -1.0,
52
- 100%: 0.0
53
- }
54
- }
55
- })
56
-
57
- # Notes with params
58
- myLead -> note(G4, { duration: 600, glide: true, target_freq: 659.25 })
59
- myLead -> note(B3, { duration: 400, slide: true, target_amp: 0.3 })
60
-
61
- # Spawning the group & the pattern to play them in parallel
62
- spawn myGroup
63
- spawn kickPattern
package/examples/lfo.deva DELETED
@@ -1,9 +0,0 @@
1
- let myLFOSynth = synth sine {
2
- lfo: {
3
- rate: 1/4,
4
- depth: 0.5,
5
- target: "cutoff"
6
- }
7
- }
8
-
9
- myLFOSynth -> note(C4, { duration: 500 })
@@ -1,10 +0,0 @@
1
- # This file demonstrates the use of loops in Devalang.
2
-
3
- group myLoop:
4
- for i in [1, 2, 3]:
5
- print "looping with for" + i
6
-
7
- loop 3:
8
- print "looping with loop"
9
-
10
- @export { myLoop }
@@ -1,8 +0,0 @@
1
- # This file demonstrates the usage of patterns in Devaloop
2
-
3
- bank devaloop.808 as my808
4
-
5
- # Pattern literal without options
6
- pattern kickPattern with my808.kick = "x--- x--- x--- x---"
7
-
8
- call kickPattern
@@ -1,16 +0,0 @@
1
- # This is an example of using a plugin in Devalang.
2
- # Make sure you have the plugin installed in your Devaloop application. (devalang addon install <author>.<addon_name>)
3
-
4
- @use devaloop.acid as acidPlugin
5
-
6
- group acidSynthGroup:
7
- let acidSynth = synth acidPlugin.synth {
8
- waveform: "saw",
9
- resonance: 1.0,
10
- }
11
-
12
- acidSynth -> note(C4, { duration: 1000 })
13
- acidSynth -> note(E3, { duration: 1000 })
14
- acidSynth -> note(B2, { duration: 1000 })
15
-
16
- call acidSynthGroup
@@ -1,23 +0,0 @@
1
- # NOTE Future version of Deva may include built-in routing capabilities.
2
-
3
- # @load "./samples/kick-808.wav" as kickCustom
4
-
5
- # group myLead:
6
- # let mySynth = synth sine
7
-
8
- # mySynth -> note(C4, { duration: 400 })
9
-
10
- # group myKick:
11
- # .kickCustom 1/4
12
-
13
- # routing:
14
- # node $master
15
- # node myLead
16
- # node myKick
17
- # node hallReverb = effect reverb { decay: 3.0, mix: 0.5 }
18
-
19
- # connect myLead -> hallReverb -> $master
20
-
21
- # connect myLead -> $master with { delay: { time: 300, feedback: 0.3 } }
22
-
23
- # connect myKick -> myLead with { sidechain: 0.6 }
Binary file
Binary file
@@ -1,24 +0,0 @@
1
- # This file defines a simple synth lead using Devalang's syntax.
2
-
3
- group myLead:
4
- let mySynth = synth sine
5
-
6
- mySynth -> note(C4, { duration: 400 })
7
- mySynth -> note(G4, { duration: 400 })
8
- mySynth -> note(E4, { duration: 600 })
9
- mySynth -> note(A4, { duration: 400 })
10
- mySynth -> note(F4, { duration: 800 })
11
- mySynth -> note(D4, { duration: 400 })
12
- mySynth -> note(B3, { duration: 600 })
13
-
14
- group myChords:
15
- let chordSynth = synth square
16
-
17
- chordSynth -> chord(Cmaj, { duration: 1600 })
18
- chordSynth -> chord(Fmaj, { duration: 1600 })
19
- chordSynth -> chord(Gmaj, { duration: 1600 })
20
- chordSynth -> chord(Am, { duration: 1600 })
21
-
22
- # Play both groups together
23
- spawn myLead
24
- spawn myChords
@@ -1,17 +0,0 @@
1
- let myPad = synth sine {
2
- type: "pad"
3
- }
4
-
5
- let myPluck = synth sine {
6
- type: "pluck"
7
- }
8
-
9
- let myArp = synth sine {
10
- type: "arp",
11
- rate: 16,
12
- step: 2
13
- }
14
-
15
- let mySub = synth sine {
16
- type: "sub",
17
- }
@@ -1,9 +0,0 @@
1
- # This file only exports variables for use in other files.
2
-
3
- let duration = auto
4
- let default_bank = devaloop.808
5
- let params = { decay: 10, delay: 30 }
6
- let loopCount = 5
7
- let tempo = 115
8
-
9
- @export { duration, default_bank, params, loopCount, tempo }
@@ -1,6 +0,0 @@
1
- {
2
- "version": "0.0.1-beta.3",
3
- "channel": "beta",
4
- "lastCommit": "d9c8d5927288897aebf7faceb2b3495b5b8b87eb",
5
- "build": 2
6
- }
@@ -1,42 +0,0 @@
1
- import { ParseResult } from "../types/result";
2
- import { DebugResult } from "../types/result";
3
- /**
4
- * Parses the user code.
5
- * @param entry_path The entry path for the code.
6
- * @param source The source code to parse.
7
- * @returns ParseResult | any
8
- */
9
- export declare function parse(entry_path: string, source: string): ParseResult | any;
10
- /**
11
- * Renders the debug information for the user code.
12
- * @param user_code The user-provided code to render debug information for.
13
- * @returns DebugResult | any
14
- */
15
- export declare function debug_render(user_code: string): DebugResult | any;
16
- /**
17
- * Renders audio from the user code.
18
- * @param user_code The user-provided code to render audio from.
19
- * @returns Float32Array
20
- */
21
- export declare function render_audio(user_code: string): Float32Array;
22
- /**
23
- * Register a JS callback to receive playhead events { time, line, column } during playback.
24
- * The callback will be called with a single object argument.
25
- * @param cb The callback function to register.
26
- * @returns void
27
- */
28
- export declare function register_playhead_callback(cb: (ev: {
29
- time: number;
30
- line: number;
31
- column: number;
32
- }) => void): any;
33
- /**
34
- * Collects playhead events that have been recorded during playback.
35
- * @returns Array of playhead events { time, line, column }.
36
- */
37
- export declare function collect_playhead_events(): any;
38
- /**
39
- * Unregisters the JS callback for playhead events.
40
- * @returns void
41
- */
42
- export declare function unregister_playhead_callback(): any;