@hraness/dawg 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/DAWG.md +655 -141
  3. package/README.md +27 -25
  4. package/core/autotune.ts +1119 -0
  5. package/core/chords.ts +759 -23
  6. package/core/clips.ts +499 -0
  7. package/core/diff.ts +182 -99
  8. package/core/expression.ts +158 -6
  9. package/core/fx.ts +354 -32
  10. package/core/granular.ts +91 -0
  11. package/core/instruments.ts +180 -0
  12. package/core/keys.ts +573 -4
  13. package/core/loop.ts +5 -0
  14. package/core/lyrics.ts +297 -0
  15. package/core/master.ts +3 -3
  16. package/core/resonators.ts +306 -4
  17. package/core/routing.ts +165 -0
  18. package/core/score.ts +1181 -16
  19. package/core/sdk/eval-child.ts +7 -2
  20. package/core/sdk/eval.ts +35 -6
  21. package/core/sdk/print.ts +354 -6
  22. package/core/sdk/sync-lyrics.ts +49 -0
  23. package/core/sdk/v1.ts +3160 -69
  24. package/core/sections.ts +298 -24
  25. package/core/sing.ts +815 -0
  26. package/core/strings.ts +237 -2
  27. package/core/style-provenance.ts +80 -0
  28. package/core/styles/africa-mena-southasia.ts +2893 -0
  29. package/core/styles/americas.ts +3810 -0
  30. package/core/styles/art.ts +4993 -0
  31. package/core/styles/base.ts +123 -0
  32. package/core/styles/cycles.ts +106 -0
  33. package/core/styles/electronic.ts +2723 -0
  34. package/core/styles/europe-asia-pacific.ts +2838 -0
  35. package/core/styles/excerpt.ts +29 -0
  36. package/core/styles/gamelan.ts +283 -0
  37. package/core/styles/generate.ts +2199 -0
  38. package/core/styles/index.ts +515 -0
  39. package/core/styles/parts.ts +106 -0
  40. package/core/styles/pop.ts +3189 -0
  41. package/core/styles/rock.ts +2993 -0
  42. package/core/styles/roots.ts +4175 -0
  43. package/core/styles/schema.ts +429 -0
  44. package/core/styles/taxonomy.ts +940 -0
  45. package/core/styles/validate.ts +528 -0
  46. package/core/tempo.ts +32 -2
  47. package/core/tuning.ts +19 -3
  48. package/core/vocoder.ts +524 -0
  49. package/core/winds.ts +652 -0
  50. package/guides/agent.md +29 -0
  51. package/guides/arrange.md +30 -0
  52. package/guides/audition.md +20 -14
  53. package/guides/automation.md +12 -6
  54. package/guides/chords.md +16 -14
  55. package/guides/effects.md +17 -15
  56. package/guides/faders.md +20 -16
  57. package/guides/files.md +13 -9
  58. package/guides/getting-started.md +15 -11
  59. package/guides/keys.md +19 -15
  60. package/guides/media.md +17 -12
  61. package/guides/mix.md +12 -6
  62. package/guides/music.md +23 -8
  63. package/guides/notes.md +15 -9
  64. package/guides/performance.md +15 -10
  65. package/guides/play.md +21 -13
  66. package/guides/project.md +25 -8
  67. package/guides/providers.md +20 -14
  68. package/guides/resample.md +32 -0
  69. package/guides/rhythm.md +17 -13
  70. package/guides/sessions.md +17 -7
  71. package/guides/show-me.md +31 -0
  72. package/guides/sound.md +25 -9
  73. package/guides/sounds.md +15 -12
  74. package/guides/styles.md +31 -0
  75. package/guides/tempo.md +15 -10
  76. package/guides/tracks.md +15 -10
  77. package/guides/tuning.md +32 -0
  78. package/guides/voice.md +31 -0
  79. package/guides/web-search.md +18 -8
  80. package/native/prebuilt/darwin-arm64/libdawg_sink.dylib +0 -0
  81. package/native/prebuilt/darwin-x64/libdawg_sink.dylib +0 -0
  82. package/native/prebuilt/linux-arm64/libdawg_sink.so +0 -0
  83. package/native/prebuilt/linux-x64/libdawg_sink.so +0 -0
  84. package/native/prebuilt/manifest.json +21 -0
  85. package/package.json +5 -2
  86. package/src/agent/agent.ts +131 -13
  87. package/src/agent/calibration-tools.ts +53 -0
  88. package/src/agent/chord-tools.ts +153 -1
  89. package/src/agent/clip-tools.ts +453 -0
  90. package/src/agent/command-agent.ts +369 -0
  91. package/src/agent/drum-tools.ts +2 -2
  92. package/src/agent/expression-tools.ts +91 -0
  93. package/src/agent/gateway.ts +246 -60
  94. package/src/agent/models.ts +53 -12
  95. package/src/agent/ops.ts +15 -1
  96. package/src/agent/pack-tools.ts +1 -1
  97. package/src/agent/planner.ts +13 -0
  98. package/src/agent/portable-schema.ts +80 -0
  99. package/src/agent/preview-tool.ts +5 -1
  100. package/src/agent/provider.ts +22 -8
  101. package/src/agent/resample-tool.ts +131 -0
  102. package/src/agent/rhythm-tools.ts +1 -1
  103. package/src/agent/section-tools.ts +1 -1
  104. package/src/agent/show-me.ts +497 -0
  105. package/src/agent/steer.ts +15 -0
  106. package/src/agent/style-tools.ts +217 -0
  107. package/src/agent/tool-error.ts +12 -0
  108. package/src/agent/tools.ts +307 -37
  109. package/src/agent/usage.ts +2 -2
  110. package/src/agent/voice-tools.ts +925 -0
  111. package/src/agent/xcb-agent.ts +16 -6
  112. package/src/argv.ts +38 -0
  113. package/src/audio/analysis.ts +253 -0
  114. package/src/audio/arrange.ts +58 -3
  115. package/src/audio/autotune-engine.ts +101 -0
  116. package/src/audio/autotune.ts +640 -0
  117. package/src/audio/clips.ts +240 -0
  118. package/src/audio/doctor.ts +86 -0
  119. package/src/audio/dsp/bandbank.ts +138 -0
  120. package/src/audio/dsp/envelope.ts +171 -0
  121. package/src/audio/dsp/follow.ts +120 -0
  122. package/src/audio/dsp/formant.ts +427 -0
  123. package/src/audio/dsp/glottal.ts +243 -0
  124. package/src/audio/dsp/interp.ts +7 -2
  125. package/src/audio/dsp/lpc.ts +50 -0
  126. package/src/audio/dsp/periodicity.ts +59 -0
  127. package/src/audio/dsp/pitch.ts +995 -0
  128. package/src/audio/dsp/psola.ts +199 -0
  129. package/src/audio/dsp/shift.ts +256 -0
  130. package/src/audio/effects/chain.ts +21 -4
  131. package/src/audio/effects/common.ts +57 -0
  132. package/src/audio/effects/convolution.ts +113 -5
  133. package/src/audio/effects/filter.ts +48 -69
  134. package/src/audio/effects/formant.ts +263 -0
  135. package/src/audio/effects/gaze.ts +354 -0
  136. package/src/audio/engine.ts +206 -33
  137. package/src/audio/fit.ts +80 -3
  138. package/src/audio/granular.ts +352 -21
  139. package/src/audio/instrument-check.ts +67 -47
  140. package/src/audio/instruments.ts +36 -3
  141. package/src/audio/keys/calibration.ts +56 -0
  142. package/src/audio/keys/electric.ts +427 -0
  143. package/src/audio/keys/engine.ts +156 -20
  144. package/src/audio/keys/organ.ts +1335 -0
  145. package/src/audio/keys/piano.ts +72 -8
  146. package/src/audio/keys/sympathetic.ts +127 -0
  147. package/src/audio/kits.ts +135 -6
  148. package/src/audio/live-worker.ts +3 -1
  149. package/src/audio/live.ts +247 -26
  150. package/src/audio/native.ts +615 -0
  151. package/src/audio/preview.ts +45 -3
  152. package/src/audio/render-worker.ts +2 -0
  153. package/src/audio/renderer.ts +2 -0
  154. package/src/audio/resample.ts +286 -0
  155. package/src/audio/resonators.ts +10 -2
  156. package/src/audio/sampler.ts +252 -24
  157. package/src/audio/samples.ts +46 -3
  158. package/src/audio/sing/analysis.ts +193 -0
  159. package/src/audio/sing/engine.ts +949 -0
  160. package/src/audio/strings/body.ts +29 -16
  161. package/src/audio/strings/bow.ts +699 -0
  162. package/src/audio/strings/engine.ts +274 -22
  163. package/src/audio/strings/measure.test-helpers.ts +2 -0
  164. package/src/audio/synth/oscillators.ts +31 -21
  165. package/src/audio/synth/voice.ts +34 -1
  166. package/src/audio/vocoder/bank.ts +314 -0
  167. package/src/audio/vocoder/carrier.ts +165 -0
  168. package/src/audio/vocoder/control.ts +68 -0
  169. package/src/audio/vocoder/detect.ts +50 -0
  170. package/src/audio/vocoder/index.ts +304 -0
  171. package/src/audio/vocoder/talkbox.ts +143 -0
  172. package/src/audio/wav.ts +608 -85
  173. package/src/audio/winds/engine.ts +306 -0
  174. package/src/audio/winds/filters.ts +153 -0
  175. package/src/audio/winds/pitch.ts +104 -0
  176. package/src/audio/winds/trim.ts +104 -0
  177. package/src/audio/winds/trims.ts +917 -0
  178. package/src/audio/winds/trims1.ts +297 -0
  179. package/src/audio/winds/voice.ts +492 -0
  180. package/src/auth/cli.ts +38 -36
  181. package/src/auth/credentials.ts +30 -1
  182. package/src/auth/login.ts +15 -9
  183. package/src/auth/tui.ts +19 -10
  184. package/src/commands/arrange.ts +44 -29
  185. package/src/commands/autotune.ts +421 -0
  186. package/src/commands/calibration.ts +74 -0
  187. package/src/commands/clips.ts +887 -0
  188. package/src/commands/drums.ts +3 -2
  189. package/src/commands/edit.ts +11 -4
  190. package/src/commands/expression.ts +104 -23
  191. package/src/commands/formant.ts +221 -0
  192. package/src/commands/fx.ts +105 -33
  193. package/src/commands/grammar.ts +558 -0
  194. package/src/commands/granular.ts +7 -2
  195. package/src/commands/help.ts +652 -339
  196. package/src/commands/history.ts +18 -0
  197. package/src/commands/keys.ts +293 -17
  198. package/src/commands/modal.ts +67 -4
  199. package/src/commands/music.ts +1 -1
  200. package/src/commands/nearest.ts +53 -0
  201. package/src/commands/pack.ts +9 -2
  202. package/src/commands/param-range.ts +56 -0
  203. package/src/commands/parses.ts +130 -0
  204. package/src/commands/progression.ts +170 -0
  205. package/src/commands/resample.ts +281 -0
  206. package/src/commands/rhythm.ts +3 -0
  207. package/src/commands/rig.ts +8 -25
  208. package/src/commands/sample.ts +49 -2
  209. package/src/commands/shift.ts +119 -0
  210. package/src/commands/sing.ts +478 -0
  211. package/src/commands/string.ts +28 -2
  212. package/src/commands/strum.ts +485 -0
  213. package/src/commands/style.ts +415 -0
  214. package/src/commands/time.ts +6 -3
  215. package/src/commands/tuning.ts +3 -3
  216. package/src/commands/vocal-pitch.ts +616 -0
  217. package/src/commands/vocal.ts +147 -0
  218. package/src/commands/vocoder.ts +627 -0
  219. package/src/commands/wind.ts +244 -0
  220. package/src/fs/durable.ts +50 -0
  221. package/src/lang/glossary.ts +493 -0
  222. package/src/launch-args.ts +163 -0
  223. package/src/main.ts +1521 -255
  224. package/src/media/cli.ts +20 -3
  225. package/src/media/import.ts +3 -1
  226. package/src/project/check.ts +26 -3
  227. package/src/project/clip-pins.ts +72 -0
  228. package/src/project/init.ts +23 -8
  229. package/src/project/sync.ts +418 -86
  230. package/src/render.ts +36 -1
  231. package/src/session/daemon.ts +3 -0
  232. package/src/session/meta.ts +14 -0
  233. package/src/session/origin.ts +154 -0
  234. package/src/session/port.ts +22 -4
  235. package/src/session/presence.ts +50 -7
  236. package/src/session/protocol.ts +5 -1
  237. package/src/session/rebase.ts +18 -5
  238. package/src/session/receipt.ts +258 -0
  239. package/src/session/store.ts +65 -43
  240. package/src/tui/arrange-menu.ts +65 -31
  241. package/src/tui/audition.ts +1 -1
  242. package/src/tui/euclid.ts +18 -13
  243. package/src/tui/fader.ts +228 -41
  244. package/src/tui/granular-menu.ts +2 -4
  245. package/src/tui/menu-clips.ts +297 -0
  246. package/src/tui/menu-time.ts +20 -13
  247. package/src/tui/menu-voice.ts +405 -0
  248. package/src/tui/menu.ts +1377 -193
  249. package/src/tui/modal-menu.ts +38 -11
  250. package/src/tui/performance-menu.ts +46 -1
  251. package/src/tui/play-chords.ts +108 -5
  252. package/src/tui/play-mode.ts +16 -1
  253. package/src/tui/play-session.ts +81 -16
  254. package/src/tui/sing-menu.ts +278 -0
  255. package/src/tui/style-menu.ts +104 -0
  256. package/src/tui/vocoder-menu.ts +244 -0
  257. package/src/tui/wind-menu.ts +144 -0
  258. package/src/version.ts +8 -0
  259. package/src/web/fetch.ts +115 -29
  260. package/tui/activity.ts +180 -9
  261. package/tui/app.ts +274 -40
  262. package/tui/clip-row.ts +132 -0
  263. package/tui/delight.ts +144 -0
  264. package/tui/drawer.ts +70 -22
  265. package/tui/frame-gate.ts +76 -0
  266. package/tui/grammar.ts +112 -63
  267. package/tui/guide.ts +42 -4
  268. package/tui/highway.ts +269 -25
  269. package/tui/hints.ts +192 -0
  270. package/tui/input.ts +60 -9
  271. package/tui/keys.ts +1 -1
  272. package/tui/play-strip.ts +68 -14
  273. package/tui/prompt.ts +1 -1
  274. package/tui/screen.ts +144 -14
  275. package/tui/theme.ts +27 -0
