tutticode 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/README.zh-CN.md +10 -0
- package/dist/skills/tutticode/SKILL.md +11 -10
- package/dist/skills/tutticode/references/agent-loop.md +15 -0
- package/dist/skills/tutticode/references/automation.md +168 -0
- package/dist/skills/tutticode/references/devices/compressor.md +2 -0
- package/dist/skills/tutticode/references/devices/filter.md +2 -0
- package/dist/skills/tutticode/references/devices/gate.md +2 -0
- package/dist/skills/tutticode/references/devices/glue.md +2 -0
- package/dist/skills/tutticode/references/devices/multibanddynamics.md +2 -0
- package/dist/skills/tutticode/references/devices.md +2 -2
- package/dist/skills/tutticode/references/effect-controls.md +8 -0
- package/dist/skills/tutticode/references/first-sounds.md +2 -0
- package/dist/skills/tutticode/references/for-agents.md +26 -0
- package/dist/skills/tutticode/references/functions.md +67 -5
- package/dist/skills/tutticode/references/harmony-and-scales.md +3 -0
- package/dist/skills/tutticode/references/language-reference.md +362 -0
- package/dist/skills/tutticode/references/melodies-with-do-re-mi.md +41 -5
- package/dist/skills/tutticode/references/mixing-groups.md +7 -4
- package/dist/skills/tutticode/references/mixing.md +48 -6
- package/dist/skills/tutticode/references/muse.md +7 -0
- package/dist/skills/tutticode/references/sounds.md +26 -0
- package/dist/skills/tutticode/references/tuttidaw-extensions.md +13 -6
- package/dist/skills/tutticode-sound-for-media/SKILL.md +11 -1
- package/dist/skills/tutticode-sound-for-media/references/music-recipes.md +30 -6
- package/dist/tutticode.cjs +2 -2
- package/package.json +1 -1
|
@@ -46,14 +46,16 @@ Trailers, reveals, suspense, game menus: a low drone, slow minor strings and a t
|
|
|
46
46
|
|
|
47
47
|
```js
|
|
48
48
|
setcpm(15) // 60 BPM
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
bus("verb").fx("Reverb", {dryWetBalance: 1, decayTime: "4s"}) // one room for every voice
|
|
50
|
+
master.fx("Limiter", {gainDb: 3, ceiling: -3})
|
|
51
|
+
drone: note("c2").s("sawtooth").lpf(300).attack(1).release(1).mix({vol: -6}).send("verb", -18)
|
|
52
|
+
strings: chord("<Cm Ab>").voicing().s("supersaw").attack(2).release(2).lpf(1200).mix({vol: -10}).send("verb", -4)
|
|
53
|
+
pulse: note("c6*8").s("sine").decay(0.1).sustain(0).mix({vol: -8}).send("verb", -14)
|
|
52
54
|
```
|
|
53
55
|
|
|
54
56
|
Render: `tutticode render cinematic-tension.tc -o cinematic-tension.wav --loops 3 --tail 3 --fade-out 4 --lufs -18`, or `code_render` with `{"loops":3,"tail":3,"fadeOut":4,"lufs":-18}`.
|
|
55
57
|
|
|
56
|
-
Vary: Rising tension: double the pulse (c6*16) for the last loop, or render the riser over the end.
|
|
58
|
+
Vary: Rising tension: double the pulse (c6*16) for the last loop, or render the riser over the end. Bigger space: raise the sends, not the voices.
|
|
57
59
|
|
|
58
60
|
## Ambient bed (`ambient-bed`)
|
|
59
61
|
|
|
@@ -61,8 +63,11 @@ Meditation, wellness, slow product shots: a wide pad and sparse echoing bells at
|
|
|
61
63
|
|
|
62
64
|
```js
|
|
63
65
|
setcpm(12) // 48 BPM
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
bus("verb").fx("Reverb", {dryWetBalance: 1, decayTime: "6s"})
|
|
67
|
+
bus("echo").fx("Delay", {feedback: 0.4}).mix({vol: -6})
|
|
68
|
+
master.fx("Limiter", {gainDb: 3, ceiling: -3})
|
|
69
|
+
pad: chord("<Dm F>").voicing().s("supersaw").attack(2).release(3).lpf(1000).mix({vol: -10}).send("verb", -3)
|
|
70
|
+
bells: n("0 2 4 7 4 2").scale("D5:minor").s("sine").decay(0.8).sustain(0).mix({vol: -8}).send("echo", -6).send("verb", -12)
|
|
66
71
|
```
|
|
67
72
|
|
|
68
73
|
Render: `tutticode render ambient-bed.tc -o ambient-bed.wav --loops 3 --tail 4 --fade-in 3 --fade-out 5 --lufs -20`, or `code_render` with `{"loops":3,"tail":4,"fadeIn":3,"fadeOut":5,"lufs":-20}`.
|
|
@@ -84,3 +89,22 @@ master.fx("Limiter", {gainDb: 3, ceiling: -3})
|
|
|
84
89
|
Render: `tutticode render chiptune-loop.tc -o chiptune-loop.wav --loops 2 --tail 0 --lufs -19`, or `code_render` with `{"loops":2,"tail":0,"lufs":-19}`.
|
|
85
90
|
|
|
86
91
|
Vary: A game loop file has no fades and `tail: 0`: exactly N loops, so it repeats in time. A boss level: setcpm(45) and a minor scale.
|
|
92
|
+
|
|
93
|
+
## Kick-ducked bed (`kick-ducked-bed`)
|
|
94
|
+
|
|
95
|
+
Fitness, sport, fashion and dance promos: a 120 BPM house pulse whose pad and bass duck under every kick (sidechain), so the kick punches through.
|
|
96
|
+
|
|
97
|
+
```js
|
|
98
|
+
setcpm(30) // 120 BPM
|
|
99
|
+
kick: s("bd*4").bank("tr909").gain(0.8)
|
|
100
|
+
hats: s("~ hh ~ hh, hh*8").bank("tr909").gain(0.3)
|
|
101
|
+
pad: chord("<Am F C G>").voicing().s("supersaw").release(0.3).lpf(2500).gain(0.3)
|
|
102
|
+
.fx("Compressor", {threshold: -30, ratio: 8, attack: 1, release: 120, sidechain: "kick", sidechainFilter: "150Hz"})
|
|
103
|
+
bass: note("<a1 f1 c2 g1>").ply(8).s("sawtooth").lpf(500).gain(0.5)
|
|
104
|
+
.fx("Compressor", {threshold: -30, ratio: 6, attack: 1, release: 100, sidechain: "kick"})
|
|
105
|
+
master.fx("Limiter", {gainDb: 3, ceiling: -3})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Render: `tutticode render kick-ducked-bed.tc -o kick-ducked-bed.wav --loops 4 --fade-out 2 --lufs -16`, or `code_render` with `{"loops":4,"fadeOut":2,"lufs":-16}`.
|
|
109
|
+
|
|
110
|
+
Vary: More or less pump: release (shorter = tighter) and ratio. Duck the whole bed at once: put pad and bass in group("bed") and key one Compressor on the group. Under speech: drop the hats and render at -20 LUFS.
|
package/dist/tutticode.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/* tutticode v0.
|
|
2
|
+
/* tutticode v0.3.0 | https://tuttidaw.com */
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -4903,7 +4903,7 @@ var import_node_path2 = require("node:path");
|
|
|
4903
4903
|
var import_node_fs = require("node:fs");
|
|
4904
4904
|
var import_node_os = require("node:os");
|
|
4905
4905
|
var import_node_path = require("node:path");
|
|
4906
|
-
var VERSION2 = true ? "0.
|
|
4906
|
+
var VERSION2 = true ? "0.3.0" : readPackageVersion();
|
|
4907
4907
|
function envBrowserArgs() {
|
|
4908
4908
|
const args = process.env.TUTTICODE_BROWSER_ARGS?.split(" ").filter(Boolean);
|
|
4909
4909
|
return args?.length ? args : void 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tutticode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Turn TuttiCode (tuttidaw.com/code pattern code) into audio files from any agent: a CLI and an MCP server that render in your own browser with the TuttiDAW engine.",
|
|
6
6
|
"license": "MIT",
|