@adatechnology/game-animals-three 0.4.0 → 0.4.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/dist/index.global.js +976 -12
- package/dist/index.global.js.map +1 -1
- package/package.json +7 -7
package/dist/index.global.js
CHANGED
|
@@ -104,7 +104,7 @@ var GameAnimalsThree = (() => {
|
|
|
104
104
|
var BODY_FOLEY_IDS = [...FOOTSTEP_SOUND_IDS, ...LAND_SOUND_IDS, ...BODY_SOUND_IDS];
|
|
105
105
|
var SWING_LEAD_SECONDS = { punch: 0.07, kick: 0.09, shove: 0, blade: 0.05, blunt: 0.1, chop: 0.11 };
|
|
106
106
|
|
|
107
|
-
// ../game-audio/dist/chunk-
|
|
107
|
+
// ../game-audio/dist/chunk-KBTUANNG.js
|
|
108
108
|
var DISTANCE_CURVES = {
|
|
109
109
|
/** The game's `sfx`: `vol / (1 + d² × 0.004)`, cutoff `/ (1 + d × 0.01)`, silent below 0.01 (jogo L62091–62092, L62101). */
|
|
110
110
|
game_sfx: { model: "inverse_square", k: 4e-3, cutoffK: 0.01, minGain: 0.01 },
|
|
@@ -167,15 +167,31 @@ var GameAnimalsThree = (() => {
|
|
|
167
167
|
{
|
|
168
168
|
id: "game",
|
|
169
169
|
master: 0.5,
|
|
170
|
-
noise: {
|
|
171
|
-
|
|
170
|
+
noise: {
|
|
171
|
+
seconds: 1.5,
|
|
172
|
+
create: "lazy"
|
|
173
|
+
},
|
|
174
|
+
sources: [
|
|
175
|
+
"jogo:L62077-62081 master 0.5 to the output",
|
|
176
|
+
"jogo:L62082-62088 noise 1.5 s made by the first sound that needs it"
|
|
177
|
+
]
|
|
172
178
|
},
|
|
173
179
|
{
|
|
174
180
|
id: "art_scene",
|
|
175
181
|
master: 0.85,
|
|
176
|
-
compressor: {
|
|
177
|
-
|
|
178
|
-
|
|
182
|
+
compressor: {
|
|
183
|
+
threshold: -12,
|
|
184
|
+
ratio: 5
|
|
185
|
+
},
|
|
186
|
+
reverb: {
|
|
187
|
+
seconds: 2.2,
|
|
188
|
+
decay: 3.4,
|
|
189
|
+
wet: 0.4
|
|
190
|
+
},
|
|
191
|
+
noise: {
|
|
192
|
+
seconds: 2,
|
|
193
|
+
create: "eager"
|
|
194
|
+
},
|
|
179
195
|
sources: [
|
|
180
196
|
"cena:L1308 compressor -12 dB, ratio 5",
|
|
181
197
|
"cena:L1309 master 0.85",
|
|
@@ -183,6 +199,30 @@ var GameAnimalsThree = (() => {
|
|
|
183
199
|
"cena:L1311 wet 0.4",
|
|
184
200
|
"cena:L1312 noise 2 s made with the chain"
|
|
185
201
|
]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: "kit",
|
|
205
|
+
master: 0.85,
|
|
206
|
+
compressor: {
|
|
207
|
+
threshold: -12,
|
|
208
|
+
ratio: 5
|
|
209
|
+
},
|
|
210
|
+
reverb: {
|
|
211
|
+
seconds: 2.2,
|
|
212
|
+
decay: 3.4,
|
|
213
|
+
wet: 0.4
|
|
214
|
+
},
|
|
215
|
+
noise: {
|
|
216
|
+
seconds: 2,
|
|
217
|
+
create: "eager"
|
|
218
|
+
},
|
|
219
|
+
sources: [
|
|
220
|
+
"sdk: the art scene chain (cena L1308-L1312) with a limiter after the compressor: the page has none, and a blast with its debris and a fire catching reached +7 dBFS"
|
|
221
|
+
],
|
|
222
|
+
limiter: {
|
|
223
|
+
ceiling: -1,
|
|
224
|
+
knee: -6
|
|
225
|
+
}
|
|
186
226
|
}
|
|
187
227
|
];
|
|
188
228
|
var MIX_PROFILES = Object.fromEntries(
|
|
@@ -233,6 +273,366 @@ var GameAnimalsThree = (() => {
|
|
|
233
273
|
}
|
|
234
274
|
]
|
|
235
275
|
};
|
|
276
|
+
var entries = (category, list2) => list2.map(([id, priority, current]) => ({ id, category, priority, ...current ? { current } : {} }));
|
|
277
|
+
var SFX_CATALOG = [
|
|
278
|
+
...entries("armas", [
|
|
279
|
+
["pistol_22lr", 2, "sfx_pistol"],
|
|
280
|
+
["pistol_9mm", 1, "sfx_pistol"],
|
|
281
|
+
["pistol_45", 1, "sfx_pistol"],
|
|
282
|
+
["revolver_38_357", 2, "sfx_pistol"],
|
|
283
|
+
["revolver_44_50ae", 3, "sfx_pistol"],
|
|
284
|
+
["smg_9mm_auto", 1, "sfx_pistol"],
|
|
285
|
+
["shotgun_12", 1, "sfx_shotgun"],
|
|
286
|
+
["rifle_5_56", 1, "sfx_rifle"],
|
|
287
|
+
["rifle_7_62x39", 1, "sfx_rifle"],
|
|
288
|
+
["rifle_auto_burst", 1, "sfx_rifle"],
|
|
289
|
+
["rifle_308_3006", 2, "sfx_rifle"],
|
|
290
|
+
["sniper_338_300wm", 2, "sfx_rifle"],
|
|
291
|
+
["antimateriel_50bmg", 3, "sfx_rifle"],
|
|
292
|
+
["suppressed_pistol", 2],
|
|
293
|
+
["suppressed_rifle", 2],
|
|
294
|
+
["gunshot_far_pistol", 1],
|
|
295
|
+
["gunshot_far_rifle", 1],
|
|
296
|
+
["gunshot_far_shotgun", 1],
|
|
297
|
+
["gunshot_far_heavy", 2],
|
|
298
|
+
["gunshot_tail_indoor", 1],
|
|
299
|
+
["gunshot_tail_outdoor", 1],
|
|
300
|
+
["bullet_crack_by", 2],
|
|
301
|
+
["bullet_whiz", 2],
|
|
302
|
+
["ricochet_metal", 2, "ping"],
|
|
303
|
+
["dry_fire", 1],
|
|
304
|
+
["mag_out", 1],
|
|
305
|
+
["mag_in", 1],
|
|
306
|
+
["slide_pull_release", 1],
|
|
307
|
+
["pump_cycle", 1],
|
|
308
|
+
["casing_drop_concreto_pistol", 1],
|
|
309
|
+
["casing_drop_concreto_rifle", 1],
|
|
310
|
+
["casing_drop_concreto_shell", 1],
|
|
311
|
+
["casing_drop_madeira_pistol", 1],
|
|
312
|
+
["casing_drop_madeira_rifle", 1],
|
|
313
|
+
["casing_drop_madeira_shell", 1],
|
|
314
|
+
["casing_drop_metal_pistol", 1],
|
|
315
|
+
["casing_drop_metal_rifle", 1],
|
|
316
|
+
["casing_drop_metal_shell", 1],
|
|
317
|
+
["casing_drop_terra_pistol", 1],
|
|
318
|
+
["casing_drop_terra_rifle", 1],
|
|
319
|
+
["casing_drop_terra_shell", 1],
|
|
320
|
+
["rocket_fire", 2],
|
|
321
|
+
["smg_45_auto", 2, "sfx_pistol"],
|
|
322
|
+
["weapon_draw", 2],
|
|
323
|
+
["suppressor_attach", 3],
|
|
324
|
+
["suppressor_detach", 3]
|
|
325
|
+
]),
|
|
326
|
+
...entries("explosoes-fogo", [
|
|
327
|
+
["explosion_grenade", 1, "boom"],
|
|
328
|
+
["explosion_big", 1, "boom_big"],
|
|
329
|
+
["explosion_car", 2, "boom_big"],
|
|
330
|
+
["explosion_far", 1],
|
|
331
|
+
["debris_rain_stone", 1],
|
|
332
|
+
["molotov_break_ignite", 1, "glass_shatter"],
|
|
333
|
+
["fire_ignite", 1, "hiss"],
|
|
334
|
+
["fire_loop_small", 1],
|
|
335
|
+
["fire_loop_large", 1],
|
|
336
|
+
["fire_extinguish", 2, "hiss"],
|
|
337
|
+
["gas_leak_hiss", 2],
|
|
338
|
+
["structure_collapse", 2, "crumble"],
|
|
339
|
+
["grenade_bounce", 1],
|
|
340
|
+
["c4_plant", 2],
|
|
341
|
+
["c4_beep", 2],
|
|
342
|
+
["c4_disarm", 2]
|
|
343
|
+
]),
|
|
344
|
+
...entries("personagem", [
|
|
345
|
+
["footstep_concrete_walk", 1, "sfx_step"],
|
|
346
|
+
["footstep_wood_walk", 1, "sfx_step"],
|
|
347
|
+
["footstep_dirt_walk", 1, "sfx_step"],
|
|
348
|
+
["footstep_grass_walk", 1, "sfx_step"],
|
|
349
|
+
["footstep_gravel_walk", 1, "sfx_step"],
|
|
350
|
+
["land_concrete", 1, "sfx_step"],
|
|
351
|
+
["punch_swing", 1],
|
|
352
|
+
["punch_hit_body", 1, "sfx_flesh"],
|
|
353
|
+
["kick_hit", 1, "sfx_flesh"],
|
|
354
|
+
["knife_stab", 1],
|
|
355
|
+
["blunt_hit", 1],
|
|
356
|
+
["bite", 1, "sfx_flesh"],
|
|
357
|
+
["body_fall", 1],
|
|
358
|
+
["player_hurt", 2],
|
|
359
|
+
["footstep_tile_walk", 1, "sfx_step"],
|
|
360
|
+
["footstep_water_walk", 1, "sfx_step"],
|
|
361
|
+
["footstep_grate_walk", 2, "sfx_step"],
|
|
362
|
+
["footstep_duct_walk", 3, "sfx_step"],
|
|
363
|
+
["ladder_climb", 2],
|
|
364
|
+
["swim", 2],
|
|
365
|
+
["zombie_groan", 1],
|
|
366
|
+
["zombie_alert", 1],
|
|
367
|
+
["zombie_attack", 1],
|
|
368
|
+
["zombie_pain", 1],
|
|
369
|
+
["zombie_claw_hit", 1, "sfx_flesh"],
|
|
370
|
+
["zombie_claw_miss", 2]
|
|
371
|
+
]),
|
|
372
|
+
...entries("veiculos", [
|
|
373
|
+
["engine_loop_car", 1],
|
|
374
|
+
["engine_start", 1],
|
|
375
|
+
["crash_light", 1, "crash"],
|
|
376
|
+
["crash_heavy", 1, "crash"],
|
|
377
|
+
["car_door_open", 1, "latch"],
|
|
378
|
+
["car_door_close", 1, "shut_metal"],
|
|
379
|
+
["horn_car", 2, "horn"],
|
|
380
|
+
["tire_skid_asphalt", 2]
|
|
381
|
+
]),
|
|
382
|
+
...entries("itens-portas", [
|
|
383
|
+
["item_pickup_metal", 1],
|
|
384
|
+
["can_open", 1],
|
|
385
|
+
["can_crush", 1],
|
|
386
|
+
["door_wood_open", 1, "latch"],
|
|
387
|
+
["door_wood_close", 1, "shut_wood"],
|
|
388
|
+
["door_creak", 1, "creak_wood"],
|
|
389
|
+
["door_locked_rattle", 1, "rattle"],
|
|
390
|
+
["drawer_open", 2, "slide"],
|
|
391
|
+
["fridge_close", 2, "shut_metal"]
|
|
392
|
+
]),
|
|
393
|
+
...entries("ambiente", [
|
|
394
|
+
["rain_loop", 2],
|
|
395
|
+
["wind_loop", 2],
|
|
396
|
+
["thunder_near", 2],
|
|
397
|
+
["thunder_far", 2],
|
|
398
|
+
["water_splash", 2],
|
|
399
|
+
["helicopter_loop", 3]
|
|
400
|
+
])
|
|
401
|
+
];
|
|
402
|
+
var SFX_MATERIALS = [
|
|
403
|
+
["steel", "metal"],
|
|
404
|
+
["aluminium", "metal"],
|
|
405
|
+
["wood", "wood"],
|
|
406
|
+
["plywood", "wood"],
|
|
407
|
+
["mdf", "wood"],
|
|
408
|
+
["glass", "glass"],
|
|
409
|
+
["tempered_glass", "glass"],
|
|
410
|
+
["ceramic", "glass"],
|
|
411
|
+
["concrete", "masonry"],
|
|
412
|
+
["brick", "masonry"],
|
|
413
|
+
["plaster", "masonry"],
|
|
414
|
+
["plastic", "soft"],
|
|
415
|
+
["fabric", "soft"],
|
|
416
|
+
["paper", "soft"],
|
|
417
|
+
["foliage", "soft"],
|
|
418
|
+
["soil", "soft"],
|
|
419
|
+
["flesh", "soft"]
|
|
420
|
+
];
|
|
421
|
+
var SFX_BLOWS = ["bullet", "blunt", "blade", "break", "drag"];
|
|
422
|
+
var CURRENT_BY_GROUP = {
|
|
423
|
+
metal: { bullet: "clang", blunt: "clang", blade: "clang", break: "clang", drag: "drag_metal" },
|
|
424
|
+
wood: { bullet: "wood_hit", blunt: "wood_hit", blade: "wood_hit", break: "crack", drag: "drag_wood" },
|
|
425
|
+
glass: { bullet: "ping", blunt: "ping", break: "glass_shatter", drag: "drag_glass" },
|
|
426
|
+
masonry: { bullet: "chip", blunt: "chip", blade: "chip", break: "crumble", drag: "drag_masonry" },
|
|
427
|
+
soft: { bullet: "thud", blunt: "thud", blade: "thud", break: "thud", drag: "drag_soft" }
|
|
428
|
+
};
|
|
429
|
+
var impactSoundId = (material, blow) => `impact_${material}_${blow}`;
|
|
430
|
+
var SFX_IMPACTS = SFX_MATERIALS.flatMap(
|
|
431
|
+
([material, group]) => SFX_BLOWS.map((blow) => {
|
|
432
|
+
const current = CURRENT_BY_GROUP[group]?.[blow];
|
|
433
|
+
return { id: impactSoundId(material, blow), category: "impactos", priority: ["steel", "wood", "glass", "concrete", "brick", "soil", "flesh"].includes(material) && blow === "bullet" ? 1 : 2, ...current ? { current } : {} };
|
|
434
|
+
})
|
|
435
|
+
);
|
|
436
|
+
var CALIBRATION_ID = "calibration_shot";
|
|
437
|
+
var PREFIX = "calibration/";
|
|
438
|
+
var url = (name) => `${PREFIX}${name}`;
|
|
439
|
+
var CALIBRATION_SOUND = {
|
|
440
|
+
id: CALIBRATION_ID,
|
|
441
|
+
bus: "weapons",
|
|
442
|
+
close: ["close_1.wav", "close_2.wav", "close_3.wav", "close_4.wav"].map((name) => ({ url: url(name) })),
|
|
443
|
+
far: ["far_1.wav", "far_2.wav"].map((name) => ({ url: url(name) })),
|
|
444
|
+
tiers: [
|
|
445
|
+
{ name: "light", from: 0, close: ["light_1.wav", "light_2.wav"].map((name) => ({ url: url(name) })) },
|
|
446
|
+
{ name: "medium", from: 0.34, close: ["close_1.wav", "close_2.wav", "close_3.wav", "close_4.wav"].map((name) => ({ url: url(name) })) },
|
|
447
|
+
{ name: "heavy", from: 0.67, close: ["heavy_1.wav", "heavy_2.wav"].map((name) => ({ url: url(name) })) }
|
|
448
|
+
],
|
|
449
|
+
tail: { indoor: [{ url: url("tail_in.wav") }], outdoor: [{ url: url("tail_out.wav") }] },
|
|
450
|
+
pitch: 0.04,
|
|
451
|
+
choke: { voices: 2 },
|
|
452
|
+
fallback: "sfx_pistol",
|
|
453
|
+
sources: ["sdk: calibration takes synthesized by the harness (measure/calibration.ts), no file, no licence"]
|
|
454
|
+
};
|
|
455
|
+
var CALIBRATION_LOOP_ID = "calibration_loop";
|
|
456
|
+
var CALIBRATION_LOOP_SOUND = {
|
|
457
|
+
id: CALIBRATION_LOOP_ID,
|
|
458
|
+
bus: "ambience",
|
|
459
|
+
close: ["loop_1.wav", "loop_2.wav", "loop_3.wav"].map((name) => ({ url: url(name) })),
|
|
460
|
+
loop: { crossfade: 0.15 },
|
|
461
|
+
sources: ["sdk: calibration takes synthesized by the harness (measure/calibration.ts), no file, no licence"]
|
|
462
|
+
};
|
|
463
|
+
var CRITERIA_TARGETS = {
|
|
464
|
+
/** C1: event to the first sample, and onset to the peak (one 60 fps frame). */
|
|
465
|
+
syncMs: 20,
|
|
466
|
+
peakAfterOnsetMs: 1e3 / 60,
|
|
467
|
+
/** C3: distances measured, metres. */
|
|
468
|
+
distances: [1, 10, 50, 200],
|
|
469
|
+
/** C5: plays, distinct takes and the pitch range (fraction). */
|
|
470
|
+
plays: 10,
|
|
471
|
+
minTakes: 4,
|
|
472
|
+
pitch: [0.03, 0.05],
|
|
473
|
+
/** C6: the highest peak, dBFS. */
|
|
474
|
+
peakDb: -1,
|
|
475
|
+
/** C8: the end of each file against its peak, dB. */
|
|
476
|
+
endDropDb: -40,
|
|
477
|
+
/** C9: a burst of rapid fire. */
|
|
478
|
+
burst: 20,
|
|
479
|
+
burstSpacing: 0.06
|
|
480
|
+
};
|
|
481
|
+
var PT = {
|
|
482
|
+
group: "Som",
|
|
483
|
+
name: "Painel de som (arquivos e C1\u2013C10)",
|
|
484
|
+
controls: {
|
|
485
|
+
category: "1 \xB7 Categoria",
|
|
486
|
+
sound: "1 \xB7 Som",
|
|
487
|
+
play: "1 \xB7 \u25B6 Tocar",
|
|
488
|
+
play_user: "1 \xB7 \u25B6 Tocar o seu",
|
|
489
|
+
material: "2 \xB7 Material",
|
|
490
|
+
blow: "2 \xB7 Golpe",
|
|
491
|
+
strike: "2 \xB7 \u25B6 Tocar golpe",
|
|
492
|
+
distance: "3 \xB7 Dist\xE2ncia",
|
|
493
|
+
bearing: "3 \xB7 Dire\xE7\xE3o",
|
|
494
|
+
environment: "3 \xB7 Lugar",
|
|
495
|
+
strength: "3 \xB7 For\xE7a",
|
|
496
|
+
wall: "3 \xB7 Atr\xE1s da parede",
|
|
497
|
+
burst: "3 \xB7 Rajada 20\xD7",
|
|
498
|
+
play_a: "4 \xB7 \u25B6 A (atual)",
|
|
499
|
+
play_b: "4 \xB7 \u25B6 B (novo)",
|
|
500
|
+
ab_cycle: "4 \xB7 Alternar A/B",
|
|
501
|
+
blind: "4 \xB7 \xC0s cegas (X)",
|
|
502
|
+
reveal: "4 \xB7 Revelar X",
|
|
503
|
+
prefer_a: "4 \xB7 Prefiro A",
|
|
504
|
+
prefer_b: "4 \xB7 Prefiro B",
|
|
505
|
+
measure: "5 \xB7 Medir C1\u2013C10",
|
|
506
|
+
record: "5 \xB7 Gravar 3 s",
|
|
507
|
+
approve: "5 \xB7 Aprovo (C10)"
|
|
508
|
+
},
|
|
509
|
+
hints: {
|
|
510
|
+
play_user: "Toca a sua grava\xE7\xE3o deste som (dos seus pacotes, fora do git), mesmo quando o SDK tem uma melhor e toca na frente.",
|
|
511
|
+
sound: "A = arquivo, S = sintetizado, F = faltando. O que tem arquivo toca o arquivo; o resto toca o som atual.",
|
|
512
|
+
strike: "Toca impact_<material>_<golpe>: o arquivo se existir, sen\xE3o o som atual daquele material.",
|
|
513
|
+
wall: "P\xF5e a parede de casa entre voc\xEA e a fonte: o som fica abafado (C4).",
|
|
514
|
+
burst: "Vinte vezes a cada 60 ms, como uma rajada (C9).",
|
|
515
|
+
ab_cycle: "A, B, A, B, um por segundo.",
|
|
516
|
+
blind: "Toca A ou B sem dizer qual; depois revele.",
|
|
517
|
+
measure: "Mede o som escolhido no motor real (contexto offline): sincronia, som certo, dist\xE2ncia, lado, varia\xE7\xE3o, volume, for\xE7a, cauda e rajada.",
|
|
518
|
+
record: "Grava 3 s da sa\xEDda com o som tocando e baixa o arquivo (C10).",
|
|
519
|
+
approve: "Marca o C10 do som escolhido como aprovado pelo seu ouvido."
|
|
520
|
+
},
|
|
521
|
+
categories: {
|
|
522
|
+
armas: "Armas",
|
|
523
|
+
impactos: "Impactos",
|
|
524
|
+
"explosoes-fogo": "Explos\xF5es e fogo",
|
|
525
|
+
personagem: "Personagem",
|
|
526
|
+
veiculos: "Ve\xEDculos",
|
|
527
|
+
"itens-portas": "Itens e portas",
|
|
528
|
+
ambiente: "Ambiente",
|
|
529
|
+
calibracao: "Calibra\xE7\xE3o (SDK)"
|
|
530
|
+
},
|
|
531
|
+
blows: { bullet: "tiro", blunt: "soco/chute", blade: "faca", break: "quebra", drag: "arrasto/queda" },
|
|
532
|
+
materials: {
|
|
533
|
+
steel: "a\xE7o",
|
|
534
|
+
aluminium: "alum\xEDnio",
|
|
535
|
+
wood: "madeira",
|
|
536
|
+
plywood: "compensado",
|
|
537
|
+
mdf: "MDF",
|
|
538
|
+
glass: "vidro",
|
|
539
|
+
tempered_glass: "vidro temperado",
|
|
540
|
+
ceramic: "cer\xE2mica",
|
|
541
|
+
concrete: "concreto",
|
|
542
|
+
brick: "tijolo",
|
|
543
|
+
plaster: "gesso",
|
|
544
|
+
plastic: "pl\xE1stico",
|
|
545
|
+
fabric: "tecido",
|
|
546
|
+
paper: "papel\xE3o",
|
|
547
|
+
foliage: "folhagem",
|
|
548
|
+
soil: "terra",
|
|
549
|
+
flesh: "carne"
|
|
550
|
+
},
|
|
551
|
+
environments: { indoor: "interior", outdoor: "exterior" },
|
|
552
|
+
strengths: { light: "leve", medium: "m\xE9dio", heavy: "forte" },
|
|
553
|
+
states: { file: "A", synth: "S", missing: "F" },
|
|
554
|
+
criteria: { C1: "C1 Sincronia", C2: "C2 Certo p/ a\xE7\xE3o", C3: "C3 Dist\xE2ncia", C4: "C4 Posi\xE7\xE3o", C5: "C5 Varia\xE7\xE3o", C6: "C6 Volume", C7: "C7 Intensidade", C8: "C8 Cauda", C9: "C9 Rajada", C10: "C10 Escuta" },
|
|
555
|
+
metrics: { source: "1 \xB7 Fonte do que tocou", chosen: "1 \xB7 Escolhido", matrix: "2 \xB7 Matriz", last: "\xDAltimo tocado", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Prefer\xEAncias", state: "5 \xB7 Medi\xE7\xE3o", count: "1 \xB7 Cat\xE1logo" },
|
|
556
|
+
run: { idle: "parada", measuring: "medindo\u2026", done: "pronta", failed: "falhou", recording: "gravando\u2026", recorded: "grava\xE7\xE3o baixada" },
|
|
557
|
+
words: { none: "\u2014", hidden: "? (revele)", prefers: "prefere", approved: "aprovado pelo dono" },
|
|
558
|
+
sources: { sdk: "SDK", user: "seu som", synth: "sintetizado" },
|
|
559
|
+
probe: "Fonte do som",
|
|
560
|
+
wall: "Parede (oclus\xE3o)",
|
|
561
|
+
scenarios: { pipeline: "Arquivo \u2192 decodifica \u2192 toca (round-robin, cauda)", criteria: "Crit\xE9rios C1\u2013C9 no som de calibra\xE7\xE3o", loop: "Loop de arquivo: emenda sem buraco (crossfade)", panel: "Painel: categorias, matriz, A/B e parede" }
|
|
562
|
+
};
|
|
563
|
+
var EN2 = {
|
|
564
|
+
...PT,
|
|
565
|
+
group: "Sound",
|
|
566
|
+
name: "Sound panel (files and C1\u2013C10)",
|
|
567
|
+
controls: {
|
|
568
|
+
category: "1 \xB7 Category",
|
|
569
|
+
sound: "1 \xB7 Sound",
|
|
570
|
+
play: "1 \xB7 \u25B6 Play",
|
|
571
|
+
play_user: "1 \xB7 \u25B6 Play yours",
|
|
572
|
+
material: "2 \xB7 Material",
|
|
573
|
+
blow: "2 \xB7 Blow",
|
|
574
|
+
strike: "2 \xB7 \u25B6 Play blow",
|
|
575
|
+
distance: "3 \xB7 Distance",
|
|
576
|
+
bearing: "3 \xB7 Bearing",
|
|
577
|
+
environment: "3 \xB7 Place",
|
|
578
|
+
strength: "3 \xB7 Strength",
|
|
579
|
+
wall: "3 \xB7 Behind the wall",
|
|
580
|
+
burst: "3 \xB7 Burst 20\xD7",
|
|
581
|
+
play_a: "4 \xB7 \u25B6 A (current)",
|
|
582
|
+
play_b: "4 \xB7 \u25B6 B (new)",
|
|
583
|
+
ab_cycle: "4 \xB7 Alternate A/B",
|
|
584
|
+
blind: "4 \xB7 Blind (X)",
|
|
585
|
+
reveal: "4 \xB7 Reveal X",
|
|
586
|
+
prefer_a: "4 \xB7 Prefer A",
|
|
587
|
+
prefer_b: "4 \xB7 Prefer B",
|
|
588
|
+
measure: "5 \xB7 Measure C1\u2013C10",
|
|
589
|
+
record: "5 \xB7 Record 3 s",
|
|
590
|
+
approve: "5 \xB7 Approve (C10)"
|
|
591
|
+
},
|
|
592
|
+
hints: {
|
|
593
|
+
play_user: "Plays your own take of this sound (from your packs, kept out of git), even where the SDK has a better one that plays first.",
|
|
594
|
+
sound: "A = file, S = synthesized, F = missing. A file plays the file; the rest plays the current sound.",
|
|
595
|
+
strike: "Plays impact_<material>_<blow>: the file if there is one, else the current sound of that material.",
|
|
596
|
+
wall: "Puts the house wall between you and the source: the sound is muffled (C4).",
|
|
597
|
+
burst: "Twenty times every 60 ms, like a burst (C9).",
|
|
598
|
+
ab_cycle: "A, B, A, B, one a second.",
|
|
599
|
+
blind: "Plays A or B without saying which; reveal it after.",
|
|
600
|
+
measure: "Measures the chosen sound through the real engine (offline context): sync, right sound, distance, side, variation, level, strength, tail and burst.",
|
|
601
|
+
record: "Records 3 s of the output with the sound playing and downloads it (C10).",
|
|
602
|
+
approve: "Marks C10 of the chosen sound as approved by your ear."
|
|
603
|
+
},
|
|
604
|
+
categories: { armas: "Weapons", impactos: "Impacts", "explosoes-fogo": "Explosions and fire", personagem: "Character", veiculos: "Vehicles", "itens-portas": "Items and doors", ambiente: "Ambience", calibracao: "Calibration (SDK)" },
|
|
605
|
+
blows: { bullet: "bullet", blunt: "punch/kick", blade: "knife", break: "break", drag: "drag/fall" },
|
|
606
|
+
materials: {
|
|
607
|
+
steel: "steel",
|
|
608
|
+
aluminium: "aluminium",
|
|
609
|
+
wood: "wood",
|
|
610
|
+
plywood: "plywood",
|
|
611
|
+
mdf: "MDF",
|
|
612
|
+
glass: "glass",
|
|
613
|
+
tempered_glass: "tempered glass",
|
|
614
|
+
ceramic: "ceramic",
|
|
615
|
+
concrete: "concrete",
|
|
616
|
+
brick: "brick",
|
|
617
|
+
plaster: "plaster",
|
|
618
|
+
plastic: "plastic",
|
|
619
|
+
fabric: "fabric",
|
|
620
|
+
paper: "cardboard",
|
|
621
|
+
foliage: "foliage",
|
|
622
|
+
soil: "soil",
|
|
623
|
+
flesh: "flesh"
|
|
624
|
+
},
|
|
625
|
+
environments: { indoor: "indoor", outdoor: "outdoor" },
|
|
626
|
+
strengths: { light: "light", medium: "medium", heavy: "heavy" },
|
|
627
|
+
criteria: { C1: "C1 Sync", C2: "C2 Right sound", C3: "C3 Distance", C4: "C4 Position", C5: "C5 Variation", C6: "C6 Level", C7: "C7 Strength", C8: "C8 Tail", C9: "C9 Burst", C10: "C10 Listening" },
|
|
628
|
+
metrics: { source: "1 \xB7 Source of what played", chosen: "1 \xB7 Chosen", matrix: "2 \xB7 Matrix", last: "Last played", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Preferences", state: "5 \xB7 Measurement", count: "1 \xB7 Catalogue" },
|
|
629
|
+
run: { idle: "idle", measuring: "measuring\u2026", done: "done", failed: "failed", recording: "recording\u2026", recorded: "recording downloaded" },
|
|
630
|
+
words: { none: "\u2014", hidden: "? (reveal)", prefers: "prefers", approved: "approved by the owner" },
|
|
631
|
+
sources: { sdk: "SDK", user: "your sound", synth: "synthesized" },
|
|
632
|
+
probe: "Sound source",
|
|
633
|
+
wall: "Wall (occlusion)",
|
|
634
|
+
scenarios: { pipeline: "File \u2192 decode \u2192 play (round-robin, tail)", criteria: "Criteria C1\u2013C9 on the calibration sound", loop: "File loop: seamless joins (crossfade)", panel: "Panel: categories, matrix, A/B and wall" }
|
|
635
|
+
};
|
|
236
636
|
|
|
237
637
|
// ../game-audio/dist/index.js
|
|
238
638
|
var ATTACK = 2e-3;
|
|
@@ -297,6 +697,570 @@ var GameAnimalsThree = (() => {
|
|
|
297
697
|
]
|
|
298
698
|
};
|
|
299
699
|
}
|
|
700
|
+
var sceneMany = (count, make2) => Array.from({ length: count }, make2);
|
|
701
|
+
var FOLEY_FALLOFF = {
|
|
702
|
+
model: "inverse_square",
|
|
703
|
+
k: 0.02,
|
|
704
|
+
cutoffK: 0.04,
|
|
705
|
+
minGain: 4e-3
|
|
706
|
+
};
|
|
707
|
+
var vary = (f, pct = 0.04) => [Math.round(f * (1 - pct)), Math.round(f * (1 + pct))];
|
|
708
|
+
var foley = (id, layers, note) => ({
|
|
709
|
+
id,
|
|
710
|
+
bus: "world",
|
|
711
|
+
pan: true,
|
|
712
|
+
layers,
|
|
713
|
+
falloff: FOLEY_FALLOFF,
|
|
714
|
+
sources: [`sdk: ${note}`]
|
|
715
|
+
});
|
|
716
|
+
var click = (f, vol, delay = 0) => [
|
|
717
|
+
sceneNoise({
|
|
718
|
+
type: "bandpass",
|
|
719
|
+
f: vary(f, 0.08),
|
|
720
|
+
q: 4,
|
|
721
|
+
d: [0.018, 0.03],
|
|
722
|
+
vol: [vol * 0.85, vol * 1.1],
|
|
723
|
+
delay
|
|
724
|
+
}),
|
|
725
|
+
sceneTone({
|
|
726
|
+
f: vary(f * 0.8, 0.06),
|
|
727
|
+
f2: Math.round(f * 0.62),
|
|
728
|
+
d: [0.015, 0.025],
|
|
729
|
+
vol: vol * 0.18,
|
|
730
|
+
delay
|
|
731
|
+
})
|
|
732
|
+
];
|
|
733
|
+
var meet = (body, panel, vol, latch) => [
|
|
734
|
+
sceneTone({
|
|
735
|
+
f: vary(body),
|
|
736
|
+
f2: Math.round(body * 0.5),
|
|
737
|
+
d: [0.12, 0.16],
|
|
738
|
+
vol: [vol * 0.9, vol * 1.1]
|
|
739
|
+
}),
|
|
740
|
+
sceneNoise({
|
|
741
|
+
type: "bandpass",
|
|
742
|
+
f: vary(panel, 0.06),
|
|
743
|
+
q: 1.2,
|
|
744
|
+
d: [0.08, 0.12],
|
|
745
|
+
vol: [vol * 0.9, vol * 1.1],
|
|
746
|
+
wet: 0.25
|
|
747
|
+
}),
|
|
748
|
+
...click(latch, vol * 0.45, [0.012, 0.028])
|
|
749
|
+
];
|
|
750
|
+
var LEAF_FOLEY = [
|
|
751
|
+
// a wooden house door or wardrobe door: latch, a short creak, the leaf on the frame (the hard slam adds the frame rattling)
|
|
752
|
+
foley("door_wood_open", click(2400, 0.4), "the latch of a wooden door giving"),
|
|
753
|
+
foley(
|
|
754
|
+
"door_creak",
|
|
755
|
+
[
|
|
756
|
+
sceneTone({ f: [190, 240], f2: 310, d: [0.4, 0.55], vol: [0.04, 0.06] }),
|
|
757
|
+
sceneNoise({
|
|
758
|
+
type: "bandpass",
|
|
759
|
+
f: [480, 560],
|
|
760
|
+
q: 6,
|
|
761
|
+
a: 0.05,
|
|
762
|
+
d: [0.35, 0.5],
|
|
763
|
+
vol: [0.1, 0.14]
|
|
764
|
+
})
|
|
765
|
+
],
|
|
766
|
+
"a wooden hinge turning"
|
|
767
|
+
),
|
|
768
|
+
foley("door_wood_close", meet(120, 600, 0.55, 2400), "a wooden leaf meeting its frame"),
|
|
769
|
+
foley(
|
|
770
|
+
"door_wood_slam",
|
|
771
|
+
[
|
|
772
|
+
...meet(110, 560, 0.85, 2300),
|
|
773
|
+
...sceneMany(
|
|
774
|
+
3,
|
|
775
|
+
() => sceneNoise({
|
|
776
|
+
type: "bandpass",
|
|
777
|
+
f: [900, 1500],
|
|
778
|
+
q: 3,
|
|
779
|
+
d: 0.03,
|
|
780
|
+
vol: [0.08, 0.14],
|
|
781
|
+
delay: [0.05, 0.18]
|
|
782
|
+
})
|
|
783
|
+
)
|
|
784
|
+
],
|
|
785
|
+
"a wooden door slammed: the frame and the hinges rattle after the hit"
|
|
786
|
+
),
|
|
787
|
+
// a metal door or gate: a hollow panel that rings a little
|
|
788
|
+
foley("door_metal_open_close", [...meet(160, 900, 0.55, 2e3), sceneTone({ f: vary(1250), f2: 1150, d: [0.1, 0.16], vol: 0.06, wet: 0.3 })], "a metal door or gate meeting its frame"),
|
|
789
|
+
foley(
|
|
790
|
+
"door_creak_metal",
|
|
791
|
+
[
|
|
792
|
+
sceneTone({ f: [620, 760], f2: 900, d: [0.3, 0.4], vol: [0.03, 0.045] }),
|
|
793
|
+
sceneNoise({
|
|
794
|
+
type: "bandpass",
|
|
795
|
+
f: [1300, 1500],
|
|
796
|
+
q: 8,
|
|
797
|
+
a: 0.04,
|
|
798
|
+
d: [0.25, 0.35],
|
|
799
|
+
vol: [0.07, 0.09]
|
|
800
|
+
})
|
|
801
|
+
],
|
|
802
|
+
"a metal hinge turning"
|
|
803
|
+
),
|
|
804
|
+
// the handle of a locked door shaken: the latch knocking in its keeper, five to seven times in half a second
|
|
805
|
+
foley(
|
|
806
|
+
"door_locked_rattle",
|
|
807
|
+
[
|
|
808
|
+
...sceneMany(
|
|
809
|
+
6,
|
|
810
|
+
() => sceneNoise({
|
|
811
|
+
type: "bandpass",
|
|
812
|
+
f: [1600, 2600],
|
|
813
|
+
q: 3,
|
|
814
|
+
d: [0.025, 0.04],
|
|
815
|
+
vol: [0.22, 0.34],
|
|
816
|
+
delay: [0, 0.45]
|
|
817
|
+
})
|
|
818
|
+
),
|
|
819
|
+
...sceneMany(
|
|
820
|
+
3,
|
|
821
|
+
() => sceneTone({
|
|
822
|
+
f: [170, 210],
|
|
823
|
+
f2: 120,
|
|
824
|
+
d: 0.05,
|
|
825
|
+
vol: [0.12, 0.18],
|
|
826
|
+
delay: [0.02, 0.4]
|
|
827
|
+
})
|
|
828
|
+
)
|
|
829
|
+
],
|
|
830
|
+
"the handle of a locked door shaken: latch knocks and the leaf thumping in its frame"
|
|
831
|
+
),
|
|
832
|
+
// a fridge: the rubber seal lets go with a soft suck, the bottles in the door clink; closing it is a soft thump and the seal pulling shut
|
|
833
|
+
foley(
|
|
834
|
+
"fridge_open",
|
|
835
|
+
[
|
|
836
|
+
sceneNoise({
|
|
837
|
+
type: "lowpass",
|
|
838
|
+
f: [320, 380],
|
|
839
|
+
a: 0.03,
|
|
840
|
+
d: [0.14, 0.2],
|
|
841
|
+
vol: [0.32, 0.4]
|
|
842
|
+
}),
|
|
843
|
+
sceneNoise({
|
|
844
|
+
type: "bandpass",
|
|
845
|
+
f: [800, 950],
|
|
846
|
+
f2: 1400,
|
|
847
|
+
q: 2,
|
|
848
|
+
a: 0.02,
|
|
849
|
+
d: 0.12,
|
|
850
|
+
vol: [0.08, 0.12]
|
|
851
|
+
}),
|
|
852
|
+
...sceneMany(
|
|
853
|
+
2,
|
|
854
|
+
() => sceneTone({
|
|
855
|
+
f: [2600, 4200],
|
|
856
|
+
d: [0.04, 0.08],
|
|
857
|
+
vol: [0.015, 0.03],
|
|
858
|
+
delay: [0.08, 0.22]
|
|
859
|
+
})
|
|
860
|
+
)
|
|
861
|
+
],
|
|
862
|
+
"a fridge door: the seal letting go and the bottles in the door"
|
|
863
|
+
),
|
|
864
|
+
foley(
|
|
865
|
+
"fridge_close",
|
|
866
|
+
[
|
|
867
|
+
sceneTone({ f: vary(85), f2: 45, d: [0.1, 0.13], vol: [0.38, 0.46] }),
|
|
868
|
+
sceneNoise({
|
|
869
|
+
type: "lowpass",
|
|
870
|
+
f: [520, 620],
|
|
871
|
+
d: [0.08, 0.12],
|
|
872
|
+
vol: [0.3, 0.36]
|
|
873
|
+
}),
|
|
874
|
+
sceneNoise({
|
|
875
|
+
type: "lowpass",
|
|
876
|
+
f: [260, 320],
|
|
877
|
+
a: 0.02,
|
|
878
|
+
d: 0.1,
|
|
879
|
+
vol: [0.12, 0.18],
|
|
880
|
+
delay: [0.04, 0.07]
|
|
881
|
+
}),
|
|
882
|
+
...sceneMany(
|
|
883
|
+
2,
|
|
884
|
+
() => sceneTone({
|
|
885
|
+
f: [2600, 4200],
|
|
886
|
+
d: [0.04, 0.07],
|
|
887
|
+
vol: [0.015, 0.03],
|
|
888
|
+
delay: [0.03, 0.12]
|
|
889
|
+
})
|
|
890
|
+
)
|
|
891
|
+
],
|
|
892
|
+
"a fridge door shut: a soft thump, the seal pulling and the bottles"
|
|
893
|
+
),
|
|
894
|
+
// a microwave: the spring catch of the door, plastic on plastic
|
|
895
|
+
foley(
|
|
896
|
+
"microwave_open",
|
|
897
|
+
[
|
|
898
|
+
...click(1800, 0.34),
|
|
899
|
+
sceneTone({
|
|
900
|
+
f: [3e3, 3400],
|
|
901
|
+
f2: 2800,
|
|
902
|
+
d: 0.05,
|
|
903
|
+
vol: 0.025,
|
|
904
|
+
delay: [0.01, 0.02]
|
|
905
|
+
})
|
|
906
|
+
],
|
|
907
|
+
"the spring catch of a microwave door"
|
|
908
|
+
),
|
|
909
|
+
foley(
|
|
910
|
+
"microwave_close",
|
|
911
|
+
[
|
|
912
|
+
sceneNoise({
|
|
913
|
+
type: "bandpass",
|
|
914
|
+
f: [1200, 1450],
|
|
915
|
+
q: 2.5,
|
|
916
|
+
d: [0.04, 0.06],
|
|
917
|
+
vol: [0.36, 0.44]
|
|
918
|
+
}),
|
|
919
|
+
sceneTone({ f: vary(180), f2: 120, d: 0.05, vol: [0.16, 0.22] }),
|
|
920
|
+
...click(2200, 0.2, [8e-3, 0.016])
|
|
921
|
+
],
|
|
922
|
+
"a microwave door clacking shut"
|
|
923
|
+
),
|
|
924
|
+
foley("microwave_beep", [sceneTone({ wave: "square", f: 2e3, d: 0.12, vol: 0.05 })], "the beep of a microwave"),
|
|
925
|
+
// drawers and sliding leaves: the runners, then the stop
|
|
926
|
+
foley(
|
|
927
|
+
"drawer_open",
|
|
928
|
+
[
|
|
929
|
+
sceneNoise({
|
|
930
|
+
type: "bandpass",
|
|
931
|
+
f: [620, 780],
|
|
932
|
+
q: 2,
|
|
933
|
+
a: 0.04,
|
|
934
|
+
d: [0.28, 0.36],
|
|
935
|
+
vol: [0.18, 0.24]
|
|
936
|
+
}),
|
|
937
|
+
sceneNoise({ type: "bandpass", f: [2e3, 2400], q: 5, d: 0.28, vol: 0.04 }),
|
|
938
|
+
...click(1400, 0.16, [0.28, 0.34])
|
|
939
|
+
],
|
|
940
|
+
"a drawer on its runners and its stop"
|
|
941
|
+
),
|
|
942
|
+
foley(
|
|
943
|
+
"drawer_close",
|
|
944
|
+
[
|
|
945
|
+
sceneNoise({
|
|
946
|
+
type: "bandpass",
|
|
947
|
+
f: [620, 780],
|
|
948
|
+
q: 2,
|
|
949
|
+
a: 0.03,
|
|
950
|
+
d: [0.2, 0.28],
|
|
951
|
+
vol: [0.18, 0.24]
|
|
952
|
+
}),
|
|
953
|
+
sceneTone({
|
|
954
|
+
f: vary(150),
|
|
955
|
+
f2: 90,
|
|
956
|
+
d: 0.08,
|
|
957
|
+
vol: [0.22, 0.3],
|
|
958
|
+
delay: [0.2, 0.26]
|
|
959
|
+
})
|
|
960
|
+
],
|
|
961
|
+
"a drawer pushed home"
|
|
962
|
+
)
|
|
963
|
+
];
|
|
964
|
+
var ITEM_FOLEY = [
|
|
965
|
+
// the hand closing on the item: a touch of skin and cloth, then the item's own small sound
|
|
966
|
+
foley(
|
|
967
|
+
"item_pickup_metal",
|
|
968
|
+
[
|
|
969
|
+
sceneNoise({ type: "bandpass", f: [700, 900], q: 1, d: 0.06, vol: 0.18 }),
|
|
970
|
+
sceneTone({
|
|
971
|
+
f: [1900, 2600],
|
|
972
|
+
f2: 1700,
|
|
973
|
+
d: [0.05, 0.08],
|
|
974
|
+
vol: [0.06, 0.09],
|
|
975
|
+
delay: [0.01, 0.03]
|
|
976
|
+
})
|
|
977
|
+
],
|
|
978
|
+
"picking up a metal thing"
|
|
979
|
+
),
|
|
980
|
+
foley(
|
|
981
|
+
"item_pickup_plastic",
|
|
982
|
+
[
|
|
983
|
+
sceneNoise({ type: "bandpass", f: [700, 900], q: 1, d: 0.06, vol: 0.18 }),
|
|
984
|
+
sceneNoise({
|
|
985
|
+
type: "bandpass",
|
|
986
|
+
f: [1500, 1900],
|
|
987
|
+
q: 3,
|
|
988
|
+
d: 0.03,
|
|
989
|
+
vol: [0.15, 0.21],
|
|
990
|
+
delay: [0.01, 0.03]
|
|
991
|
+
})
|
|
992
|
+
],
|
|
993
|
+
"picking up a plastic thing"
|
|
994
|
+
),
|
|
995
|
+
foley(
|
|
996
|
+
"item_pickup_glass",
|
|
997
|
+
[
|
|
998
|
+
sceneNoise({ type: "bandpass", f: [700, 900], q: 1, d: 0.06, vol: 0.15 }),
|
|
999
|
+
sceneTone({
|
|
1000
|
+
f: [3200, 4200],
|
|
1001
|
+
d: [0.05, 0.08],
|
|
1002
|
+
vol: [0.038, 0.06],
|
|
1003
|
+
delay: [0.01, 0.03]
|
|
1004
|
+
})
|
|
1005
|
+
],
|
|
1006
|
+
"picking up a glass thing"
|
|
1007
|
+
),
|
|
1008
|
+
foley(
|
|
1009
|
+
"item_pickup_paper",
|
|
1010
|
+
[
|
|
1011
|
+
sceneNoise({
|
|
1012
|
+
type: "highpass",
|
|
1013
|
+
f: [2600, 3400],
|
|
1014
|
+
a: 0.01,
|
|
1015
|
+
d: [0.1, 0.14],
|
|
1016
|
+
vol: [0.12, 0.18]
|
|
1017
|
+
}),
|
|
1018
|
+
sceneNoise({ type: "bandpass", f: [800, 1e3], q: 1, d: 0.05, vol: 0.12 })
|
|
1019
|
+
],
|
|
1020
|
+
"picking up paper or cardboard"
|
|
1021
|
+
),
|
|
1022
|
+
foley(
|
|
1023
|
+
"item_pickup_fabric",
|
|
1024
|
+
[
|
|
1025
|
+
sceneNoise({
|
|
1026
|
+
type: "bandpass",
|
|
1027
|
+
f: [900, 1300],
|
|
1028
|
+
q: 0.8,
|
|
1029
|
+
a: 0.02,
|
|
1030
|
+
d: [0.12, 0.16],
|
|
1031
|
+
vol: [0.15, 0.21]
|
|
1032
|
+
})
|
|
1033
|
+
],
|
|
1034
|
+
"picking up cloth"
|
|
1035
|
+
),
|
|
1036
|
+
foley(
|
|
1037
|
+
"item_pickup_wood",
|
|
1038
|
+
[
|
|
1039
|
+
sceneNoise({ type: "bandpass", f: [700, 900], q: 1, d: 0.06, vol: 0.18 }),
|
|
1040
|
+
sceneNoise({
|
|
1041
|
+
type: "bandpass",
|
|
1042
|
+
f: [900, 1100],
|
|
1043
|
+
q: 2,
|
|
1044
|
+
d: 0.04,
|
|
1045
|
+
vol: [0.15, 0.21],
|
|
1046
|
+
delay: [0.01, 0.03]
|
|
1047
|
+
})
|
|
1048
|
+
],
|
|
1049
|
+
"picking up a wooden thing"
|
|
1050
|
+
),
|
|
1051
|
+
foley(
|
|
1052
|
+
"item_pickup_food",
|
|
1053
|
+
[
|
|
1054
|
+
sceneNoise({ type: "bandpass", f: [700, 900], q: 1, d: 0.06, vol: 0.18 }),
|
|
1055
|
+
sceneNoise({
|
|
1056
|
+
type: "lowpass",
|
|
1057
|
+
f: [500, 650],
|
|
1058
|
+
d: 0.05,
|
|
1059
|
+
vol: 0.12,
|
|
1060
|
+
delay: [0.01, 0.03]
|
|
1061
|
+
})
|
|
1062
|
+
],
|
|
1063
|
+
"picking up food"
|
|
1064
|
+
),
|
|
1065
|
+
foley(
|
|
1066
|
+
"item_throw",
|
|
1067
|
+
[
|
|
1068
|
+
sceneNoise({
|
|
1069
|
+
type: "bandpass",
|
|
1070
|
+
f: [450, 650],
|
|
1071
|
+
f2: 1400,
|
|
1072
|
+
q: 1.5,
|
|
1073
|
+
a: 0.05,
|
|
1074
|
+
d: 0.18,
|
|
1075
|
+
vol: [0.1, 0.14]
|
|
1076
|
+
})
|
|
1077
|
+
],
|
|
1078
|
+
"the arm throwing something: air"
|
|
1079
|
+
),
|
|
1080
|
+
// a can: the tab cracks, the gas hisses out; drinking is gulps; crushing it crumples the sheet
|
|
1081
|
+
foley(
|
|
1082
|
+
"can_open",
|
|
1083
|
+
[
|
|
1084
|
+
...click(3200, 0.36),
|
|
1085
|
+
sceneNoise({
|
|
1086
|
+
type: "highpass",
|
|
1087
|
+
f: [3600, 4400],
|
|
1088
|
+
a: 5e-3,
|
|
1089
|
+
d: [0.22, 0.3],
|
|
1090
|
+
vol: [0.16, 0.22],
|
|
1091
|
+
delay: [0.012, 0.02]
|
|
1092
|
+
}),
|
|
1093
|
+
...sceneMany(5, () => sceneTone({ f: [4e3, 7e3], d: 0.02, vol: 0.01, delay: [0.05, 0.4] }))
|
|
1094
|
+
],
|
|
1095
|
+
"the tab of a can and the gas hissing out"
|
|
1096
|
+
),
|
|
1097
|
+
foley(
|
|
1098
|
+
"can_crush",
|
|
1099
|
+
[
|
|
1100
|
+
sceneNoise({
|
|
1101
|
+
type: "bandpass",
|
|
1102
|
+
f: [1600, 2200],
|
|
1103
|
+
q: 1.2,
|
|
1104
|
+
d: [0.18, 0.25],
|
|
1105
|
+
vol: [0.3, 0.38]
|
|
1106
|
+
}),
|
|
1107
|
+
...sceneMany(
|
|
1108
|
+
6,
|
|
1109
|
+
() => sceneTone({
|
|
1110
|
+
f: [1200, 3400],
|
|
1111
|
+
f2: 900,
|
|
1112
|
+
d: 0.03,
|
|
1113
|
+
vol: [0.03, 0.06],
|
|
1114
|
+
delay: [0, 0.2]
|
|
1115
|
+
})
|
|
1116
|
+
)
|
|
1117
|
+
],
|
|
1118
|
+
"a can crushed in the hand"
|
|
1119
|
+
),
|
|
1120
|
+
foley(
|
|
1121
|
+
"can_puncture_spray",
|
|
1122
|
+
[
|
|
1123
|
+
sceneNoise({
|
|
1124
|
+
type: "highpass",
|
|
1125
|
+
f: [2400, 3e3],
|
|
1126
|
+
a: 5e-3,
|
|
1127
|
+
d: [0.5, 0.7],
|
|
1128
|
+
vol: [0.2, 0.26]
|
|
1129
|
+
}),
|
|
1130
|
+
sceneNoise({ type: "bandpass", f: [600, 800], q: 2, d: 0.4, vol: 0.06 })
|
|
1131
|
+
],
|
|
1132
|
+
"a can holed: the jet hissing out"
|
|
1133
|
+
),
|
|
1134
|
+
foley(
|
|
1135
|
+
"bottle_open",
|
|
1136
|
+
[
|
|
1137
|
+
...sceneMany(
|
|
1138
|
+
5,
|
|
1139
|
+
() => sceneNoise({
|
|
1140
|
+
type: "bandpass",
|
|
1141
|
+
f: [2200, 3e3],
|
|
1142
|
+
q: 4,
|
|
1143
|
+
d: 8e-3,
|
|
1144
|
+
vol: [0.1, 0.16],
|
|
1145
|
+
delay: [0, 0.18]
|
|
1146
|
+
})
|
|
1147
|
+
),
|
|
1148
|
+
sceneNoise({
|
|
1149
|
+
type: "highpass",
|
|
1150
|
+
f: 3800,
|
|
1151
|
+
a: 5e-3,
|
|
1152
|
+
d: 0.12,
|
|
1153
|
+
vol: [0.06, 0.1],
|
|
1154
|
+
delay: [0.18, 0.22]
|
|
1155
|
+
})
|
|
1156
|
+
],
|
|
1157
|
+
"the screw cap of a bottle turning off"
|
|
1158
|
+
),
|
|
1159
|
+
foley(
|
|
1160
|
+
"drink_gulp",
|
|
1161
|
+
[
|
|
1162
|
+
sceneNoise({
|
|
1163
|
+
type: "lowpass",
|
|
1164
|
+
f: [280, 360],
|
|
1165
|
+
a: 0.02,
|
|
1166
|
+
d: [0.1, 0.14],
|
|
1167
|
+
vol: [0.24, 0.3]
|
|
1168
|
+
}),
|
|
1169
|
+
sceneTone({ f: [140, 170], f2: 85, d: [0.08, 0.11], vol: [0.12, 0.16] })
|
|
1170
|
+
],
|
|
1171
|
+
"a gulp"
|
|
1172
|
+
),
|
|
1173
|
+
foley(
|
|
1174
|
+
"eat_crunch",
|
|
1175
|
+
[
|
|
1176
|
+
...sceneMany(
|
|
1177
|
+
4,
|
|
1178
|
+
() => sceneNoise({
|
|
1179
|
+
type: "bandpass",
|
|
1180
|
+
f: [1800, 3200],
|
|
1181
|
+
q: 1.5,
|
|
1182
|
+
d: [0.02, 0.04],
|
|
1183
|
+
vol: [0.12, 0.2],
|
|
1184
|
+
delay: [0, 0.12]
|
|
1185
|
+
})
|
|
1186
|
+
)
|
|
1187
|
+
],
|
|
1188
|
+
"a bite of something crunchy"
|
|
1189
|
+
),
|
|
1190
|
+
foley(
|
|
1191
|
+
"eat_chew",
|
|
1192
|
+
[
|
|
1193
|
+
sceneNoise({
|
|
1194
|
+
type: "lowpass",
|
|
1195
|
+
f: [450, 600],
|
|
1196
|
+
a: 0.03,
|
|
1197
|
+
d: [0.1, 0.14],
|
|
1198
|
+
vol: [0.12, 0.16]
|
|
1199
|
+
}),
|
|
1200
|
+
sceneNoise({
|
|
1201
|
+
type: "bandpass",
|
|
1202
|
+
f: [1100, 1400],
|
|
1203
|
+
q: 2,
|
|
1204
|
+
d: 0.04,
|
|
1205
|
+
vol: 0.04,
|
|
1206
|
+
delay: [0.03, 0.06]
|
|
1207
|
+
})
|
|
1208
|
+
],
|
|
1209
|
+
"chewing"
|
|
1210
|
+
),
|
|
1211
|
+
foley(
|
|
1212
|
+
"bandage_wrap",
|
|
1213
|
+
[
|
|
1214
|
+
sceneNoise({
|
|
1215
|
+
type: "bandpass",
|
|
1216
|
+
f: [1400, 1800],
|
|
1217
|
+
f2: 2400,
|
|
1218
|
+
q: 1,
|
|
1219
|
+
a: 0.04,
|
|
1220
|
+
d: [0.3, 0.4],
|
|
1221
|
+
vol: [0.12, 0.16]
|
|
1222
|
+
})
|
|
1223
|
+
],
|
|
1224
|
+
"a bandage unrolled round a limb"
|
|
1225
|
+
),
|
|
1226
|
+
foley(
|
|
1227
|
+
"pills_shake",
|
|
1228
|
+
[
|
|
1229
|
+
...sceneMany(
|
|
1230
|
+
8,
|
|
1231
|
+
() => sceneTone({
|
|
1232
|
+
f: [2400, 3600],
|
|
1233
|
+
d: 0.015,
|
|
1234
|
+
vol: [0.03, 0.05],
|
|
1235
|
+
delay: [0, 0.25]
|
|
1236
|
+
})
|
|
1237
|
+
),
|
|
1238
|
+
sceneNoise({ type: "bandpass", f: [1500, 1900], q: 2, d: 0.25, vol: 0.05 })
|
|
1239
|
+
],
|
|
1240
|
+
"pills shaken in their bottle"
|
|
1241
|
+
),
|
|
1242
|
+
foley(
|
|
1243
|
+
"medkit_use",
|
|
1244
|
+
[
|
|
1245
|
+
...click(1700, 0.24),
|
|
1246
|
+
sceneNoise({
|
|
1247
|
+
type: "bandpass",
|
|
1248
|
+
f: [1e3, 1400],
|
|
1249
|
+
q: 1,
|
|
1250
|
+
a: 0.03,
|
|
1251
|
+
d: [0.25, 0.32],
|
|
1252
|
+
vol: [0.08, 0.12],
|
|
1253
|
+
delay: [0.05, 0.08]
|
|
1254
|
+
})
|
|
1255
|
+
],
|
|
1256
|
+
"a first aid kit opened and rummaged"
|
|
1257
|
+
),
|
|
1258
|
+
foley("flashlight_click", click(2600, 0.3), "the switch of a flashlight")
|
|
1259
|
+
];
|
|
1260
|
+
var FOLEY_BANK = {
|
|
1261
|
+
id: "foley",
|
|
1262
|
+
sounds: [...LEAF_FOLEY, ...ITEM_FOLEY]
|
|
1263
|
+
};
|
|
300
1264
|
var TAKES = [
|
|
301
1265
|
{ f: 1, t: 1, v: 1 },
|
|
302
1266
|
{ f: 1.08, t: 0.9, v: 0.92 },
|
|
@@ -724,7 +1688,7 @@ var GameAnimalsThree = (() => {
|
|
|
724
1688
|
}
|
|
725
1689
|
};
|
|
726
1690
|
|
|
727
|
-
// ../game-shapes/dist/chunk-
|
|
1691
|
+
// ../game-shapes/dist/chunk-M5N2SHNL.js
|
|
728
1692
|
function canonicalJson(value) {
|
|
729
1693
|
if (value === null) return "null";
|
|
730
1694
|
if (typeof value === "number") return Object.is(value, -0) ? "-0" : Number.isFinite(value) ? String(value) : JSON.stringify(String(value));
|
|
@@ -1971,8 +2935,8 @@ var GameAnimalsThree = (() => {
|
|
|
1971
2935
|
groups: []
|
|
1972
2936
|
};
|
|
1973
2937
|
}
|
|
1974
|
-
function make(
|
|
1975
|
-
switch (kind) {
|
|
2938
|
+
function make(p) {
|
|
2939
|
+
switch (p.kind) {
|
|
1976
2940
|
case "box": {
|
|
1977
2941
|
const size = p.size ?? [1, 1, 1];
|
|
1978
2942
|
const segments = p.segments ?? [1, 1, 1];
|
|
@@ -2001,7 +2965,7 @@ var GameAnimalsThree = (() => {
|
|
|
2001
2965
|
case "mesh":
|
|
2002
2966
|
return mesh(p);
|
|
2003
2967
|
default:
|
|
2004
|
-
throw new Error(`game-shapes: unknown primitive kind "${String(kind)}"`);
|
|
2968
|
+
throw new Error(`game-shapes: unknown primitive kind "${String(p.kind)}"`);
|
|
2005
2969
|
}
|
|
2006
2970
|
}
|
|
2007
2971
|
var templates = /* @__PURE__ */ new Map();
|
|
@@ -2009,7 +2973,7 @@ var GameAnimalsThree = (() => {
|
|
|
2009
2973
|
var stats = { hits: 0, misses: 0 };
|
|
2010
2974
|
function buildPrimitive(node, options = {}) {
|
|
2011
2975
|
const parameters = primitiveParameters(node, options);
|
|
2012
|
-
if (node.kind === "mesh" || templateLimit === 0) return make(node
|
|
2976
|
+
if (node.kind === "mesh" || templateLimit === 0) return make({ ...node, ...parameters });
|
|
2013
2977
|
const key = `${node.kind}:${canonicalJson(parameters)}`;
|
|
2014
2978
|
const cached = templates.get(key);
|
|
2015
2979
|
if (cached) {
|
|
@@ -2019,7 +2983,7 @@ var GameAnimalsThree = (() => {
|
|
|
2019
2983
|
return cached;
|
|
2020
2984
|
}
|
|
2021
2985
|
stats.misses++;
|
|
2022
|
-
const built2 = make(node
|
|
2986
|
+
const built2 = make({ ...node, ...parameters });
|
|
2023
2987
|
templates.set(key, built2);
|
|
2024
2988
|
if (templates.size > templateLimit) templates.delete(templates.keys().next().value);
|
|
2025
2989
|
return built2;
|