@@ -1,25 +1,31 @@
1
1
  ---
2
2
  id: providers
3
3
  title: Providers and models
4
- parent: project
5
- order: 3
4
+ parent: agent
5
+ order: 2
6
6
  ---
7
7
 
8
- Commands work offline. Plain requests go to the agent once a provider
9
- is set: AI Gateway, OpenRouter, or a Codex or Claude subscription.
8
+ Plain requests go to the agent once a provider is set: AI Gateway,
9
+ OpenRouter, or a Codex or Claude subscription.
10
10
 
11
- ## Shell
11
+ ## Ask
12
12
 
13
- - `dawg login` finds existing setups and lets you pick
14
- - `dawg login gateway` · `openrouter` · `codex` · `claude`
15
- - `dawg model` pick a model with the cost per prompt
16
- - `dawg auth status --check` · `dawg logout`
13
+ - "which model are you?" (after `model key`)
17
14
 
18
- ## In the app
15
+ ## Type it yourself
19
16
 
20
- - `/login` · `/model` picker · `/model <alias>` · `/logout`
21
- - `/auth --check` provider and audio status
17
+ - `dawg model key` finds setups · `dawg model key gateway`
18
+ - `model key` · `model` picker · `model fast` · `logout`
19
+ - `/auth --check` · `DAWG_MODEL=<alias>` · `DAWG_AI=0` no agent
22
20
 
