@coldsurf/synth-kit 0.1.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.
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Channel strip — *공간/믹스* 어휘의 공유 도구. sunwall·drumkit·dub·bass 가 한 트랙에서
3
+ * 동시에 울릴 때 저-중역이 겹쳐 뭉개지는 문제를, 악기 *밖* 의 per-instrument 채널 스트립으로
4
+ * 푼다(패닝 + carve EQ). VST 모델: `createStrip` 은 *믹서 한 채널*, `StripPreset` 은 *그 설정*.
5
+ *
6
+ * 엔진은 무변경. 모든 엔진이 출력을 *주입받은 `AudioNode` bus* 로만 쓰므로(`createWall(ctx, bus,…)`
7
+ * 등), 스트립은 그 `bus` 자리에 끼워넣는 한 노드 묶음일 뿐이다 — 엔진 시그니처·내부 그래프 불변.
8
+ *
9
+ * input(trim gain) → [HP] → [LP] → [bell peaking] → StereoPanner → dest
10
+ *
11
+ * **옵트인 불변식**: preset 의 carve 필드(`hpHz`·`lpHz`·`bell`)는 *있을 때만* 노드를 만든다
12
+ * (sunwall 의 `bend` 미지정 = 미생성 패턴). 빈 preset(`{}`)이면 trim gain(=1) + StereoPanner(pan 0)
13
+ * 뿐 → 센터 모노로 투명. 즉 트랙이 *명시적으로* preset 을 줄 때만 소리가 변한다.
14
+ *
15
+ * offline wav 렌더(실 Chromium `OfflineAudioContext` 바운스) 호환: `StereoPannerNode`·
16
+ * `BiquadFilterNode` 는 표준 노드라 별도 facade 불필요(하니스 `scripts/sound-render-harness.ts`).
17
+ */
18
+ interface StripPreset {
19
+ /** StereoPanner pan. -1(L)~+1(R). 기본 0(센터·모노 유지). */
20
+ pan?: number;
21
+ /** carve HP cutoff(Hz). 베이스/킥 자리 비우기. 기본 미생성(bypass). */
22
+ hpHz?: number;
23
+ /** HP Q. 기본 BiquadFilter 기본값(0.7071). */
24
+ hpQ?: number;
25
+ /** carve LP cutoff(Hz). 위 악기에 고역 양보. 기본 미생성(bypass). */
26
+ lpHz?: number;
27
+ /** LP Q. 기본 BiquadFilter 기본값. */
28
+ lpQ?: number;
29
+ /** 보충 notch/peak — 특정 충돌 대역만 ±dB(예: 벽 250Hz -3dB). 기본 미생성(bypass). */
30
+ bell?: {
31
+ hz: number;
32
+ q: number;
33
+ gainDb: number;
34
+ };
35
+ /** 스트립 트림 gain. 기본 1. */
36
+ gain?: number;
37
+ }
38
+ interface StripHandle {
39
+ /** 엔진이 출력을 꽂는 입력 노드(= 체인 맨 앞 trim gain). */
40
+ readonly input: AudioNode;
41
+ /** pan 을 value 로 ramp(섹션 자동화용·옵션). rampSec<=0 이면 즉시. */
42
+ setPan(value: number, rampSec: number): void;
43
+ /** stop 없음 — 패시브 체인. 전체 노드 disconnect. */
44
+ dispose(): void;
45
+ }
46
+ /**
47
+ * 채널 스트립을 만들어 `dest` 앞에 끼운다. 엔진은 돌려받은 `input` 으로 출력을 꽂는다.
48
+ *
49
+ * carve 필드(`hpHz`·`lpHz`·`bell`)는 *있을 때만* 노드를 만든다 — 빈 preset 은 trim gain +
50
+ * pan 0 panner 뿐(투명).
51
+ *
52
+ * @param dest 스트립 출력이 연결될 목적지(트랙의 ductable·master 등).
53
+ */
54
+ declare function createStrip(ctx: AudioContext, dest: AudioNode, preset: StripPreset): StripHandle;
55
+
56
+ export { type StripHandle, type StripPreset, createStrip };
@@ -0,0 +1,7 @@
1
+ import {
2
+ createStrip
3
+ } from "../chunk-CMHDHRZ6.js";
4
+ export {
5
+ createStrip
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@coldsurf/synth-kit",
3
+ "version": "0.1.0",
4
+ "description": "Color-blind Web Audio synthesis engines (wall, drumkit, bass, dub chamber, mixer strip) behind a VST-style engine/preset model. Browser-first; see README for offline-rendering caveats.",
5
+ "license": "MIT",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "author": {
10
+ "name": "Dong-Ho Choi",
11
+ "email": "imcoldsurf@gmail.com",
12
+ "url": "https://coldsurf.io"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/coldsurfers/browser-synth-kit.git",
17
+ "directory": "packages/synth-kit"
18
+ },
19
+ "keywords": [
20
+ "web-audio",
21
+ "synth",
22
+ "synthesizer",
23
+ "audio",
24
+ "music",
25
+ "generative-music"
26
+ ],
27
+ "type": "module",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ },
33
+ "./drumkit": {
34
+ "types": "./dist/drumkit/index.d.ts",
35
+ "import": "./dist/drumkit/index.js"
36
+ },
37
+ "./bass": {
38
+ "types": "./dist/bass/index.d.ts",
39
+ "import": "./dist/bass/index.js"
40
+ },
41
+ "./dub": {
42
+ "types": "./dist/dub/index.d.ts",
43
+ "import": "./dist/dub/index.js"
44
+ },
45
+ "./space": {
46
+ "types": "./dist/space/index.d.ts",
47
+ "import": "./dist/space/index.js"
48
+ }
49
+ },
50
+ "main": "./dist/index.js",
51
+ "types": "./dist/index.d.ts",
52
+ "files": [
53
+ "dist"
54
+ ],
55
+ "scripts": {
56
+ "build": "tsup",
57
+ "check:type": "tsc --noEmit",
58
+ "prepublishOnly": "pnpm build"
59
+ },
60
+ "devDependencies": {
61
+ "tsup": "^8.3.5",
62
+ "typescript": "~5.9.3"
63
+ }
64
+ }