@devaloop/devalang 0.1.4 → 0.1.6

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Devaloop Labs
3
+ Copyright (c) 2025 Labscend Studios
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -2,65 +2,84 @@
2
2
  <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
3
  </div>
4
4
 
5
- ![Rust](https://img.shields.io/badge/Made%20with-Rust-orange?logo=rust)
6
- ![TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-blue?logo=typescript)
7
- ![Node.js](https://img.shields.io/badge/Node.js-16%2B-brightgreen?logo=node.js)
5
+ ![Rust](https://img.shields.io/badge/Made%20with-Rust-%23DEA584?logo=rust)
6
+ ![TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-%233178C6?logo=typescript&logoColor=white)
8
7
 
9
- ![Project Status](https://img.shields.io/badge/status-preview-blue)
10
- ![Version](https://img.shields.io/npm/v/@devaloop/devalang)
11
- ![License: MIT](https://img.shields.io/badge/license-MIT-green)
8
+ ![Rust](https://img.shields.io/badge/Rust-1.70.0%2B-%23DEA584?logo=rust)
9
+ ![Node.js](https://img.shields.io/badge/Node.js-18%2B-%2368A063?logo=node.js&logoColor=white)
12
10
 
13
- ![Linux](https://img.shields.io/badge/linux-supported-blue?logo=linux)
14
- ![macOS](https://img.shields.io/badge/macOS-supported-blue?logo=apple)
15
- ![Windows](https://img.shields.io/badge/windows-supported-blue?logo=windows)
11
+ ![Project Status](https://img.shields.io/badge/status-preview-%237C5FFF)
12
+ ![Version](https://img.shields.io/npm/v/@devaloop/devalang?label=version&color=%237C5FFF)
13
+ ![License: MIT](https://img.shields.io/badge/license-MIT-%237C5FFF)
16
14
 
17
- ![npm](https://img.shields.io/npm/dt/@devaloop/devalang)
18
- ![crates](https://img.shields.io/crates/d/devalang)
15
+ ![Platforms](https://img.shields.io/badge/platform-Windows%20%2F%20Linux%20%2F%20macOS-blue?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMjQwLTEyMHYtODBsNDAtNDBIMTYwcS0zMyAwLTU2LjUtMjMuNVQ4MC0zMjB2LTQ0MHEwLTMzIDIzLjUtNTYuNVQxNjAtODQwaDY0MHEzMyAwIDU2LjUgMjMuNVQ4ODAtNzYwdjQ0MHEwIDMzLTIzLjUgNTYuNVQ4MDAtMjQwSDY4MGw0MCA0MHY4MEgyNDBabS04MC0yMDBoNjQwdi00NDBIMTYwdjQ0MFptMCAwdi00NDAgNDQwWiIvPjwvc3ZnPg==)
16
+
17
+ ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/devaloop-labs/devalang/.github/workflows/ci.yml?label=CI&logo=github)
18
+ ![Coverage](https://img.shields.io/badge/coverage-TBD-red?label=coverage&logo=codecov&logoColor=white)
19
+
20
+ ![npm](https://img.shields.io/npm/dt/@devaloop/devalang?label=npm&color=%231DB954)
21
+ ![crates](https://img.shields.io/crates/d/devalang?label=crates.io&color=%231DB954)
19
22
 
20
23
  # 🦊 Devalang — Write music with code
21
24
 
22
25
  Devalang is a compact **domain-specific language** (DSL) for **music makers**, **sound designers**, and **creative coders**.
23
26
  Compose loops, control samples, synthesize audio, and render your ideas — all in clean, **readable text**.
24
27
 
25
- Whether you're prototyping a beat, building **generative music**, or **performing live**, Devalang gives you rhythmic precision with the elegance of code.
28
+ Whether you're **prototyping a beat**, building **generative music**, or **performing live**, Devalang gives you rhythmic precision with the elegance of code.
26
29
 
27
30
  **From studio sketches to live sets, Devalang puts musical ideas into motion.**
28
31
 
29
-
30
- > **🚀 v0.1.0+ - Complete Rewriting**
31
- >
32
- > **NEW**: [Devalang Playground V2.0 is now available](https://playground.devalang.com) — Try it in your browser!
33
-
34
-
35
32
  ## 📚 Quick Access
36
33
 
37
34
  ### Websites & Resources
38
- - [🌐 Website](https://devalang.com) — Project homepage
39
- - [▶️ Playground](https://playground.devalang.com) — Try Devalang in your browser
40
- - [📖 Documentation](https://docs.devalang.com) — Complete language reference
35
+
36
+ [![Website](https://img.shields.io/badge/Official%20Website-%233D2E81?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDgwLjI4LTk2UTQwMS05NiAzMzEtMTI2dC0xMjIuNS04Mi41UTE1Ni0yNjEgMTI2LTMzMC45NnQtMzAtMTQ5LjVROTYtNTYwIDEyNi02MjkuNXEzMC02OS41IDgyLjUtMTIyVDMzMC45Ni04MzRxNjkuOTYtMzAgMTQ5LjUtMzB0MTQ5LjA0IDMwcTY5LjUgMzAgMTIyIDgyLjVUODM0LTYyOS4yOHEzMCA2OS43MyAzMCAxNDlRODY0LTQwMSA4MzQtMzMxdC04Mi41IDEyMi41UTY5OS0xNTYgNjI5LjI4LTEyNnEtNjkuNzMgMzAtMTQ5IDMwWm0tLjI4LTcycTEyMiAwIDIxMC04MXQxMDAtMjAwcS05IDgtMjAuNSAxMi41VDc0NC00MzJINjAwcS0yOS43IDAtNTAuODUtMjEuMTVRNTI4LTQ3NC4zIDUyOC01MDR2LTQ4SDM2MHYtOTZxMC0yOS43IDIxLjE1LTUwLjg1UTQwMi4zLTcyMCA0MzItNzIwaDQ4di0yNHEwLTE0IDUtMjZ0MTMtMjFxLTMtMS0xMC0xaC04cS0xMzAgMC0yMjEgOTF0LTkxIDIyMWgyMTZxNjAgMCAxMDIgNDJ0NDIgMTAydjQ4SDM4NHYxMDVxMjMgOCA0Ni43MyAxMS41UTQ1NC40NS0xNjggNDgwLTE2OFoiLz48L3N2Zz4=&logoColor=white)](https://devalang.com)
37
+ [![Docs](https://img.shields.io/badge/Documentation-%235A44BA?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDQ0LTI0NnYtNDU0cS00Mi0yMi04Ny0zM3QtOTMuMjItMTFxLTM2Ljk0IDAtNzMuMzYgNi41VDEyMC03MTZ2NDUycTM1LTEzIDcwLjgxLTE4LjVRMjI2LjYzLTI4OCAyNjQtMjg4cTQ3LjM1IDAgOTIuMTcgMTJRNDAxLTI2NCA0NDQtMjQ2Wm0zNiAxMDJxLTQ5LTMyLTEwMy01MnQtMTEzLTIwcS0zOCAwLTc2IDcuNVQxMTUtMTg2cS0yNCAxMC00NS41LTMuNTNUNDgtMjI5di01MDNxMC0xNCA3LjUtMjZUNzYtNzc2cTQ1LTIwIDkxLjktMzAgNDYuOTEtMTAgOTUuNjgtMTBRMzMzLTgxNiAzODQtODAyLjVUNDkyLTc2MHExMSA2IDE3LjUgMTYuNVQ1MTYtNzIwdjQ3NHE0My0yMCA4Ny44My0zMSA0NC44Mi0xMSA5Mi4xNy0xMSAzNyAwIDczLjUgNXQ3MC41IDE5di01MjlxMTEgNCAyMi4xMyA3LjkgMTEuMTMgMy45IDIxLjg3IDkuMSAxMyA2IDIxIDE4dDggMjZ2NTAzcTAgMjUtMTUuNSA0MHQtMzIuNSA3cS00MC0xOC04Mi40OC0yNi00Mi40Ny04LTg2LjUyLTgtNTkgMC0xMTMgMjB0LTEwMyA1MlptMTQ0LTI0MHYtNDMybDEyMC00OHY0MzJsLTEyMCA0OFpNMjgyLTQ5NVoiLz48L3N2Zz4=&logoColor=white)](https://docs.devalang.com)
38
+ [![Playground](https://img.shields.io/badge/Playground-%237C5FFF?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJtMjcyLTQ0MCAyMDggMTIwIDIwOC0xMjAtMTY4LTk3djEzN2gtODB2LTEzN2wtMTY4IDk3Wm0xNjgtMTg5di0xN3EtNDQtMTMtNzItNDkuNVQzNDAtNzgwcTAtNTggNDEtOTl0OTktNDFxNTggMCA5OSA0MXQ0MSA5OXEwIDQ4LTI4IDg0LjVUNTIwLTY0NnYxN2wyODAgMTYxcTE5IDExIDI5LjUgMjkuNVQ4NDAtMzk4djc2cTAgMjItMTAuNSA0MC41VDgwMC0yNTJMNTIwLTkxcS0xOSAxMS00MCAxMXQtNDAtMTFMMTYwLTI1MnEtMTktMTEtMjkuNS0yOS41VDEyMC0zMjJ2LTc2cTAtMjIgMTAuNS00MC41VDE2MC00NjhsMjgwLTE2MVptMCAzNzhMMjAwLTM4OXY2N2wyODAgMTYyIDI4MC0xNjJ2LTY3TDUyMC0yNTFxLTE5IDExLTQwIDExdC00MC0xMVptNDAtNDY5cTI1IDAgNDIuNS0xNy41VDU0MC03ODBxMC0yNS0xNy41LTQyLjVUNDgwLTg0MHEtMjUgMC00Mi41IDE3LjVUNDIwLTc4MHEwIDI1IDE3LjUgNDIuNVQ0ODAtNzIwWm0wIDU2MFoiLz48L3N2Zz4=&logoColor=white)](https://playground.devalang.com)
41
39
 
42
40
  ### Important files
43
- - [📜 Changelog](./docs/CHANGELOG.md) — Version history
44
- - [💡 Examples](./examples/)
41
+
42
+ [![Changelog](https://img.shields.io/badge/Changelog-%23129978?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMjQwLTgwcS01MCAwLTg1LTM1dC0zNS04NXYtMTIwaDEyMHYtNTYwbDYwIDYwIDYwLTYwIDYwIDYwIDYwLTYwIDYwIDYwIDYwLTYwIDYwIDYwIDYwLTYwIDYwIDYwIDYwLTYwdjY4MHEwIDUwLTM1IDg1dC04NSAzNUgyNDBabTQ4MC04MHExNyAwIDI4LjUtMTEuNVQ3NjAtMjAwdi01NjBIMzIwdjQ0MGgzNjB2MTIwcTAgMTcgMTEuNSAyOC41VDcyMC0xNjBaTTM2MC02MDB2LTgwaDI0MHY4MEgzNjBabTAgMTIwdi04MGgyNDB2ODBIMzYwWm0zMjAtMTIwcS0xNyAwLTI4LjUtMTEuNVQ2NDAtNjQwcTAtMTcgMTEuNS0yOC41VDY4MC02ODBxMTcgMCAyOC41IDExLjVUNzIwLTY0MHEwIDE3LTExLjUgMjguNVQ2ODAtNjAwWm0wIDEyMHEtMTcgMC0yOC41LTExLjVUNjQwLTUyMHEwLTE3IDExLjUtMjguNVQ2ODAtNTYwcTE3IDAgMjguNSAxMS41VDcyMC01MjBxMCAxNy0xMS41IDI4LjVUNjgwLTQ4MFpNMjQwLTE2MGgzNjB2LTgwSDIwMHY0MHEwIDE3IDExLjUgMjguNVQyNDAtMTYwWm0tNDAgMHYtODAgODBaIi8+PC9zdmc+)](https://github.com/devaloop-labs/devalang/blob/main/docs/CHANGELOG.md)
43
+ [![Examples](https://img.shields.io/badge/Examples-%231DE9B6?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDgwLTgwcS0zMyAwLTU2LjUtMjMuNVQ0MDAtMTYwaDE2MHEwIDMzLTIzLjUgNTYuNVQ0ODAtODBaTTMyMC0yMDB2LTgwaDMyMHY4MEgzMjBabTEwLTEyMHEtNjktNDEtMTA5LjUtMTEwVDE4MC01ODBxMC0xMjUgODcuNS0yMTIuNVQ0ODAtODgwcTEyNSAwIDIxMi41IDg3LjVUNzgwLTU4MHEwIDgxLTQwLjUgMTUwVDYzMC0zMjBIMzMwWm0yNC04MGgyNTJxNDUtMzIgNjkuNS03OVQ3MDAtNTgwcTAtOTItNjQtMTU2dC0xNTYtNjRxLTkyIDAtMTU2IDY0dC02NCAxNTZxMCA1NCAyNC41IDEwMXQ2OS41IDc5Wm0xMjYgMFoiLz48L3N2Zz4=)](https://github.com/devaloop-labs/devalang/blob/main/examples)
45
44
 
46
45
  ### Common projects and tools
47
- - [📦 Devapack](https://github.com/devaloop-labs/devapack) — Community-driven addons
48
- - [🧩 VSCode Extension](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode) — Syntax highlighting & snippets
46
+
47
+ [![Devapack](https://img.shields.io/badge/Devapack-%235A44BA?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDQwLTE4M3YtMjc0TDIwMC01OTZ2Mjc0bDI0MCAxMzlabTgwIDAgMjQwLTEzOXYtMjc0TDUyMC00NTd2Mjc0Wm0tODAgOTJMMTYwLTI1MnEtMTktMTEtMjkuNS0yOVQxMjAtMzIxdi0zMThxMC0yMiAxMC41LTQwdDI5LjUtMjlsMjgwLTE2MXExOS0xMSA0MC0xMXQ0MCAxMWwyODAgMTYxcTE5IDExIDI5LjUgMjl0MTAuNSA0MHYzMThxMCAyMi0xMC41IDQwVDgwMC0yNTJMNTIwLTkxcS0xOSAxMS00MCAxMXQtNDAtMTFabTIwMC01MjggNzctNDQtMjM3LTEzNy03OCA0NSAyMzggMTM2Wm0tMTYwIDkzIDc4LTQ1LTIzNy0xMzctNzggNDUgMjM3IDEzN1oiLz48L3N2Zz4=)](https://github.com/devaloop-labs/devapack)
48
+ [![VSCode Extension](https://img.shields.io/badge/VSCode%20Extension-%237C5FFF?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMzUyLTEyMEgyMDBxLTMzIDAtNTYuNS0yMy41VDEyMC0yMDB2LTE1MnE0OCAwIDg0LTMwLjV0MzYtNzcuNXEwLTQ3LTM2LTc3LjVUMTIwLTU2OHYtMTUycTAtMzMgMjMuNS01Ni41VDIwMC04MDBoMTYwcTAtNDIgMjktNzF0NzEtMjlxNDIgMCA3MSAyOXQyOSA3MWgxNjBxMzMgMCA1Ni41IDIzLjVUODAwLTcyMHYxNjBxNDIgMCA3MSAyOXQyOSA3MXEwIDQyLTI5IDcxdC03MSAyOXYxNjBxMCAzMy0yMy41IDU2LjVUNzIwLTEyMEg1NjhxMC01MC0zMS41LTg1VDQ2MC0yNDBxLTQ1IDAtNzYuNSAzNVQzNTItMTIwWm0tMTUyLTgwaDg1cTI0LTY2IDc3LTkzdDk4LTI3cTQ1IDAgOTggMjd0NzcgOTNoODV2LTI0MGg4MHE4IDAgMTQtNnQ2LTE0cTAtOC02LTE0dC0xNC02aC04MHYtMjQwSDQ4MHYtODBxMC04LTYtMTR0LTE0LTZxLTggMC0xNCA2dC02IDE0djgwSDIwMHY4OHE1NCAyMCA4NyA2N3QzMyAxMDVxMCA1Ny0zMyAxMDR0LTg3IDY4djg4Wm0yNjAtMjYwWiIvPjwvc3ZnPg==)](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode)
49
49
 
50
50
  ### Downloads
51
- - [🐙 Installers](https://devalang.com/download) — For Windows, macOS, and Linux
52
- - [📦 npm](https://www.npmjs.com/package/@devaloop/devalang) — Install via npm
53
- - [📦 cargo](https://crates.io/crates/devalang) — Install via Cargo
51
+
52
+ [![Binaries & Installers](https://img.shields.io/badge/Binaries%20%26%20installers-%23129978?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDgwLTMyMCAyODAtNTIwbDU2LTU4IDEwNCAxMDR2LTMyNmg4MHYzMjZsMTA0LTEwNCA1NiA1OC0yMDAgMjAwWk0yNDAtMTYwcS0zMyAwLTU2LjUtMjMuNVQxNjAtMjQwdi0xMjBoODB2MTIwaDQ4MHYtMTIwaDgwdjEyMHEwIDMzLTIzLjUgNTYuNVQ3MjAtMTYwSDI0MFoiLz48L3N2Zz4=)](https://devalang.com/download)
53
+
54
+ ### Community
55
+
56
+ [![Discord](https://img.shields.io/badge/Labscend-%235865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/wCqd8e6JD8)
57
+ [![Instagram](https://img.shields.io/badge/Labscend-%23E1306C?style=for-the-badge&logo=Instagram&logoColor=white)](https://www.instagram.com/labscend)
58
+ [![X](https://img.shields.io/badge/Labscend-%23000?style=for-the-badge&logo=X&logoColor=white)](https://x.com/labscend)
59
+ [![LinkedIn](https://img.shields.io/badge/Labscend%20studios-%230077B5?style=for-the-badge&logo=data:image/png;base64,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)](https://linkedin.com/company/labscend-studios)
60
+
54
61
 
55
62
  ## ⚡ Quick Start
56
63
 
57
- ### Try in Your Browser
64
+ ### [Try in Your Browser](https://playground.devalang.com)
65
+
66
+ Launch the Devalang Playground to write, run, and share Devalang code directly in your web browser. No installation required !
67
+
68
+ ### [Download an installer (recommended)](https://devalang.com/download)
69
+
70
+ Visit the download page to get the latest releases for Windows, macOS, and Linux.
58
71
 
59
- > **[Launch the Playground](https://playground.devalang.com) to try Devalang without installing anything.**
72
+ This is the recommended way to install Devalang, as the installers will set up everything for you, including adding Devalang to your system PATH.
60
73
 
61
- ### Download the Installers (Recommended)
74
+ ### [Download a binary executable (advanced)](https://devalang.com/download)
62
75
 
63
- Visit the [Download page](https://devalang.com/download) to get the latest releases for Windows, macOS, and Linux.
76
+ You can also download the standalone binaries for your OS from the download page.
77
+
78
+ You must ensure that the binary is executable (e.g., `chmod +x <binary_name>` on Linux/Mac).
79
+
80
+ You must also add the binary to your system PATH to use it from any terminal location.
81
+
82
+ ---
64
83
 
65
84
  ### Install via npm (Node.js)
66
85
 
@@ -74,6 +93,12 @@ npm install -g @devaloop/devalang
74
93
  cargo install devalang
75
94
  ```
76
95
 
96
+ ### (optional but recommended) Install the VSCode extension
97
+
98
+ ```bash
99
+ code --install-extension devaloop.devalang-vscode
100
+ ```
101
+
77
102
  ### Create Your First Project
78
103
 
79
104
  ```bash
@@ -123,49 +148,122 @@ Create a file `hello.deva` or `index.deva` (if you do not specify `--input` argu
123
148
  - Ensure your text editor supports **UTF-8 encoding**.
124
149
  - Devalang is **case-sensitive**, so be consistent with capitalization.
125
150
  - Devalang reads files from **top to bottom**, so order matters.
126
- - Devalang files typically start with global settings (e.g., `bpm`, `bank`), followed by definitions (`synth`, `pattern`, `group`), and finally execution commands (`spawn`, `play`).
151
+ - Devalang files typically starts with :
152
+ 1. Module system (`@load`, `@import`, `@use`)
153
+ 2. Global settings (`bpm`, `bank`)
154
+ 3. Definitions (`const/let/var`, `synth`, `pattern`, `group`)
155
+ 4. Algorithmic logic (`if`, `loop`, `for`)
156
+ 5. Musical logic / Execution (trigger calls, automations, `call`, `spawn`, `sleep`)
157
+ 6. Optional exports (`@export`)
127
158
  - Devalang files can include comments using `#` or `//` for single-line comments.
128
159
  - You can name your files anything, but `index.deva` is a common convention for the main entry file.
129
- - You can organize your project with subfolders as needed. (use module system like `@import { var } from '<module_path>'` and `@export { var }`).
160
+ - You can organize your project with subfolders as needed. (use module system like `@import { var } from '<module_file_path>.deva'` and `@export { var }`).
130
161
 
131
162
  Refer to the [documentation](https://docs.devalang.com) for a complete syntax reference.
132
163
 
133
164
  ```deva
134
- # Set the tempo
135
- bpm 120
165
+ # Import some variables from other modules
166
+ @import { myTempo } from "./shared/variables.deva"
167
+
168
+ # Load an external sample and a MIDI file
169
+ @load "./samples/my-sample.wav" as mySample
170
+ @load "./midi/my-midi-file.mid" as myMidiFile
171
+
172
+ # Set the tempo with the imported variable
173
+ bpm myTempo
136
174
 
137
175
  # Load a bank of sounds (make sure you have the bank installed)
138
176
  bank devaloop.808 as drums
139
177
 
140
- # Create a simple kick pattern
178
+ # Create a simple kick pattern (can also use "mySample")
141
179
  pattern kickPattern with drums.kick = "x--- x--- x--- x---"
142
180
 
143
- # Define a synth and a melody
144
- let mySynth = synth saw
181
+ # Define a constant for synth, with a global LFO effect
182
+ # You can define variables scopes using const/let/var
183
+ const mySynth = synth saw
184
+ -> lfo({
185
+ rate: "1/8",
186
+ depth: 1.0,
187
+ waveform: "triangle",
188
+ target: "pitch",
189
+ semitones: 3.0
190
+ })
145
191
 
146
192
  # Define a melody using a group to organize notes
147
193
  group myMelody:
148
-
149
194
  mySynth -> note(C5)
150
- -> duration(500) # 500ms
195
+ -> duration(500) # Note playing for 500ms
151
196
 
152
197
  mySynth -> note(E5)
153
- -> duration(1/4) # Quarter note
198
+ -> duration(1/4) # Note playing for 1/4 beats
154
199
 
155
- mySynth -> note(G5)
156
- -> duration(1/16) # Sixteenth note
157
- -> velocity(0.8) # Velocity (0.0 to 1.0) or 0-127
158
- -> lpf(800) # Lowpass filter at 800Hz
159
- -> reverb({ size: 0.3 }) # Reverb effect
200
+ mySynth -> chord(Gmaj7)
201
+ -> duration(1/8) # Chord playing for 1/8 beats
202
+ -> velocity(100) # Velocity (0.0 to 1.0) or 0-127
203
+ -> lpf({
204
+ cutoff: 800.0, # Lowpass filter at 800 Hz
205
+ resonance: 0.5 # Filter resonance at 50%
206
+ })
207
+ -> reverb({ size: 0.3 }) # Small reverb effect
160
208
 
161
209
  # Play the melody (in parallel)
162
210
  spawn myMelody
163
211
 
164
212
  # Play the kick pattern (in parallel too)
165
213
  spawn kickPattern
214
+
215
+ # Bind and play the loaded MIDI pattern with 'mySynth' synth
216
+ bind myMidiFile -> mySynth
217
+
218
+ # Pause for 1/4 beats
219
+ sleep 1/4
220
+
221
+ # Store the sample in a variable and apply effects to it
222
+ let myAwesomeSample = .mySample
223
+ -> reverse(true) # Reverse the sample audio
224
+ -> speed(2.0) # Multiply the playing speed by 2
225
+ -> dist({
226
+ amount: 1.0, # Apply a maximal distortion
227
+ mix: 0.5 # Apply a 50% mixing
228
+ })
229
+ -> reverb({
230
+ size: 1.0, # Apply a maximal reverb size
231
+ decay: 0.1, # Apply a short decay
232
+ mix: 0.5 # Apply a 50% mixing
233
+ })
234
+ -> reverb({ # Duplicate reverb for a stronger effect
235
+ size: 1.0,
236
+ decay: 0.1,
237
+ mix: 0.5
238
+ })
239
+
240
+ # Playing the stored sample trigger in different ways
241
+ .myAwesomeSample # Play the full sample length
242
+ .myAwesomeSample auto # Use maximal sample length by default
243
+ .myAwesomeSample 1/8 # Play the sample for 1/8 beats
244
+
245
+ # Play the sample in conditional loop
246
+ for i in [0..3]:
247
+ if i == 2:
248
+ .myAwesomeSample 1/4 # Play for 1/4 beats on iteration 2
249
+ else:
250
+ .myAwesomeSample 1/8 # Play for 1/8 beats otherwise
251
+
252
+ # Play the sample in a blocking loop (run 10 times before continuing)
253
+ loop 10:
254
+ .myAwesomeSample auto
255
+
256
+ # Play the sample in an (infinite) passthrough loop (non-blocking)
257
+ # This will continue playing in the background and let the script continue
258
+ # You can also specify a passthrough max duration using "loop pass(500):" (in ms)
259
+ loop pass:
260
+ .myAwesomeSample auto
261
+
262
+ # Export the melody
263
+ @export { myMelody }
166
264
  ```
167
265
 
168
- ### (optional) Configure project settings
266
+ ### ⚙️ (optional) Configure project settings
169
267
 
170
268
  You can create a `devalang.json` (recommended) or `devalang.toml` or even `.devalang` (legacy) file to customize check/build/play settings.
171
269
 
@@ -191,7 +289,7 @@ This typically evitate to re-type common arguments like `--path`, `--formats`, e
191
289
  "bpm": 120 // Change this to adjust the project tempo (only if not set in code)
192
290
  },
193
291
  "live": {
194
- "crossfade_ms": 500 // Change this to adjust crossfade duration when playing live
292
+ "crossfade_ms": 50 // Change this to adjust crossfade duration when playing live
195
293
  }
196
294
  }
197
295
 
@@ -213,9 +311,9 @@ devalang play --input hello.deva
213
311
  # Play live (repeats and watch until stopped)
214
312
  devalang play --live --input hello.deva
215
313
 
216
- # Play live loop with very short crossfade
217
- # With 50ms, transitions between loops are no more distinguishable
218
- devalang play --live --crossfade-ms 50 --input hello.deva
314
+ # Play live loop without crossfade
315
+ # With 0ms, transitions between loops are no more distinguishable
316
+ devalang play --live --crossfade-ms 0 --input hello.deva
219
317
  ```
220
318
 
221
319
  ## 🚀 Features
@@ -233,8 +331,8 @@ devalang play --live --crossfade-ms 50 --input hello.deva
233
331
  - ✅ **Events** — Event system with `on` and `emit`
234
332
 
235
333
  ### 🛠️ **CLI Tools**
236
- - ✅ `devalang init` — Scaffold new projects (3 templates)
237
- - ✅ `devalang build` — Compile to WAV/MIDI
334
+ - ✅ `devalang init` — Scaffold new projects
335
+ - ✅ `devalang build` — Compile to WAV/MIDI/MP3
238
336
  - ✅ `devalang check` — Validate syntax
239
337
  - ✅ `devalang play` — Audio playback
240
338
  - ✅ `devalang addon` — Manage addons (install, list, discover)
@@ -272,16 +370,6 @@ devalang play --live --crossfade-ms 50 --input hello.deva
272
370
  - 🎨 **Live code** with fast iteration cycles
273
371
  - 📦 **Version control** your music with git
274
372
 
275
- ## 📖 Documentation
276
-
277
- Visit **[docs.devalang.com](https://docs.devalang.com)** for:
278
- - Complete syntax reference
279
- - API documentation
280
- - WASM integration guide
281
- - CLI command reference
282
- - Advanced tutorials
283
- - Best practices
284
-
285
373
  ## 🔧 Development
286
374
 
287
375
  ### Build from Source
@@ -315,16 +403,14 @@ We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guideline
315
403
  ### Ways to Contribute
316
404
 
317
405
  - 🐛 **Report bugs** via [GitHub Issues](https://github.com/devaloop-labs/devalang/issues)
318
- - 💡 **Suggest features** in discussions
319
- - 📝 **Improve docs** with pull requests
320
- - 🎵 **Share examples** of your creations
321
- - 🧪 **Write tests** for new features
406
+ - 💡 **Suggest features** on [hello@labscend.studio](mailto://hello@labscend.studio)
407
+ - 🎵 **Share examples** of your creations with **#devalang** tag
322
408
 
323
409
  ## 📜 License
324
410
 
325
411
  MIT License — See [LICENSE](./LICENSE) for details.
326
412
 
327
- Copyright (c) 2025 Devaloop
413
+ Copyright (c) 2025 Labscend Studios
328
414
 
329
415
  ---
330
416
 
@@ -1,14 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * Devalang CLI entry point
4
- *
5
- * This is a placeholder that forwards to the Rust CLI binary.
6
- * The actual CLI is built with Cargo and should be run with:
7
- *
8
- * cargo run --features cli -- [args]
9
- *
10
- * For the npm package, users should install the Rust toolchain
11
- * or we should provide pre-built binaries.
12
- */
13
2
  export {};
14
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typescript/bin/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typescript/bin/index.ts"],"names":[],"mappings":""}
@@ -1,23 +1,58 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- /**
4
- * Devalang CLI entry point
5
- *
6
- * This is a placeholder that forwards to the Rust CLI binary.
7
- * The actual CLI is built with Cargo and should be run with:
8
- *
9
- * cargo run --features cli -- [args]
10
- *
11
- * For the npm package, users should install the Rust toolchain
12
- * or we should provide pre-built binaries.
13
- */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
14
36
  Object.defineProperty(exports, "__esModule", { value: true });
15
- console.log('Devalang CLI');
16
- console.log('============\n');
17
- console.log('The Devalang CLI is built with Rust.');
18
- console.log('Please run it using Cargo:\n');
19
- console.log(' cargo run --features cli -- build --path examples/test.deva\n');
20
- console.log('Or install the standalone binary from:');
21
- console.log(' https://github.com/devaloop-labs/devalang/releases\n');
22
- process.exit(0);
37
+ const child_process_1 = require("child_process");
38
+ const path = __importStar(require("path"));
39
+ let binaryName;
40
+ switch (process.platform) {
41
+ case "win32":
42
+ binaryName = "devalang-x86_64-pc-windows-msvc.exe";
43
+ break;
44
+ case "darwin":
45
+ binaryName = "devalang-x86_64-apple-darwin";
46
+ break;
47
+ case "linux":
48
+ binaryName = "devalang-x86_64-unknown-linux-gnu";
49
+ break;
50
+ default:
51
+ console.error(`Unsupported platform: ${process.platform}`);
52
+ process.exit(1);
53
+ }
54
+ const binaryPath = path.join(__dirname, binaryName);
55
+ const args = process.argv.slice(2);
56
+ const child = (0, child_process_1.spawn)(binaryPath, args, { stdio: "inherit" });
57
+ child.on("exit", (code) => process.exit(code ?? 1));
23
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typescript/bin/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;GAUG;;AAEH,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC5C,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;AAC/E,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACtD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;AAEtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typescript/bin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,iDAAsC;AACtC,2CAA6B;AAE7B,IAAI,UAAkB,CAAC;AAEvB,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzB,KAAK,OAAO;QACV,UAAU,GAAG,qCAAqC,CAAC;QACnD,MAAM;IACR,KAAK,QAAQ;QACX,UAAU,GAAG,8BAA8B,CAAC;QAC5C,MAAM;IACR,KAAK,OAAO;QACV,UAAU,GAAG,mCAAmC,CAAC;QACjD,MAAM;IACR;QACE,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAE5D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@devaloop/devalang",
3
3
  "private": false,
4
- "version": "0.1.4",
5
- "description": "Write music like code. Devalang is a domain-specific language (DSL) for sound designers and music hackers. Compose, automate, and control sound — in plain text.",
4
+ "version": "0.1.6",
5
+ "description": "Write music with code. Devalang is a domain-specific language (DSL) for sound designers and music hackers. Compose, automate, and control sound — in plain text.",
6
6
  "main": "out-tsc/index.js",
7
7
  "types": "./out-tsc/index.d.ts",
8
8
  "bin": {
@@ -32,7 +32,6 @@
32
32
  "test:examples": "cargo run --features cli -- check --entry examples/",
33
33
  "clean": "cargo clean && npm run ts:clean",
34
34
  "prepare": "npm run ts:build",
35
- "prepublishOnly": "npm run build:all",
36
35
  "postinstall": "node -e \"try { require('./out-tsc/scripts/postinstall.js') } catch (e) { console.log('⚠️ Skipping postinstall (build first)') }\""
37
36
  },
38
37
  "homepage": "https://devalang.com",
@@ -67,7 +66,7 @@
67
66
  "typescript": "^5.9.3"
68
67
  },
69
68
  "engines": {
70
- "node": ">=16.0.0"
69
+ "node": ">=18.0.0"
71
70
  },
72
71
  "files": [
73
72
  "out-tsc/**/*",