23
- ## Environment
21
+ ## Menu
24
22
 
25
- - `DAWG_PROVIDER=gateway` · `DAWG_MODEL=<alias>` · `DAWG_AI=0` no agent
23
+ - Ctrl-K › Project › agent › model · model key
24
+
25
+ ## Keys
26
+
27
+ - In the model picker ↑↓ move · Enter choose · `/` filter
28
+
29
+ ## Next
30
+
31
+ - `guide agent` · `guide web-search`
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: resample
3
+ title: Resample, grains and shift
4
+ parent: sound
5
+ order: 3
6
+ ---
7
+
8
+ Turn a part into a sample, grain it, and play the grains like an
9
+ instrument.
10
+
11
+ ## Ask
12
+
13
+ - "resample the lead and make a grain cloud of bars 1-2"
14
+
15
+ ## Type it yourself
16
+
17
+ - `resample lead` · `resample drums bars 1-2 grain`
18
+ - `shift 7` · `shift 7 formant keep` · `fade out 0.5`
19
+ - `grain sync 1/16` · `grain quant scale` · `grain mono on`
20
+ - `automate grain-pos points 0:0.1 8:0.9` sweeps the head
21
+
22
+ ## Menu
23
+
24
+ - Ctrl-K › Project › resample · Ctrl-K › Sound › granular
25
+
26
+ ## Keys
27
+
28
+ - In the granular rows ←→ adjust · Enter opens a fader
29
+
30
+ ## Next
31
+
32
+ - `guide media` · `guide automation`
package/guides/rhythm.md CHANGED
@@ -1,26 +1,30 @@
1
1
  ---
