@devaloop/devalang 0.0.1-beta.1 → 0.0.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/.devalang +9 -10
  2. package/Cargo.toml +84 -80
  3. package/README.md +10 -7
  4. package/docs/CHANGELOG.md +83 -0
  5. package/docs/ROADMAP.md +6 -2
  6. package/docs/TODO.md +3 -14
  7. package/examples/bus.deva +10 -0
  8. package/examples/chain.deva +19 -0
  9. package/examples/effect.deva +2 -0
  10. package/examples/filter.deva +11 -0
  11. package/examples/lfo.deva +9 -0
  12. package/examples/plugin.deva +10 -10
  13. package/examples/routing.deva +23 -0
  14. package/examples/synth.deva +11 -1
  15. package/examples/synth_types.deva +17 -0
  16. package/out-tsc/bin/project-version.json +6 -0
  17. package/out-tsc/core/functions/index.d.ts +5 -0
  18. package/out-tsc/core/functions/index.js +11 -0
  19. package/out-tsc/pkg/devalang_core.d.ts +2 -0
  20. package/out-tsc/pkg/devalang_core.js +17 -2
  21. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +1 -0
  22. package/out-tsc/scripts/version/copy-to-binary.d.ts +1 -0
  23. package/out-tsc/scripts/version/copy-to-binary.js +79 -0
  24. package/package.json +23 -10
  25. package/project-version.json +3 -3
  26. package/rust/bindings/Cargo.toml +9 -0
  27. package/rust/bindings/src/lib.rs +86 -0
  28. package/rust/cli/addon/commands.rs +35 -0
  29. package/rust/cli/addon/download.rs +234 -0
  30. package/rust/cli/addon/install.rs +33 -0
  31. package/rust/cli/addon/list.rs +224 -0
  32. package/rust/cli/addon/metadata.rs +124 -0
  33. package/rust/cli/addon/mod.rs +8 -0
  34. package/rust/cli/addon/remove.rs +271 -0
  35. package/rust/cli/addon/update.rs +305 -0
  36. package/rust/cli/{install/addon.rs → addon/utils.rs} +34 -43
  37. package/rust/cli/build/commands.rs +153 -103
  38. package/rust/cli/build/mod.rs +2 -2
  39. package/rust/cli/build/process.rs +165 -146
  40. package/rust/cli/check/mod.rs +208 -208
  41. package/rust/cli/discover/commands.rs +53 -31
  42. package/rust/cli/discover/config.rs +2 -4
  43. package/rust/cli/discover/install.rs +139 -28
  44. package/rust/cli/discover/metadata.rs +3 -3
  45. package/rust/cli/login/commands.rs +124 -124
  46. package/rust/cli/me/commands.rs +52 -0
  47. package/rust/cli/me/mod.rs +1 -0
  48. package/rust/cli/mod.rs +2 -2
  49. package/rust/cli/parser.rs +76 -70
  50. package/rust/cli/play/commands.rs +375 -324
  51. package/rust/cli/play/mod.rs +5 -5
  52. package/rust/cli/play/process.rs +159 -150
  53. package/rust/cli/play/realtime.rs +91 -91
  54. package/rust/cli/telemetry/commands.rs +22 -22
  55. package/rust/cli/telemetry/event_creator.rs +80 -80
  56. package/rust/cli/telemetry/mod.rs +3 -3
  57. package/rust/cli/telemetry/send.rs +51 -51
  58. package/rust/cli/template/commands.rs +69 -69
  59. package/rust/config/driver.rs +112 -103
  60. package/rust/config/mod.rs +3 -3
  61. package/rust/config/ops.rs +26 -26
  62. package/rust/config/settings.rs +101 -101
  63. package/rust/core/audio/engine/driver.rs +237 -0
  64. package/rust/core/audio/engine/export.rs +169 -0
  65. package/rust/core/audio/engine/helpers.rs +178 -170
  66. package/rust/core/audio/engine/mod.rs +56 -7
  67. package/rust/core/audio/engine/notes/dsp.rs +88 -0
  68. package/rust/core/audio/engine/notes/mod.rs +53 -0
  69. package/rust/core/audio/engine/notes/params.rs +294 -0
  70. package/rust/core/audio/engine/sample/insert.rs +300 -0
  71. package/rust/core/audio/engine/sample/mod.rs +40 -0
  72. package/rust/core/audio/engine/sample/padding.rs +170 -0
  73. package/rust/core/audio/evaluator/condition.rs +61 -0
  74. package/rust/core/audio/evaluator/mod.rs +9 -0
  75. package/rust/core/audio/{evaluator.rs → evaluator/numeric.rs} +152 -310
  76. package/rust/core/audio/evaluator/rhs.rs +16 -0
  77. package/rust/core/audio/evaluator/string_expr.rs +94 -0
  78. package/rust/core/audio/interpreter/driver.rs +574 -542
  79. package/rust/core/audio/interpreter/mod.rs +2 -14
  80. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +179 -0
  81. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +398 -0
  82. package/rust/core/audio/interpreter/statements/arrow_call/methods/effects.rs +323 -0
  83. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +3 -0
  84. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +371 -0
  85. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +3 -0
  86. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +192 -0
  87. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +24 -0
  88. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +116 -0
  89. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +97 -0
  90. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +100 -0
  91. package/rust/core/audio/interpreter/{automate.rs → statements/automate.rs} +2 -4
  92. package/rust/core/audio/interpreter/{call.rs → statements/call.rs} +36 -5
  93. package/rust/core/audio/interpreter/{condition.rs → statements/condition.rs} +72 -71
  94. package/rust/core/audio/interpreter/{function.rs → statements/function.rs} +24 -26
  95. package/rust/core/audio/interpreter/{let_.rs → statements/let_.rs} +36 -38
  96. package/rust/core/audio/interpreter/{load.rs → statements/load.rs} +17 -19
  97. package/rust/core/audio/interpreter/{loop_.rs → statements/loop_.rs} +115 -114
  98. package/rust/core/audio/interpreter/statements/mod.rs +12 -0
  99. package/rust/core/audio/interpreter/{sleep.rs → statements/sleep.rs} +28 -28
  100. package/rust/core/audio/interpreter/{spawn.rs → statements/spawn.rs} +54 -4
  101. package/rust/core/audio/interpreter/{tempo.rs → statements/tempo.rs} +40 -40
  102. package/rust/core/audio/interpreter/{trigger.rs → statements/trigger.rs} +242 -239
  103. package/rust/core/audio/loader/trigger.rs +98 -97
  104. package/rust/core/audio/mod.rs +6 -7
  105. package/rust/core/audio/special/easing.rs +189 -189
  106. package/rust/core/audio/special/env.rs +45 -45
  107. package/rust/core/audio/special/math.rs +134 -134
  108. package/rust/core/audio/special/modulator.rs +143 -143
  109. package/rust/core/builder/mod.rs +129 -86
  110. package/rust/core/debugger/{module.rs → logs.rs} +52 -55
  111. package/rust/core/debugger/mod.rs +30 -30
  112. package/rust/core/debugger/store.rs +38 -40
  113. package/rust/core/error/mod.rs +269 -269
  114. package/rust/core/lexer/driver.rs +2 -4
  115. package/rust/core/mod.rs +9 -10
  116. package/rust/core/parser/driver/block.rs +111 -0
  117. package/rust/core/parser/driver/cursor.rs +82 -0
  118. package/rust/core/parser/driver/driver_impl.rs +159 -0
  119. package/rust/core/parser/driver/mod.rs +6 -0
  120. package/rust/core/parser/driver/parse_array.rs +120 -0
  121. package/rust/core/parser/driver/parse_map.rs +247 -0
  122. package/rust/core/parser/driver/parser.rs +160 -0
  123. package/rust/core/parser/handler/arrow_call.rs +90 -15
  124. package/rust/core/parser/handler/at.rs +279 -279
  125. package/rust/core/parser/handler/bank.rs +104 -104
  126. package/rust/core/parser/handler/condition.rs +83 -83
  127. package/rust/core/parser/handler/dot.rs +148 -148
  128. package/rust/core/parser/handler/identifier/automate.rs +254 -254
  129. package/rust/core/parser/handler/identifier/call.rs +91 -91
  130. package/rust/core/parser/handler/identifier/emit.rs +70 -70
  131. package/rust/core/parser/handler/identifier/function.rs +113 -113
  132. package/rust/core/parser/handler/identifier/group.rs +89 -89
  133. package/rust/core/parser/handler/identifier/let_.rs +173 -173
  134. package/rust/core/parser/handler/identifier/mod.rs +55 -55
  135. package/rust/core/parser/handler/identifier/on.rs +107 -107
  136. package/rust/core/parser/handler/identifier/print.rs +49 -49
  137. package/rust/core/parser/handler/identifier/sleep.rs +96 -43
  138. package/rust/core/parser/handler/identifier/spawn.rs +91 -91
  139. package/rust/core/parser/handler/identifier/synth.rs +39 -3
  140. package/rust/core/parser/handler/loop_.rs +194 -194
  141. package/rust/core/parser/handler/pattern.rs +25 -2
  142. package/rust/core/parser/handler/tempo.rs +105 -57
  143. package/rust/core/parser/statement.rs +10 -11
  144. package/rust/core/plugin/loader.rs +137 -137
  145. package/rust/core/plugin/runner/mod.rs +11 -0
  146. package/rust/core/plugin/{runner.rs → runner/non_wasm.rs} +206 -72
  147. package/rust/core/plugin/runner/wasm32.rs +44 -0
  148. package/rust/core/preprocessor/loader/inject.rs +313 -0
  149. package/rust/core/preprocessor/loader/loader_helpers.rs +110 -0
  150. package/rust/core/preprocessor/loader/mod.rs +235 -0
  151. package/rust/core/preprocessor/module.rs +55 -60
  152. package/rust/core/preprocessor/{processor.rs → processor/handlers.rs} +107 -114
  153. package/rust/core/preprocessor/processor/mod.rs +1 -0
  154. package/rust/core/preprocessor/resolver/function.rs +69 -69
  155. package/rust/core/preprocessor/resolver/group.rs +122 -94
  156. package/rust/core/preprocessor/resolver/pattern.rs +14 -2
  157. package/rust/core/store/global.rs +57 -61
  158. package/rust/core/store/mod.rs +1 -5
  159. package/rust/lib.rs +323 -308
  160. package/rust/macros/Cargo.toml +14 -0
  161. package/rust/macros/src/lib.rs +52 -0
  162. package/rust/main.rs +336 -143
  163. package/rust/types/Cargo.toml +1 -1
  164. package/rust/types/src/addons.rs +57 -55
  165. package/rust/types/src/config.rs +82 -74
  166. package/rust/types/src/lib.rs +15 -12
  167. package/rust/types/src/plugin.rs +20 -0
  168. package/rust/types/src/store.rs +139 -0
  169. package/rust/types/src/telemetry.rs +85 -85
  170. package/rust/utils/Cargo.toml +5 -2
  171. package/rust/utils/src/file.rs +477 -94
  172. package/rust/utils/src/first_usage.rs +97 -97
  173. package/rust/utils/src/lib.rs +9 -9
  174. package/rust/utils/src/logger.rs +200 -200
  175. package/rust/utils/src/path.rs +158 -88
  176. package/rust/utils/src/signature.rs +41 -41
  177. package/rust/utils/src/spinner.rs +20 -20
  178. package/rust/utils/src/version.rs +58 -27
  179. package/rust/utils/src/watcher.rs +46 -46
  180. package/rust/web/api.rs +5 -5
  181. package/rust/web/auth.rs +5 -0
  182. package/rust/web/cdn.rs +34 -34
  183. package/rust/web/forge.rs +5 -0
  184. package/rust/web/mod.rs +2 -0
  185. package/tests/integration.rs +21 -21
  186. package/typescript/core/functions/index.ts +11 -0
  187. package/typescript/pkg/devalang_core.ts +20 -4
  188. package/typescript/scripts/version/copy-to-binary.ts +82 -0
  189. package/rust/cli/bank/api.rs +0 -122
  190. package/rust/cli/bank/commands.rs +0 -275
  191. package/rust/cli/bank/mod.rs +0 -29
  192. package/rust/cli/install/bank.rs +0 -53
  193. package/rust/cli/install/commands.rs +0 -35
  194. package/rust/cli/install/mod.rs +0 -4
  195. package/rust/cli/install/plugin.rs +0 -61
  196. package/rust/core/audio/engine/sample.rs +0 -366
  197. package/rust/core/audio/engine/synth.rs +0 -325
  198. package/rust/core/audio/interpreter/arrow_call.rs +0 -311
  199. package/rust/core/audio/renderer.rs +0 -54
  200. package/rust/core/parser/driver.rs +0 -584
  201. package/rust/core/preprocessor/loader.rs +0 -637
  202. package/rust/core/store/export.rs +0 -28
  203. package/rust/core/store/function.rs +0 -40
  204. package/rust/core/store/import.rs +0 -28
  205. package/rust/core/store/variable.rs +0 -51
  206. package/rust/core/utils/mod.rs +0 -1
  207. package/rust/core/utils/path.rs +0 -37
