/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { WebAudioFontPlayer } from './WebAudioFontPlayer.js' import * as instr from './instruments_FluidR3_GM_sf2_file.js' import * as perc from './percussion_FluidR3_GM_sf2_file.js' export const instrMap: Map = new Map([ [0, instr._tone_0000_FluidR3_GM_sf2_file], [1, instr._tone_0010_FluidR3_GM_sf2_file], [2, instr._tone_0020_FluidR3_GM_sf2_file], [3, instr._tone_0030_FluidR3_GM_sf2_file], [4, instr._tone_0040_FluidR3_GM_sf2_file], [5, instr._tone_0050_FluidR3_GM_sf2_file], [6, instr._tone_0060_FluidR3_GM_sf2_file], [7, instr._tone_0070_FluidR3_GM_sf2_file], [8, instr._tone_0080_FluidR3_GM_sf2_file], [9, instr._tone_0090_FluidR3_GM_sf2_file], [10, instr._tone_0100_FluidR3_GM_sf2_file], [11, instr._tone_0110_FluidR3_GM_sf2_file], [12, instr._tone_0120_FluidR3_GM_sf2_file], [13, instr._tone_0130_FluidR3_GM_sf2_file], [14, instr._tone_0140_FluidR3_GM_sf2_file], [15, instr._tone_0150_FluidR3_GM_sf2_file], [16, instr._tone_0160_FluidR3_GM_sf2_file], [17, instr._tone_0170_FluidR3_GM_sf2_file], [18, instr._tone_0180_FluidR3_GM_sf2_file], [19, instr._tone_0190_FluidR3_GM_sf2_file], [20, instr._tone_0200_FluidR3_GM_sf2_file], [21, instr._tone_0210_FluidR3_GM_sf2_file], [22, instr._tone_0220_FluidR3_GM_sf2_file], [23, instr._tone_0230_FluidR3_GM_sf2_file], [24, instr._tone_0240_FluidR3_GM_sf2_file], [25, instr._tone_0250_FluidR3_GM_sf2_file], [26, instr._tone_0260_FluidR3_GM_sf2_file], [27, instr._tone_0270_FluidR3_GM_sf2_file], [28, instr._tone_0280_FluidR3_GM_sf2_file], [29, instr._tone_0290_FluidR3_GM_sf2_file], [30, instr._tone_0300_FluidR3_GM_sf2_file], [31, instr._tone_0310_FluidR3_GM_sf2_file], [32, instr._tone_0320_FluidR3_GM_sf2_file], [33, instr._tone_0330_FluidR3_GM_sf2_file], [34, instr._tone_0340_FluidR3_GM_sf2_file], [35, instr._tone_0350_FluidR3_GM_sf2_file], [36, instr._tone_0360_FluidR3_GM_sf2_file], [37, instr._tone_0370_FluidR3_GM_sf2_file], [38, instr._tone_0380_FluidR3_GM_sf2_file], [39, instr._tone_0390_FluidR3_GM_sf2_file], [40, instr._tone_0400_FluidR3_GM_sf2_file], [41, instr._tone_0410_FluidR3_GM_sf2_file], [42, instr._tone_0420_FluidR3_GM_sf2_file], [43, instr._tone_0430_FluidR3_GM_sf2_file], [44, instr._tone_0440_FluidR3_GM_sf2_file], [45, instr._tone_0450_FluidR3_GM_sf2_file], [46, instr._tone_0460_FluidR3_GM_sf2_file], [47, instr._tone_0470_FluidR3_GM_sf2_file], [48, instr._tone_0480_FluidR3_GM_sf2_file], [49, instr._tone_0490_FluidR3_GM_sf2_file], [50, instr._tone_0500_FluidR3_GM_sf2_file], [51, instr._tone_0510_FluidR3_GM_sf2_file], [52, instr._tone_0520_FluidR3_GM_sf2_file], [53, instr._tone_0530_FluidR3_GM_sf2_file], [54, instr._tone_0540_FluidR3_GM_sf2_file], [55, instr._tone_0550_FluidR3_GM_sf2_file], [56, instr._tone_0560_FluidR3_GM_sf2_file], [57, instr._tone_0570_FluidR3_GM_sf2_file], [58, instr._tone_0580_FluidR3_GM_sf2_file], [59, instr._tone_0590_FluidR3_GM_sf2_file], [60, instr._tone_0600_FluidR3_GM_sf2_file], [61, instr._tone_0610_FluidR3_GM_sf2_file], [62, instr._tone_0620_FluidR3_GM_sf2_file], [63, instr._tone_0630_FluidR3_GM_sf2_file], [64, instr._tone_0640_FluidR3_GM_sf2_file], [65, instr._tone_0650_FluidR3_GM_sf2_file], [66, instr._tone_0660_FluidR3_GM_sf2_file], [67, instr._tone_0670_FluidR3_GM_sf2_file], [68, instr._tone_0680_FluidR3_GM_sf2_file], [69, instr._tone_0690_FluidR3_GM_sf2_file], [70, instr._tone_0700_FluidR3_GM_sf2_file], [71, instr._tone_0710_FluidR3_GM_sf2_file], [72, instr._tone_0720_FluidR3_GM_sf2_file], [73, instr._tone_0730_FluidR3_GM_sf2_file], [74, instr._tone_0740_FluidR3_GM_sf2_file], [75, instr._tone_0750_FluidR3_GM_sf2_file], [76, instr._tone_0760_FluidR3_GM_sf2_file], [77, instr._tone_0770_FluidR3_GM_sf2_file], [78, instr._tone_0780_FluidR3_GM_sf2_file], [79, instr._tone_0790_FluidR3_GM_sf2_file], [80, instr._tone_0800_FluidR3_GM_sf2_file], [81, instr._tone_0810_FluidR3_GM_sf2_file], [82, instr._tone_0820_FluidR3_GM_sf2_file], [83, instr._tone_0830_FluidR3_GM_sf2_file], [84, instr._tone_0840_FluidR3_GM_sf2_file], [85, instr._tone_0850_FluidR3_GM_sf2_file], [86, instr._tone_0860_FluidR3_GM_sf2_file], [87, instr._tone_0870_FluidR3_GM_sf2_file], [88, instr._tone_0880_FluidR3_GM_sf2_file], [89, instr._tone_0890_FluidR3_GM_sf2_file], [90, instr._tone_0900_FluidR3_GM_sf2_file], [91, instr._tone_0910_FluidR3_GM_sf2_file], [92, instr._tone_0920_FluidR3_GM_sf2_file], [93, instr._tone_0930_FluidR3_GM_sf2_file], [94, instr._tone_0940_FluidR3_GM_sf2_file], [95, instr._tone_0950_FluidR3_GM_sf2_file], [96, instr._tone_0960_FluidR3_GM_sf2_file], [97, instr._tone_0970_FluidR3_GM_sf2_file], [98, instr._tone_0980_FluidR3_GM_sf2_file], [99, instr._tone_0990_FluidR3_GM_sf2_file], [100, instr._tone_1000_FluidR3_GM_sf2_file], [101, instr._tone_1010_FluidR3_GM_sf2_file], [102, instr._tone_1020_FluidR3_GM_sf2_file], [103, instr._tone_1030_FluidR3_GM_sf2_file], [104, instr._tone_1040_FluidR3_GM_sf2_file], [105, instr._tone_1050_FluidR3_GM_sf2_file], [106, instr._tone_1060_FluidR3_GM_sf2_file], [107, instr._tone_1070_FluidR3_GM_sf2_file], [108, instr._tone_1080_FluidR3_GM_sf2_file], [109, instr._tone_1090_FluidR3_GM_sf2_file], [110, instr._tone_1100_FluidR3_GM_sf2_file], [111, instr._tone_1110_FluidR3_GM_sf2_file], [112, instr._tone_1120_FluidR3_GM_sf2_file], [113, instr._tone_1130_FluidR3_GM_sf2_file], [114, instr._tone_1140_FluidR3_GM_sf2_file], [115, instr._tone_1150_FluidR3_GM_sf2_file], [116, instr._tone_1160_FluidR3_GM_sf2_file], [117, instr._tone_1170_FluidR3_GM_sf2_file], [118, instr._tone_1180_FluidR3_GM_sf2_file], [119, instr._tone_1190_FluidR3_GM_sf2_file], [120, instr._tone_1200_FluidR3_GM_sf2_file], [121, instr._tone_1210_FluidR3_GM_sf2_file], [122, instr._tone_1220_FluidR3_GM_sf2_file], [123, instr._tone_1230_FluidR3_GM_sf2_file], [124, instr._tone_1240_FluidR3_GM_sf2_file], [125, instr._tone_1250_FluidR3_GM_sf2_file], [126, instr._tone_1260_FluidR3_GM_sf2_file], [127, instr._tone_1270_FluidR3_GM_sf2_file] ]) export const percMap: Map = new Map([ [35, perc._drum_35_0_FluidR3_GM_sf2_file], [36, perc._drum_36_0_FluidR3_GM_sf2_file], [37, perc._drum_37_0_FluidR3_GM_sf2_file], [38, perc._drum_38_0_FluidR3_GM_sf2_file], [39, perc._drum_39_0_FluidR3_GM_sf2_file], [40, perc._drum_40_0_FluidR3_GM_sf2_file], [41, perc._drum_41_0_FluidR3_GM_sf2_file], [42, perc._drum_42_0_FluidR3_GM_sf2_file], [43, perc._drum_43_0_FluidR3_GM_sf2_file], [44, perc._drum_44_0_FluidR3_GM_sf2_file], [45, perc._drum_45_0_FluidR3_GM_sf2_file], [46, perc._drum_46_0_FluidR3_GM_sf2_file], [47, perc._drum_47_0_FluidR3_GM_sf2_file], [48, perc._drum_48_0_FluidR3_GM_sf2_file], [49, perc._drum_49_0_FluidR3_GM_sf2_file], [50, perc._drum_50_0_FluidR3_GM_sf2_file], [51, perc._drum_51_0_FluidR3_GM_sf2_file], [52, perc._drum_52_0_FluidR3_GM_sf2_file], [53, perc._drum_53_0_FluidR3_GM_sf2_file], [54, perc._drum_54_0_FluidR3_GM_sf2_file], [55, perc._drum_55_0_FluidR3_GM_sf2_file], [56, perc._drum_56_0_FluidR3_GM_sf2_file], [57, perc._drum_57_0_FluidR3_GM_sf2_file], [58, perc._drum_58_0_FluidR3_GM_sf2_file], [59, perc._drum_59_0_FluidR3_GM_sf2_file], [60, perc._drum_60_0_FluidR3_GM_sf2_file], [61, perc._drum_61_0_FluidR3_GM_sf2_file], [62, perc._drum_62_0_FluidR3_GM_sf2_file], [63, perc._drum_63_0_FluidR3_GM_sf2_file], [64, perc._drum_64_0_FluidR3_GM_sf2_file], [65, perc._drum_65_0_FluidR3_GM_sf2_file], [66, perc._drum_66_0_FluidR3_GM_sf2_file], [67, perc._drum_67_0_FluidR3_GM_sf2_file], [68, perc._drum_68_0_FluidR3_GM_sf2_file], [69, perc._drum_69_0_FluidR3_GM_sf2_file], [70, perc._drum_70_0_FluidR3_GM_sf2_file], [71, perc._drum_71_0_FluidR3_GM_sf2_file], [72, perc._drum_72_0_FluidR3_GM_sf2_file], [73, perc._drum_73_0_FluidR3_GM_sf2_file], [74, perc._drum_74_0_FluidR3_GM_sf2_file], [75, perc._drum_75_0_FluidR3_GM_sf2_file], [76, perc._drum_76_0_FluidR3_GM_sf2_file], [77, perc._drum_77_0_FluidR3_GM_sf2_file], [78, perc._drum_78_0_FluidR3_GM_sf2_file], [79, perc._drum_79_0_FluidR3_GM_sf2_file], [80, perc._drum_80_0_FluidR3_GM_sf2_file], [81, perc._drum_81_0_FluidR3_GM_sf2_file] ]) class Player { player: any audioContext: AudioContext constructor () { this.player = new WebAudioFontPlayer() this.audioContext = new window.AudioContext() this.player.loader.decodeAfterLoading(this.audioContext, '_tone_0000_FluidR3_GM_sf2_file') for (let i = 0; i < 128; i++) { this.player.loader.decodeAfterLoading(this.audioContext, `_tone_${i.toString().padStart(3, '0')}0_FluidR3_GM_sf2_file`) } for (let i = 35; i <= 81; i++) { this.player.loader.decodeAfterLoading(this.audioContext, `_drum_${i}_0_FluidR3_GM_sf2_file`) } } } let singleton: Player | undefined export const waf = (): Player => { if (singleton === undefined) { singleton = new Player() } return singleton }