2
2
  id: rhythm
3
3
  title: Rhythm and drums
4
- parent: music
5
- order: 5
4
+ order: 6
6
5
  ---
7
6
 
7
+ A drum track has one row per drum: kick, snare, hat and more.
8
+
8
9
  ## Ask
9
10
 
10
11
  - "give me a house beat" · "add a swung hat, seven hits in sixteen"
11
12
 
12
13
  ## Type it yourself
13
14
 
14
- - `/pattern house` a starting groove · `/pattern` picker (previews)
15
- - `/kit syn909` a drum kit · `/kit` picker
16
- - `hit kick at 0` · `hit snare at 1 vel 0.7`
17
- - `pattern kick 0 1 2 3` · `pattern hat every 0.5 from 0.25`
18
- - `euclid hat 7 16 rotate 2` hits spread over steps
19
- - `euclid hat swing 0.15` · `euclid hat off` · `euclid hat freeze`
20
- - `grid snare ....X.......x...` explicit steps, X accents
21
- - `clear hat` remove one voice
15
+ - `pattern house` a groove · `kit syn909` a kit
16
+ - `hit kick at 0` · `pattern kick 0 1 2 3` · `pattern hat every 0.5`
17
+ - `euclid hat 7 16 rotate 2` · `euclid hat swing 0.15`
18
+ - `grid snare ....X.......x...` steps, X accents · `clear hat`
19
+
20
+ ## Menu
21
+
22
+ - Ctrl-K › Rhythm › euclid editor · grooves · kits · grid
23
+
24
+ ## Keys
25
+
26
+ - In the euclid editor ↑↓ drum · ←→ adjust · Tab field · Space loop
22
27
 