@@ -1,4 +1,17 @@
1
- use clap::{Parser, Subcommand};
1
+ use clap::{Parser, Subcommand, ValueEnum};
2
+
3
+ #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Debug)]
4
+ pub enum OutputFormat {
5
+ Wav,
6
+ Mid,
7
+ }
8
+
9
+ #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Debug)]
10
+ pub enum AudioFormat {
11
+ Wav16,
12
+ Wav24,
13
+ Wav32,
14
+ }
2
15
 
3
16
  #[derive(Parser)]
4
17
  #[command(name = "devalang")]
@@ -21,18 +34,6 @@ pub enum TelemetryCommand {
21
34
  Disable {},
22
35
  }
23
36
 
24
- #[derive(Subcommand)]
25
- pub enum InstallCommand {
26
- /// Installs a template.
27
- Template { name: String },
28
- /// Installs a bank.
29
- Bank { name: String },
30
- /// Installs a plugin.
31
- Plugin { name: String },
32
- /// Installs a preset.
33
- Preset { name: String },
34
- }
35
-
36
37
  #[derive(Subcommand)]
37
38
  pub enum TemplateCommand {
38
39
  /// Lists all available templates for Devalang projects.
@@ -42,17 +43,22 @@ pub enum TemplateCommand {
42
43
  }
43
44
 
44
45
  #[derive(Subcommand)]
45
- pub enum BankCommand {
46
- /// Lists installed banks.
47
- List,
48
- /// Lists all available banks.
49
- Available,
50
- /// Displays information about a specific bank.
51
- Info { name: String },
52
- /// Removes a bank.
46
+ pub enum AddonCommand {
47
+ /// Installs an addon.
48
+ Install {
49
+ name: String,
50
+ #[arg(long, default_value_t = false)]
51
+ no_clear_tmp: bool,
52
+ },
53
+
54
+ /// Updates an addon.
55
+ Update { name: String },
56
+
57
+ /// Lists installed addons.
58
+ List {},
59
+
60
+ /// Removes an addon.
53
61
  Remove { name: String },
54
- /// Updates a specific or all banks.
55
- Update { name: Option<String> },
56
62
  }
57
63
 
58
64
  #[derive(Subcommand)]
@@ -124,6 +130,26 @@ pub enum Commands {
124
130
  ///
125
131
  output: Option<String>,
126
132
 
133
+ #[arg(long, value_enum, value_delimiter = ',', default_value = "wav,mid")]
134
+ /// Which output formats to generate. Comma-separated list is accepted.
135
+ ///
136
+ /// ### Default value
137
+ /// - `wav,mid`
138
+ ///
139
+ output_format: Vec<OutputFormat>,
140
+
141
+ #[arg(long, default_value = "wav16")]
142
+ /// Audio format to use for file outputs (affects WAV export).
143
+ ///
144
+ /// ### Default value
145
+ /// - `wav16`
146
+ ///
147
+ audio_format: AudioFormat,
148
+
149
+ #[arg(long, default_value_t = 44100u32)]
150
+ /// Sample rate to use for audio export and playback (e.g. 44100, 48000)
151
+ sample_rate: u32,
152
+
127
153
  #[arg(long, default_value_t = false)]
128
154
  /// Whether to watch for changes and rebuild.
129
155
  ///
@@ -139,7 +165,6 @@ pub enum Commands {
139
165
  /// - `false`
140
166
  ///
141
167
  debug: bool,
142
-
143
168
  #[arg(short, long, default_value_t = false)]
144
169
  /// Whether to compress the output files.
145
170
  ///
@@ -213,6 +238,18 @@ pub enum Commands {
213
238
  /// The directory where the output files will be generated.
214
239
  output: Option<String>,
215
240
 
241
+ #[arg(long, default_value_t = 44100u32)]
242
+ /// Sample rate to use for playback (e.g. 44100, 48000)
243
+ sample_rate: u32,
244
+
245
+ #[arg(long, default_value = "wav16")]
246
+ /// Audio format to use for file outputs (affects WAV export).
247
+ ///
248
+ /// ### Default value
249
+ /// - `wav16`
250
+ ///
251
+ audio_format: AudioFormat,
252
+
216
253
  #[arg(long, default_value_t = false)]
217
254
  /// Whether to watch for changes and re-play.
218
255
  ///
@@ -238,47 +275,24 @@ pub enum Commands {
238
275
  debug: bool,
239
276
  },
240
277
 
241
- /// Update the Devalang CLI to the latest version.
242
- ///
243
- /// ### Arguments
244
- /// - `only` - Selects what to update (separated by commas). Defaults to updating all components.
245
- ///
246
- Update {
247
- // #[arg(long, default_value_t = false)]
248
- /// Whether to allow updates when the working directory is dirty.
249
- // allow_dirty: bool,
250
-
251
- #[arg(long, default_value = "")]
252
- /// Selects what to update (separated by commas).
253
- only: Option<String>,
254
- },
255
-
256
- /// Install templates, banks, or plugins.
257
- ///
258
- /// ### Subcommands
259
- /// - `template` - Installs a template.
260
- /// - `bank` - Installs a bank.
261
- /// - `plugin` - Installs a plugin.
262
- /// - `preset` - Installs a preset.
263
- ///
264
- Install {
265
- #[command(subcommand)]
266
- command: InstallCommand,
267
- },
268
-
269
278
  /// Discover available local addons for Devalang.
270
279
  ///
271
- Discover {},
280
+ Discover {
281
+ #[arg(long, default_value_t = false)]
282
+ /// Do not clear the temporary extraction folder after installation.
283
+ no_clear_tmp: bool,
284
+ },
272
285
 
273
- /// Manage banks for Devalang projects.
286
+ /// Manage addons for Devalang projects.
274
287
  ///
275
288
  /// ### Subcommands
276
- /// - `list` - Lists all available banks.
277
- /// - `info <name>` - Displays information about a specific bank.
289
+ /// - `install <publisher>.<name>` - Installs a new addon.
290
+ /// - `list` - Lists installed addons.
291
+ /// - `remove <publisher>.<name>` - Removes an existing addon.
278
292
  ///
279
- Bank {
293
+ Addon {
280
294
  #[command(subcommand)]
281
- command: BankCommand,
295
+ command: AddonCommand,
282
296
  },
283
297
 
284
298
  /// Telemetry settings for Devalang.
@@ -292,22 +306,14 @@ pub enum Commands {
292
306
  command: TelemetryCommand,
293
307
  },
294
308
 
295
- /// Generate addon scaffolding for Devalang.
296
- ///
297
- /// ### Subcommands
298
- /// - `bank` - Generates a bank scaffold.
299
- /// - `plugin` - Generates a plugin scaffold.
300
- /// - `preset` - Generates a preset scaffold.
301
- ///
302
- // Scaffold {
303
- // #[command(subcommand)]
304
- // command: ScaffoldCommand,
305
- // },
306
-
307
309
  /// Log in to your Devaloop account.
308
310
  ///
309
311
  Login {},
310
312
 
313
+ /// Display information about the current Devalang user.
314
+ ///
315
+ Me {},
316
+
311
317
  /// Log out of your Devaloop account.
312
318
  ///
313
319
  Logout {},