@modplayjs/fmt-669 0.0.0-stage → 0.2.2
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 +24 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/sixtysixtynine.d.ts +6 -0
- package/dist/sixtysixtynine.d.ts.map +1 -0
- package/dist/sixtysixtynine.js +288 -0
- package/dist/sixtysixtynine.js.map +1 -0
- package/package.json +48 -4
package/README.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @modplayjs/fmt-669
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Composer 669 / UNIS 669 format plugin** for `@modplayjs/core` —
|
|
4
|
+
load-and-play support for the 669 module family (8 channels, linear
|
|
5
|
+
sample tracking, 669/UNIS effect sets), ported 1:1 from libxmp's
|
|
6
|
+
`669_load.c`.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @modplayjs/fmt-669
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { CorePlayer } from '@modplayjs/core';
|
|
18
|
+
import { plugin as s69Plugin } from '@modplayjs/fmt-669';
|
|
19
|
+
|
|
20
|
+
const core = new CorePlayer();
|
|
21
|
+
core.registries.registerFormat(s69Plugin);
|
|
22
|
+
core.loadModule(bytes); // .669 file
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Part of the [modplayjs monorepo](../../README.md). BSD-3-Clause.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Project-original code.
|
|
4
|
+
// @modplayjs/fmt-669 — Composer 669 / UNIS 669 loader + event reader.
|
|
5
|
+
export { c669Test, c669Load, plugin } from './sixtysixtynine.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,sDAAsD;AACtD,yBAAyB;AACzB,sEAAsE;AAEtE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FormatPlugin, LoadCtx, ModuleData } from '@modplayjs/core';
|
|
2
|
+
export declare function c669Test(bytes: Uint8Array): boolean;
|
|
3
|
+
export declare function c669Load(bytes: Uint8Array, ctx: LoadCtx): ModuleData;
|
|
4
|
+
/** 669 format plugin (libxmp loaders/669_load.c + read_event MOD). */
|
|
5
|
+
export declare const plugin: FormatPlugin;
|
|
6
|
+
//# sourceMappingURL=sixtysixtynine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sixtysixtynine.d.ts","sourceRoot":"","sources":["../src/sixtysixtynine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAQ,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+D/E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAoBnD;AAmBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,CAqMpE;AAMD,sEAAsE;AACtE,eAAO,MAAM,MAAM,EAAE,YAUpB,CAAC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/669_load.c (c669_test :32-58,
|
|
4
|
+
// c669_load :89-258) with the fx table (:66-73).
|
|
5
|
+
import { SampleFlags } from '@modplayjs/core';
|
|
6
|
+
import { LSN, MSN } from '@modplayjs/core';
|
|
7
|
+
import { ParseError } from '@modplayjs/core';
|
|
8
|
+
import { FX_BREAK, FX_PER_CANCEL, FX_SPEED_CP, FX_669_FINETUNE, FX_669_PORTA_DN, FX_669_PORTA_UP, FX_669_TPORTA, FX_669_VIBRATO, } from '@modplayjs/core';
|
|
9
|
+
import { PeriodType, Quirk } from '@modplayjs/core';
|
|
10
|
+
import { readEventMod } from '@modplayjs/fmt-mod';
|
|
11
|
+
/** MAX_SAMPLE_SIZE (common.h:460). */
|
|
12
|
+
const MAX_SAMPLE_SIZE = 0x10000000;
|
|
13
|
+
/** SAMPLE_FLAG_UNS parity (loader.h; DecodeFlag.UNSIGNED). */
|
|
14
|
+
const SAMPLE_FLAG_UNS = 1 << 10;
|
|
15
|
+
/** Zeroed envelope (libxmp_init_instrument calloc semantics). */
|
|
16
|
+
function zeroEnvelope() {
|
|
17
|
+
return { flags: 0, npt: 0, scl: 0, sus: 0, sue: 0, lps: 0, lpe: 0, x: [], y: [] };
|
|
18
|
+
}
|
|
19
|
+
function zeroInstrument(name, sub) {
|
|
20
|
+
return {
|
|
21
|
+
name,
|
|
22
|
+
volume: 0x40,
|
|
23
|
+
nsm: 0,
|
|
24
|
+
rls: 0,
|
|
25
|
+
map: new Array(121).fill(0),
|
|
26
|
+
mapXpo: new Array(121).fill(0),
|
|
27
|
+
sub,
|
|
28
|
+
aei: zeroEnvelope(),
|
|
29
|
+
fei: zeroEnvelope(),
|
|
30
|
+
pei: zeroEnvelope(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function readmem32l(m, off) {
|
|
34
|
+
return (m[off] | (m[off + 1] << 8) | (m[off + 2] << 16) | (m[off + 3] << 24)) >>> 0;
|
|
35
|
+
}
|
|
36
|
+
/** libxmp_copy_adjust (common.c:237-253): printable ASCII, trim. */
|
|
37
|
+
function copyAdjust(r, n) {
|
|
38
|
+
let s = '';
|
|
39
|
+
for (let i = 0; i < n && i < r.length; i++) {
|
|
40
|
+
const c = r[i];
|
|
41
|
+
if (c === 0)
|
|
42
|
+
break; // strncpy stops at NUL (common.c:244)
|
|
43
|
+
s += c > 127 || c < 0x20 || c === 0x7f ? '.' : String.fromCharCode(c);
|
|
44
|
+
}
|
|
45
|
+
return s.replace(/ +$/, '');
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// c669_test (669_load.c:32-58)
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
export function c669Test(bytes) {
|
|
51
|
+
if (bytes.length < 241)
|
|
52
|
+
return false;
|
|
53
|
+
// Marker: u16be 0x6966 ('if') or 0x4a4e ('JN').
|
|
54
|
+
const id = (bytes[0] << 8) | bytes[1];
|
|
55
|
+
if (id !== 0x6966 && id !== 0x4a4e)
|
|
56
|
+
return false;
|
|
57
|
+
// c669_load.c:43-46 — nos <= 64, nop <= 128.
|
|
58
|
+
if (bytes[110] > 64)
|
|
59
|
+
return false;
|
|
60
|
+
if (bytes[111] > 128)
|
|
61
|
+
return false;
|
|
62
|
+
// Order table starts with 0xff terminator check (669_load.c:49-51):
|
|
63
|
+
// byte at 240 must be 0xff... in practice C checks order[0]? It reads
|
|
64
|
+
// offset 240 = first order slot region after 128 orders at 112..239?
|
|
65
|
+
// Layout: 2 marker + 108 message + 1 nos + 1 nop + 1 loop = 113; orders
|
|
66
|
+
// at 113..240, speed at 241..368, pbrk at 369..496. C checks byte 240 =
|
|
67
|
+
// the LAST order slot must be 0xff.
|
|
68
|
+
if (bytes[240] !== 0xff)
|
|
69
|
+
return false;
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// fx table (669_load.c:66-73)
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
const fxTable = [
|
|
76
|
+
FX_669_PORTA_UP,
|
|
77
|
+
FX_669_PORTA_DN,
|
|
78
|
+
FX_669_TPORTA,
|
|
79
|
+
FX_669_FINETUNE,
|
|
80
|
+
FX_669_VIBRATO,
|
|
81
|
+
FX_SPEED_CP,
|
|
82
|
+
];
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// c669_load (669_load.c:89-258)
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
export function c669Load(bytes, ctx) {
|
|
87
|
+
let pos = 0;
|
|
88
|
+
const u8 = () => bytes[pos++];
|
|
89
|
+
const u32 = () => { const v = readmem32l(bytes, pos); pos += 4; return v; };
|
|
90
|
+
const raw = (n) => { const s = bytes.subarray(pos, pos + n); pos += n; return s; };
|
|
91
|
+
const marker = raw(2);
|
|
92
|
+
const message = raw(108);
|
|
93
|
+
const nos = u8(); // number of samples (0-64)
|
|
94
|
+
const nop = u8(); // number of patterns (0-128)
|
|
95
|
+
if (nos > 64 || nop > 128)
|
|
96
|
+
throw new ParseError('669: bad sample/pattern count');
|
|
97
|
+
const loop = u8();
|
|
98
|
+
void loop; // loop order number
|
|
99
|
+
const order = raw(128);
|
|
100
|
+
const speed = raw(128);
|
|
101
|
+
const pbrkTable = raw(128);
|
|
102
|
+
const chn = 8;
|
|
103
|
+
const ins = nos;
|
|
104
|
+
const pat = nop;
|
|
105
|
+
// len = first index where order[i] > nop (669_load.c:118-122)
|
|
106
|
+
let len = 0;
|
|
107
|
+
for (let i = 0; i < 128; i++) {
|
|
108
|
+
if (order[i] > nop)
|
|
109
|
+
break;
|
|
110
|
+
len = i + 1;
|
|
111
|
+
}
|
|
112
|
+
const xxo = [];
|
|
113
|
+
for (let i = 0; i < len; i++)
|
|
114
|
+
xxo.push(order[i]);
|
|
115
|
+
// m->period_type = PERIOD_CSPD; m->c4rate = C4_NTSC_RATE (:127-128)
|
|
116
|
+
const periodType = PeriodType.CSPD;
|
|
117
|
+
const c4rate = 8363;
|
|
118
|
+
const markerStr = String.fromCharCode(marker[0], marker[1]);
|
|
119
|
+
const typeStr = markerStr === 'if' ? 'Composer 669' : 'UNIS 669';
|
|
120
|
+
// Comment = the 108-byte song message (:136-138)
|
|
121
|
+
let comment = '';
|
|
122
|
+
for (let i = 0; i < 108; i++)
|
|
123
|
+
comment += String.fromCharCode(message[i]);
|
|
124
|
+
comment = comment.replace(/\0.*$/, '');
|
|
125
|
+
// Instruments (:142-174)
|
|
126
|
+
const instruments = [];
|
|
127
|
+
const rawSamples = [];
|
|
128
|
+
for (let i = 0; i < ins; i++) {
|
|
129
|
+
const iname = raw(13);
|
|
130
|
+
const ilength = u32();
|
|
131
|
+
if (ilength > MAX_SAMPLE_SIZE)
|
|
132
|
+
throw new ParseError('669: sample too large');
|
|
133
|
+
const iloopStart = u32();
|
|
134
|
+
const iloopend = u32();
|
|
135
|
+
const lpe = iloopend >= 0xfffff ? 0 : iloopend;
|
|
136
|
+
const xflg = lpe !== 0 ? SampleFlags.LOOP : 0;
|
|
137
|
+
const sub = {
|
|
138
|
+
vol: 0x40,
|
|
139
|
+
gvl: 0x40, // no QUIRK_INSVOL: load_epilogue sets gvl = volbase (load_helpers.c:377-383)
|
|
140
|
+
pan: -1, // XMP_INST_NO_DEFAULT_PAN
|
|
141
|
+
xpo: 0,
|
|
142
|
+
fin: 0,
|
|
143
|
+
vwf: 0, vde: 0, vra: 0, vsw: 0,
|
|
144
|
+
sid: i,
|
|
145
|
+
rvv: 0, nna: 0, dct: 0, dca: 0, ifc: 0, ifr: 0,
|
|
146
|
+
};
|
|
147
|
+
const nameStr = copyAdjust(iname, 13);
|
|
148
|
+
const xi = zeroInstrument(nameStr, [sub]);
|
|
149
|
+
if (ilength > 0)
|
|
150
|
+
xi.nsm = 1;
|
|
151
|
+
instruments.push(xi);
|
|
152
|
+
rawSamples.push({
|
|
153
|
+
// The C loader names only the INSTRUMENT — xxs->name stays empty.
|
|
154
|
+
name: '',
|
|
155
|
+
data: new Uint8Array(0),
|
|
156
|
+
length: ilength,
|
|
157
|
+
loopStart: iloopStart,
|
|
158
|
+
loopEnd: lpe,
|
|
159
|
+
sustainStart: 0,
|
|
160
|
+
sustainEnd: 0,
|
|
161
|
+
finetune: 0,
|
|
162
|
+
volume: 0x40,
|
|
163
|
+
flags: xflg,
|
|
164
|
+
c5spd: c4rate,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// Patterns (:179-227)
|
|
168
|
+
const patterns = [];
|
|
169
|
+
for (let i = 0; i < pat; i++) {
|
|
170
|
+
const tracksArr = [];
|
|
171
|
+
for (let k = 0; k < chn; k++) {
|
|
172
|
+
const events = [];
|
|
173
|
+
for (let j = 0; j < 64; j++) {
|
|
174
|
+
events.push({ note: 0, ins: 0, vol: 0, fxt: 0, fxp: 0, f2t: 0, f2p: 0 });
|
|
175
|
+
}
|
|
176
|
+
tracksArr.push({ rows: 64, event: events });
|
|
177
|
+
}
|
|
178
|
+
const pattern = { rows: 64, tracks: tracksArr };
|
|
179
|
+
// Speed CP on pattern 0 row 0 channel 0 (:183-186)
|
|
180
|
+
const ev00 = pattern.tracks[0].event[0];
|
|
181
|
+
ev00.f2t = FX_SPEED_CP;
|
|
182
|
+
ev00.f2p = speed[i];
|
|
183
|
+
// Break row on channel 1 (:188-193)
|
|
184
|
+
const pbrk = pbrkTable[i];
|
|
185
|
+
if (pbrk >= 64)
|
|
186
|
+
throw new ParseError('669: bad break row');
|
|
187
|
+
const evBrk = pattern.tracks[1].event[pbrk];
|
|
188
|
+
evBrk.f2t = FX_BREAK;
|
|
189
|
+
evBrk.f2p = 0;
|
|
190
|
+
for (let j = 0; j < 64 * 8; j++) {
|
|
191
|
+
const e = pattern.tracks[j % 8].event[Math.trunc(j / 8)];
|
|
192
|
+
const ev = raw(3);
|
|
193
|
+
if (ev.length < 3)
|
|
194
|
+
throw new ParseError(`669: read error at pattern ${i}`);
|
|
195
|
+
if ((ev[0] & 0xfe) !== 0xfe) {
|
|
196
|
+
e.note = 1 + 36 + (ev[0] >> 2);
|
|
197
|
+
e.ins = 1 + MSN(ev[1]) + ((ev[0] & 0x03) << 4);
|
|
198
|
+
}
|
|
199
|
+
if (ev[0] !== 0xff) {
|
|
200
|
+
e.vol = (LSN(ev[1]) << 2) + 1;
|
|
201
|
+
}
|
|
202
|
+
if (ev[2] !== 0xff) {
|
|
203
|
+
if (MSN(ev[2]) >= fxTable.length)
|
|
204
|
+
continue;
|
|
205
|
+
e.fxt = fxTable[MSN(ev[2])];
|
|
206
|
+
e.fxp = LSN(ev[2]);
|
|
207
|
+
if (e.fxt === FX_SPEED_CP) {
|
|
208
|
+
e.f2t = FX_PER_CANCEL;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
patterns.push(pattern);
|
|
213
|
+
}
|
|
214
|
+
// Samples (:230-237): skip len <= 2; SAMPLE_FLAG_UNS.
|
|
215
|
+
let samplePos = pos;
|
|
216
|
+
for (let i = 0; i < ins; i++) {
|
|
217
|
+
const rawS = rawSamples[i];
|
|
218
|
+
if (rawS.length <= 2) {
|
|
219
|
+
// C: continue — no load, no seek. Data slot still registered.
|
|
220
|
+
rawS.data = new Uint8Array(0);
|
|
221
|
+
ctx.addSample(rawS);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const take = Math.min(rawS.length, Math.max(0, bytes.length - samplePos));
|
|
225
|
+
rawS.data = bytes.subarray(samplePos, samplePos + take);
|
|
226
|
+
rawS.flags |= SAMPLE_FLAG_UNS;
|
|
227
|
+
samplePos += rawS.length;
|
|
228
|
+
ctx.addSample(rawS);
|
|
229
|
+
}
|
|
230
|
+
// Channel pans (:240-242): DEFPAN((i % 2) * 0xff) = (i%2)*0xff, defpan 0x80.
|
|
231
|
+
const chan = [];
|
|
232
|
+
for (let k = 0; k < chn; k++) {
|
|
233
|
+
const pan = (k % 2) * 0xff;
|
|
234
|
+
chan.push({ pan: Math.min(255, Math.max(0, 0x80 + (pan - 0x80))), vol: 0x40, flg: 0 });
|
|
235
|
+
}
|
|
236
|
+
// m->quirk |= QUIRK_PBALL|QUIRK_PERPAT (:244)
|
|
237
|
+
const quirkFlags = Quirk.PBALL | Quirk.PERPAT;
|
|
238
|
+
const mod = {
|
|
239
|
+
title: copyAdjust(message, 36),
|
|
240
|
+
format: '669',
|
|
241
|
+
comment,
|
|
242
|
+
chn,
|
|
243
|
+
pat,
|
|
244
|
+
ins,
|
|
245
|
+
len,
|
|
246
|
+
restart: 0,
|
|
247
|
+
xxo,
|
|
248
|
+
channels: chan,
|
|
249
|
+
patterns,
|
|
250
|
+
instruments,
|
|
251
|
+
samples: rawSamples,
|
|
252
|
+
num_sequences: 0,
|
|
253
|
+
sequences: [],
|
|
254
|
+
speed: 6,
|
|
255
|
+
bpm: 78,
|
|
256
|
+
volbase: 0x40,
|
|
257
|
+
gvolbase: 0x40,
|
|
258
|
+
gvol: 0x40,
|
|
259
|
+
quirks: quirkFlags,
|
|
260
|
+
flowMode: 0,
|
|
261
|
+
readEventType: 0, // READ_EVENT_MOD
|
|
262
|
+
periodType,
|
|
263
|
+
defpan: 0x80,
|
|
264
|
+
time_factor: 10,
|
|
265
|
+
rrate: 250,
|
|
266
|
+
c4rate,
|
|
267
|
+
compare_vblank: false,
|
|
268
|
+
tracker: typeStr,
|
|
269
|
+
};
|
|
270
|
+
void ctx.sampleRate;
|
|
271
|
+
void ctx.outputRate;
|
|
272
|
+
return mod;
|
|
273
|
+
}
|
|
274
|
+
// ---------------------------------------------------------------------------
|
|
275
|
+
// Plugin
|
|
276
|
+
// ---------------------------------------------------------------------------
|
|
277
|
+
/** 669 format plugin (libxmp loaders/669_load.c + read_event MOD). */
|
|
278
|
+
export const plugin = {
|
|
279
|
+
name: '669',
|
|
280
|
+
test: c669Test,
|
|
281
|
+
load: c669Load,
|
|
282
|
+
readEvent(core, chn, row) {
|
|
283
|
+
const mod = core.module;
|
|
284
|
+
const e = core.readEventScratch(chn) ?? core.readEventAt(mod.xxo[core.ctx.p.ord] ?? 0, chn, row);
|
|
285
|
+
readEventMod(core, e, chn);
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=sixtysixtynine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sixtysixtynine.js","sourceRoot":"","sources":["../src/sixtysixtynine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modplayjs/fmt-669",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "Composer 669 / UNIS 669 format plugin for modplayjs (libxmp 669_load.c port).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -p tsconfig.build.json",
|
|
19
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@modplayjs/core": "^0.2.2",
|
|
23
|
+
"@modplayjs/fmt-mod": "^0.2.2"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"tracker",
|
|
27
|
+
"669",
|
|
28
|
+
"unis 669",
|
|
29
|
+
"composer 669",
|
|
30
|
+
"libxmp",
|
|
31
|
+
"chiptune",
|
|
32
|
+
"audio",
|
|
33
|
+
"music"
|
|
34
|
+
],
|
|
35
|
+
"sideEffects": false,
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18"
|
|
38
|
+
},
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/modplayjs/modplayjs.git",
|
|
42
|
+
"directory": "packages/fmt-669"
|
|
43
|
+
},
|
|
44
|
+
"bugs": "https://github.com/modplayjs/modplayjs/issues",
|
|
45
|
+
"homepage": "https://github.com/modplayjs/modplayjs#readme",
|
|
46
|
+
"license": "BSD-3-Clause",
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"registry": "https://npm.pkg.github.com"
|
|
49
|
+
}
|
|
50
|
+
}
|