23
- ## Editor
28
+ ## Next
24
29
 
25
- - `/euclid` (Ctrl-K › Rhythm): ↑↓ voice, ←→ adjust, Tab field,
26
- Space loop, `x` off, Esc back
30
+ - `guide tempo` · `guide mix`
@@ -8,14 +8,24 @@ order: 2
8
8
  Open `dawg` in more than one terminal on the same folder: each window
9
9
  focuses a different track and every edit syncs to all of them.
10
10
 
11
+ ## Ask
12
+
13
+ - "name this session night drive"
14
+
11
15
  ## Type it yourself
12
16
 
13
- - `/sessions` list · `/resume` picker · `/resume 2` or a name
14
- - `/rename night drive` · `/rename --auto` back to auto-naming
15
- - `/fork` copy the session to try an idea · `/status`
16
- - `/track bass` focus another track in this window
17
+ - `sessions` · `/resume` picker · `/resume 2` or a name
18
+ - `/rename night drive` · `/rename --auto` · `/fork` · `status`
19
+ - `dawg --new` · `dawg --session <name>` · `dawg --track bass`
20
+
21
+ ## Menu
22
+
23
+ - Ctrl-K › Project › session › rename · fork · resume
24
+
25
+ ## Keys
26
+
27
+ - In the picker ↑↓ move · Enter resumes · `/` filter · Esc back
17
28
 
18
- ## Shell
29
+ ## Next
19
30
 
20
- - `dawg --new` new session · `dawg --session <name>` open one
21
- - `dawg --track bass` start focused on a track · `dawg sessions`
31
+ - `guide files` · `guide agent`
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: show-me
3
+ title: Learn by watching the agent
4
+ parent: agent
5
+ order: 1
6
+ ---
7
+
8
+ The agent types dawg commands into your prompt bar as it writes them;
9
+ each runs as its line ends. Captions name the key or fader.
10
+
11
+ ## Ask
12
+
13
+ - "make the reverb wetter and play a C minor arpeggio"
14
+ - At the end: `do it yourself: type …` and the Ctrl-K path
15
+
16
+ ## Type it yourself
17
+
18
+ - `showme on` (default) · `showme quiet` no captions or sounds
19
+ - `showme off` the agent edits without typing commands
20
+
21
+ ## Menu
22
+
23
+ - Ctrl-K › Project › agent › show-me
24
+
25
+ ## Keys
26
+
27
+ - Ctrl-O lists the lines as `agent › …` · Esc stops the agent
28
+
29
+ ## Next
30
+
31
+ - `guide agent` · `guide audition`
package/guides/sound.md CHANGED
@@ -1,15 +1,31 @@
1
1
  ---
2
2
  id: sound
3
- title: Shaping sound
3
+ title: Sound
4
4
  order: 3
5
5
  ---
6
6
 
7
- Every track has an instrument, a fixed effects chain, automation lanes
8
- and a place in the mix. Try changes on a loop before you keep them.
7
+ Every track plays one instrument. Sound shapes the focused track: its
8
+ instrument, preset, parameters and how notes are played.
9
9
 
10
- - Sounds and presets
11
- - Effects
12
- - Automation
13
- - Mix
14
- - Menu and audition loop
15
- - Samples and media tools
10
+ ## Ask
11
+
12
+ - "make the lead a bright pluck" · "a felt piano, softer"
13
+
14
+ ## Type it yourself
15
+
16
+ - `instrument piano` · `synth preset pluck` · `synth lpf 800`
17
+ - `piano felt` · `bowed cello` · `wind flute` · `grain cloud`
18
+ - `try synth lpf 400` hear it on a loop first
19
+
20
+ ## Menu
21
+
22
+ - Ctrl-K › Sound › instrument · preset · synth filter · instruments
23
+
24
+ ## Keys
25
+
26
+ - In a value row ←→ adjust · Enter opens its fader · `x` reset
27
+
28
+ ## Next
29
+
30
+ - `guide sounds` · `guide performance` · `guide resample`
31
+ - `guide media`
package/guides/sounds.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  id: sounds
3
- title: Sounds and presets
3
+ title: Instruments and presets
4
4
  parent: sound
5
5
  order: 1
6
6
  ---
@@ -13,17 +13,20 @@ order: 1
13
13
  ## Type it yourself
14
14
 
15
15
  - `instrument sawtooth` · sine square triangle supersaw pulse
16
- - `synth preset pluck` · pad lead bass acid keys bell organ strings
17
- - `synth lpf 800 lpenv 3` any parameter · `synth adsr 0.01 0.2 0.5 0.3`
18
- - `synth lpf off` · `synth reset` · `synth` lists what is set
19
- - `piano felt` · grand ballad upright lofi · `keys hardness 0.3` · `keys`
20
- - `wt list` tables · `wt pwm` load one · `wt 0.5` position
21
- - `string sitar` · nylon koto harp … · `string buzz 0.8` · `string presets`
22
- - `/pack list` · `/pack use <pack>/<sound> as kick` · `/pack info vcsl`
23
- - `/sample samples/kick.wav as kick` add a sampler voice
24
- - `/bpm 174` the sample's tempo (a bare `bpm 174` is the song's) · `fitmode beats` (drums) or `tones` (pads) · `len 8`
16
+ - `synth preset pad` · `synth lpf 800 lpenv 3` · `synth reset`
17
+ - `piano felt` · `epiano suitcase` · `wurli` · `keys hardness 0.3`
18
+ - `tonewheel gospel` · `combo vox` · `pipe flutes` · `rotary fast`
19
+ - `wt list` · `string sitar` · `bowed violin` · `pack list`
25
20
 
26
21
  ## Menu
27
22
 
28
- - Ctrl-K › Sound: instrument, preset, envelope, filter, browse sounds
29
- - Ctrl-K › Sound › browse sounds › Strings: the plucked string presets
23
+ - Ctrl-K › Sound › instruments › Strings › Bowed
24
+ - Ctrl-K › Sound › instruments › Wavetable · sample packs
25
+
26
+ ## Keys
27
+
28
+ - Enter on a preset auditions it · Esc reverts
29
+
30
+ ## Next
31
+
32
+ - `guide sound` · `guide effects`
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: styles
3
+ title: Styles
4
+ parent: arrange
5
+ order: 4
6
+ ---
7
+
8
+ A style is a song recipe: meter, groove, scale, harmony and form. The
9
+ same style, bars and seed always make the same song.
10
+
11
+ ## Ask
12
+
13
+ - "make 16 bars of deep house" · "bebop, blended with bossa nova"
14
+
15
+ ## Type it yourself
16
+
17
+ - `style deep-house 16` · `style bebop 8 3` (bars, then seed)
18
+ - `style again` next seed · `style blend bebop bossa-nova 0.3`
19
+ - `style search maqam` · `style list jazz` · `style info bebop`
20
+
21
+ ## Menu
22
+
23
+ - Ctrl-K › Arrange › style: find, blend, families
24
+
25
+ ## Keys
26
+
27
+ - `/` filters the style tree · Enter makes it · Ctrl-Z undoes
28
+
29
+ ## Next
30
+
31
+ - `guide arrange` · `guide chords`
package/guides/tempo.md CHANGED
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  id: tempo
3
3
  title: Tempo and meter
4
- parent: music
5
- order: 6
4
+ parent: arrange
5
+ order: 3
6
6
  ---
7
7
 
8
8
  One tempo map drives playback, the click, recording and MIDI export.
@@ -10,18 +10,23 @@ Positions are beats from 0 or `bar <n>`.
10
10
 
11
11
  ## Ask
12
12
 
13
- - "slow down to 80 over the last four bars"
14
- - "switch to 7/8 at bar 5" · "hold the final chord"
13
+ - "slow down to 80 over the last four bars" · "switch to 7/8 at bar 5"
15
14
 
16
15
  ## Type it yourself
17
16
 
18
- - `tempo 90 at bar 9` step · add `ramp` or `exp` to glide into it
17
+ - `tempo 90 at bar 9` · add `ramp` or `exp` to glide into it
19
18
  - `rit 4 bars to 80` · `accel 8 bars to 174 at bar 9`
20
- - `fermata at 31 2` hold beat 31 for 2 extra beats
21
- - `meter 7/8 at bar 5` · `tempo map` show it · `tempo clear`
22
- - `track rate 3/2` · `track cycle 3` · `track phasing 3` · `track time off`
23
- - `/bpm 174` on a sampler voice follows the map · `fitmode beats|tones` keeps pitch
19
+ - `fermata at 31 2` · `meter 7/8 at bar 5` · `tempo map`
20
+ - `track rate 3/2` · `track phasing 3` · `/bpm 174` a sample's tempo
24
21
 
25
22
  ## Menu
26
23
 
27
- - Ctrl-K › Project › Tempo & meter (`/menu tempo`)
24
+ - Ctrl-K › Project › tempo · tempo and meter
25
+
26
+ ## Keys
27
+
28
+ - Click ▶ BPM in the header to play
29
+
30
+ ## Next
31
+
32
+ - `guide styles` · `guide rhythm`
package/guides/tracks.md CHANGED
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  id: tracks
3
3
  title: Tracks and instruments
4
- parent: music
5
- order: 1
4
+ parent: arrange
5
+ order: 2
6
6
  ---
7
7
 
8
8
  ## Ask
@@ -12,14 +12,19 @@ order: 1
12
12
 
13
13
  ## Type it yourself
14
14
 
15
- - `/track drums` focus a track, creating it (drums get the kit)
16
- - `/tracks` list every track
17
- - `track name lead` rename the focused track
18
- - `instrument piano` · `instrument supersaw` · `instrument kit`
19
- - `meter 3` beats per bar · `key A minor` · `key none`
20
- - `clear` remove the focused track's notes
15
+ - `track drums` focus a track, creating it (drums get the kit)
16
+ - `tracks` list them · `track name lead` rename the focused track
17
+ - `track rm pad` remove one · `track move pad 1` reorder
18
+ - `instrument piano` · `instrument kit` · `clear` its notes
21
19
 
22
20
  ## Menu
23
21
 
24
- - Ctrl-K › Sound › instrument
25
- - Ctrl-K › Mix › all tracks (choosing one focuses it)
22
+ - Ctrl-K › Arrange › tracks · Ctrl-K › Mix › all tracks
23
+
24
+ ## Keys
25
+
26
+ - Click the track name in the header to list tracks
27
+
28
+ ## Next
29
+
30
+ - `guide sound` · `guide sessions`
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: tuning
3
+ title: Tuning
4
+ parent: chords
5
+ order: 1
6
+ ---
7
+
8
+ Tuning sets how pitches are tuned: equal steps, ratios, cents or a Scala
9
+ file. The key still names the tonic and scale.
10
+
11
+ ## Ask
12
+
13
+ - "tune the song to 19-EDO" · "use a just intonation in D"
14
+
15
+ ## Type it yourself
16
+
17
+ - `tuning 19-edo` · `tuning pelog` · `tuning edo 31` · `tuning list`
18
+ - `tuning ratios 1/1 9/8 5/4 4/3 3/2` · `tuning ref 432`
19
+ - `tuning scl <file>` · `tuning root D` · `tuning off`
20
+ - `cents <id> -14` nudges one note
21
+
22
+ ## Menu
23
+
24
+ - Ctrl-K › Chords and key › tuning · Ctrl-K › Sound › track tuning
25
+
26
+ ## Keys
27
+
28
+ - In play mode, `play degrees` puts scale steps on the keys
29
+
30
+ ## Next
31
+
32
+ - `guide chords` · `help chords`
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: voice
3
+ title: Voice
4
+ order: 4
5
+ ---
6
+
7
+ Voice is sung or spoken audio: a built-in singer, imported clips and
8
+ the tools that tune them.
9
+
10
+ ## Ask
11
+
12
+ - "sing the melody as a soft choir on ooh"
13
+ - "autotune the vocal, gentle"
14
+
15
+ ## Type it yourself
16
+
17
+ - `sing choir` · `sing vowels a e i o` · `lyrics sun-lit morn-ing`
18
+ - `vocal import take.wav` · `clip fade in .01` · `vocal pitch`
19
+ - `autotune gentle` · `formant -4` · `vowel a o 0.5` · `vocoder talkbox`
20
+
21
+ ## Menu
22
+
23
+ - Ctrl-K › Voice › sing · lyrics · clips · pitch · autotune · vocoder
24
+
25
+ ## Keys
26
+
27
+ - In a value row ←→ adjust · Enter opens its fader · Esc back
28
+
29
+ ## Next
30
+
31
+ - `help voice` every voice command · `guide media` stems
@@ -1,21 +1,31 @@
1
1
  ---
2
2
  id: web-search
3
3
  title: Web search
4
- parent: project
5
- order: 4
4
+ parent: agent
5
+ order: 3
6
6
  ---
7
7
 
8
8
  The agent can search the web and read public pages, for example to look
9
- up a song's tempo or a chord chart. Fetches never reach private hosts.
9
+ up a song's tempo. Fetches never reach private hosts.
10
10
 
11
11
  ## Ask
12
12
 
13
- - "look up the tempo and key of Teardrop by Massive Attack"
13
+ - "look up the tempo and key of a song you name"
14
14
  - "read this page and copy its chord chart: <url>"
15
15
 
16
- ## Where results come from (first match wins)
16
+ ## Type it yourself
17
17
 
18
18
  - `DAWG_WEB_SEARCH=duckduckgo|openrouter|gateway|brave` pins one
19
- - `BRAVE_SEARCH_API_KEY` set: Brave Search
20
- - an AI Gateway key (Exa by default), then an OpenRouter key
21
- - otherwise DuckDuckGo, with no key
19
+ - otherwise Brave with a key, AI Gateway, OpenRouter, then DuckDuckGo
20
+
21
+ ## Menu
22
+
23
+ - Ctrl-K › Project › agent › model
24
+
25
+ ## Keys
26
+
27
+ - Ctrl-O shows each search and fetch in the transcript
28
+
29
+ ## Next
30
+
31
+ - `guide agent` · `guide providers`
@@ -0,0 +1,21 @@
1
+ {
2
+ "abi": 1,
3
+ "libraries": {
4
+ "darwin-arm64": {
5
+ "file": "darwin-arm64/libdawg_sink.dylib",
6
+ "sha256": "0bc32f2049a8e3f229dd249527063c853b937dda16fed4f3cec4c43ff20c8a00"
7
+ },
8
+ "darwin-x64": {
9
+ "file": "darwin-x64/libdawg_sink.dylib",
10
+ "sha256": "b9ed2993f0eb1a21c13432c497e71a6a01ca2de3c0e5d2bf7d9551fcac8c6501"
11
+ },
12
+ "linux-x64": {
13
+ "file": "linux-x64/libdawg_sink.so",
14
+ "sha256": "fddfa31ff82e99e5e967b82c21a8650cc584e9519149ce2b0bc0af02b76528c4"
15
+ },
16
+ "linux-arm64": {
17
+ "file": "linux-arm64/libdawg_sink.so",
18
+ "sha256": "72cbe8b86ac9bc1d0bc387dc337c31034e29df00c66277c584ecf8586d036e39"
19
+ }
20
+ }
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hraness/dawg",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,13 +23,16 @@
23
23
  "guides/*.md",
24
24
  "guides/index.ts",
25
25
  "CHANGELOG.md",
26
- "DAWG.md"
26
+ "DAWG.md",
27
+ "native/prebuilt/manifest.json",
28
+ "native/prebuilt/*/libdawg_sink.*"
27
29
  ],
28
30
  "bin": {
29
31
  "dawg": "./src/main.ts"
30
32
  },
31
33
  "scripts": {
32
34
  "dawg": "bun run src/main.ts",
35
+ "bench:perf": "bun bench/perf/run.ts",
33
36
  "test": "bun test",
34
37
  "typecheck": "tsc --noEmit",
35
38
  "check": "bun test && bun run typecheck && bun run format",