From 541b838e6c0713cf44cf692babb19a803b5d2d59 Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sat, 8 Mar 2025 23:09:15 +0800 Subject: [PATCH 1/8] Create 163music.js --- extensions/CHCAT1320/163music.js | 499 +++++++++++++++++++++++++++++++ 1 file changed, 499 insertions(+) create mode 100644 extensions/CHCAT1320/163music.js diff --git a/extensions/CHCAT1320/163music.js b/extensions/CHCAT1320/163music.js new file mode 100644 index 0000000000..dea12a05a4 --- /dev/null +++ b/extensions/CHCAT1320/163music.js @@ -0,0 +1,499 @@ +// Name:163music +// ID: chcat163music +// Description: 有关网易云音乐的操作 +// By: Unknown +// By: CHCAT1320 +// License: MIT + +const icon = "data:image/png;base64,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" +class MusicExtension { + constructor(runtime) { + this.runtime = runtime; + this.audioElement = null; + } + + getInfo() { + return { + id: '163music', + name: '网易云音乐', + color1: "#DD001B", + blockIconURI:icon, + blocks: [ + { + opcode: '搜索音乐', + blockType: Scratch.BlockType.REPORTER, + text: '搜索音乐 [name]', + arguments: { + name: { + type: Scratch.ArgumentType.STRING, + defaultValue: "Let's live" + } + } + }, + { + opcode: '获取音乐', + blockType: Scratch.BlockType.REPORTER, + text: '获取音乐url [id]', + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '1952657896' + } + } + }, + { + opcode: '获取歌词', + blockType: Scratch.BlockType.REPORTER, + text: '获取 [id] 的歌词', + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '1952657896' + } + } + }, + { + opcode: '获取翻译歌词', + blockType: Scratch.BlockType.REPORTER, + text: '获取 [id] 的翻译歌词', + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '1952657896' + } + } + }, + { + opcode: '获取封面', + blockType: Scratch.BlockType.REPORTER, + text: '获取 [id] 的封面', + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '1952657896' + } + } + }, + { + opcode: '播放音乐', + blockType: Scratch.BlockType.COMMAND, + text: '从 [url] 播放音乐', + arguments: { + url: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'https://example.com/music.mp3' + } + } + }, + { + blockType: Scratch.BlockType.LABEL, + text: '电台' + }, + //电台部分 + { + opcode: '获取电台曲目', + blockType: Scratch.BlockType.REPORTER, + text: '获取电台节目 [id]', + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '350080224' + } + } + }, + { + opcode: '网页ID转音乐ID', + blockType: Scratch.BlockType.REPORTER, + text: '电台音乐ID转音乐ID [id]', + hideFromPalette: true, + arguments: { + id: { + type: Scratch.ArgumentType.STRING, + defaultValue: '2521984465' + } + } + }, + //控制部分 + { + blockType: Scratch.BlockType.LABEL, + text: '控制' + }, + { + opcode: '恢复音乐', + blockType: Scratch.BlockType.COMMAND, + text: '▶️ 播放音乐' + }, + { + opcode: '暂停音乐', + blockType: Scratch.BlockType.COMMAND, + text: '⏸ 暂停音乐' + }, + { + opcode: '停止音乐', + blockType: Scratch.BlockType.COMMAND, + text: '⏹ 停止音乐' + }, + { + opcode: '跳转到时间', + blockType: Scratch.BlockType.COMMAND, + text: '跳转到时间 [time] 秒', + arguments: { + time: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 0 + } + } + }, + { + opcode: '调整音量', + blockType: Scratch.BlockType.COMMAND, + text: '将音量调到 [volume]', + arguments: { + volume: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 100 + } + } + }, + //信息部分 + { + blockType: Scratch.BlockType.LABEL, + text: '信息' + }, + { + opcode: '是否正在播放音乐', + blockType: Scratch.BlockType.BOOLEAN, + text: '是否正在播放音乐?' + }, + { + opcode: '获取播放时间', + blockType: Scratch.BlockType.REPORTER, + text: '音乐播放时间(秒)' + }, + { + opcode: '获取音乐总时长', + blockType: Scratch.BlockType.REPORTER, + text: '音乐总时长(秒)' + }, + { + opcode: '获取当前时间歌词', + blockType: Scratch.BlockType.REPORTER, + text: '[lyricsText] 在 [currentTime] 时显示', + arguments: { + lyricsText: { + type: Scratch.ArgumentType.STRING, + defaultValue: '歌词' + }, + currentTime: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '时间' + } + } + }, + { + opcode: '获取当前时间歌词在第几行', + blockType: Scratch.BlockType.REPORTER, + text: '[lyricsText] 在 [currentTime] 时是第几行', + arguments: { + lyricsText: { + type: Scratch.ArgumentType.STRING, + defaultValue: '歌词' + }, + currentTime: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '时间' + } + } + }, + { + opcode: '获取第几行的歌词时间', + blockType: Scratch.BlockType.REPORTER, + text: '[lyricsText] 在[linenumber]行 是第几秒 ', + arguments: { + lyricsText: { + type: Scratch.ArgumentType.STRING, + defaultValue: '歌词' + }, + linenumber: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '行数' + } + } + }, + ], + }; + } + //音乐部分 + 搜索音乐(args) { + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/search?keywords=${args.name}`; + fetch(url) + .then(response => response.json()) + .then(data => { + const songs = data.result.songs; + function extractSongInfo(songs) { + return songs.map(song => { + const artists = song.artists; + const firstArtistName = artists.length > 0 ? artists[0].name : ''; + return { id: song.id, name: song.name, artists: firstArtistName }; + }); + } + const songInfo = extractSongInfo(songs); + const songInfoString = JSON.stringify(songInfo); + resolve(songInfoString); + }) + .catch(error => { + reject(error); + }); + }); + } + + 获取音乐(args) { + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/song/url?id=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + function getMusicUrl(data) { + return new Promise((resolve, reject) => { + if (data && data.code === 200 && data.data && data.data.length > 0) { + resolve(data.data[0].url.replace(/^http:/, 'https:')); + } else { + reject(new Error('无法获取音乐下载链接')); + } + }); + } + const songInfo = getMusicUrl(data); + resolve(songInfo); + }) + .catch(error => { + reject(error); + }); + }); + } + 获取封面(args) { + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/song/detail?ids=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + const picUrl = data.songs[0].al.picUrl; + resolve(picUrl); + }) + .catch(error => { + reject(error); + }); + }); + } + + 播放音乐(args) { + const url = args.url; + if (this.audioElement) { + this.audioElement.pause(); + } + + this.audioElement = new Audio(url); + this.audioElement.play(); + } + 获取歌词(args) { + const cacheKey = `lyrics_${args.id}`; + const cachedLyrics = localStorage.getItem(cacheKey); + if (cachedLyrics) { + return Promise.resolve(cachedLyrics); + } + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/lyric?id=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + const lrc = data.lrc.lyric; + localStorage.setItem(cacheKey, lrc); + resolve(lrc); + }) + .catch(error => { + reject(error); + }); + }); + } + 获取翻译歌词(args) { + const cacheKey = `tranlates_lyrics_${args.id}`; + const cachedLyrics = localStorage.getItem(cacheKey); + if (cachedLyrics) { + return Promise.resolve(cachedLyrics); + } + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/lyric?id=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + const lrc = data.tlyric.lyric; + localStorage.setItem(cacheKey, lrc); + resolve(lrc); + }) + .catch(error => { + reject(error); + }); + }); + } + + //电台部分 + 获取电台曲目(args) { + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/dj/program?rid=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + if (data && data.code === 200 && data.programs && data.programs.length > 0) { + const formattedData = data.programs.map(program => ({ + name: program.mainSong.name, + id: program.mainSong.id + })); + resolve(JSON.stringify(formattedData)); + } else { + reject(new Error('无法获取电台信息')); + } + }) + .catch(error => { + reject(error); + }); + }); + } + 网页ID转音乐ID(args) { + return new Promise((resolve, reject) => { + const url = `https://ilygfw-musicapi.voyage200.top/dj/program/detail?id=${args.id}`; + fetch(url) + .then(response => response.json()) + .then(data => { + const songId = data.program.mainSong.id; + resolve(songId); + }) + .catch(error => { + reject(error); + }); + }); + } + //控制部分 + 暂停音乐() { + if (this.audioElement) { + this.audioElement.pause(); + } + } + + 恢复音乐() { + if (this.audioElement) { + this.audioElement.play(); + } + } + + 停止音乐() { + if (this.audioElement) { + this.audioElement.pause(); + this.audioElement = null; + } + } + 跳转到时间(args) { + const time = args.time; + if (this.audioElement) { + this.audioElement.currentTime = time; + } + } + 调整音量(args) { + if (this.audioElement) { + const volumePercent = args.volume; + if (volumePercent >= 0 && volumePercent <= 100) { + const volume = volumePercent / 100; + this.audioElement.volume = volume; + } + } + } + //信息部分 + 是否正在播放音乐() { + if (this.audioElement) { + if (!this.audioElement.paused && !this.audioElement.ended) { + return true; + } else if (this.audioElement.paused) { + return "pause"; + } else { + return false; + } + } else { + return false; + } + } + + 获取播放时间() { + if (this.audioElement) { + return this.audioElement.currentTime; + } + return 0; + } + + 获取音乐总时长() { + if (this.audioElement) { + return this.audioElement.duration; + } + return 0; + } + 获取当前时间歌词(args) { + const lines = args.lyricsText.trim().split('\n'); + const lyrics = []; + + for (let line of lines) { + const matches = line.match(/\[(\d+):(\d+\.\d+)\](.*)/); + if (matches) { + const time = parseFloat(matches[1]) * 60 + parseFloat(matches[2]); + const text = matches[3].trim(); + lyrics.push({ time, text }); + } + } + + for (let i = lyrics.length - 1; i >= 0; i--) { + const { time, text } = lyrics[i]; + if (time <= args.currentTime) { + return text; + } + } + return ''; + } + + 获取当前时间歌词在第几行(args) { + const lines = args.lyricsText.trim().split('\n'); + const currentTime = args.currentTime; + + for (let i = lines.length - 1; i >= 0; i--) { + const matches = lines[i].match(/\[(\d+):(\d+\.\d+)\](.*)/); + if (matches) { + const time = parseFloat(matches[1]) * 60 + parseFloat(matches[2]); + if (time <= currentTime) { + return i + 1; + } + } + } + return 0; + } + 获取第几行的歌词时间(args){ + const lines = args.lyricsText.trim().split('\n'); + if (!lines || lines.length === 0) { + return '0'; + } + if (args.linenumber < 0 || args.linenumber >= lines.length) { + return '0'; + } + const line = lines[args.linenumber]; + if (!line) { + return '0'; + } + const matches = line.match(/\[(\d+):(\d+\.\d+)\](.*)/); + if (!matches) { + return '0'; + } + const minutes = parseFloat(matches[1]); + const seconds = parseFloat(matches[2]); + if (isNaN(minutes) || isNaN(seconds)) { + return '0'; + } + return minutes * 60 + seconds; + } + } + + Scratch.extensions.register(new MusicExtension()); \ No newline at end of file From 27921254f92c23b960efe2052ff0f92f03f615ee Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sat, 8 Mar 2025 23:22:52 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20163music.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extensions/CHCAT1320/163music.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/CHCAT1320/163music.js b/extensions/CHCAT1320/163music.js index dea12a05a4..158f83f9f3 100644 --- a/extensions/CHCAT1320/163music.js +++ b/extensions/CHCAT1320/163music.js @@ -1,5 +1,5 @@ // Name:163music -// ID: chcat163music +// ID: chcat1320Music163 // Description: 有关网易云音乐的操作 // By: Unknown // By: CHCAT1320 From 703ae2f3bb1386236ffb18c39c1f5014354eb547 Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sat, 8 Mar 2025 23:28:48 +0800 Subject: [PATCH 3/8] Update 163music.js --- extensions/CHCAT1320/163music.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/CHCAT1320/163music.js b/extensions/CHCAT1320/163music.js index 158f83f9f3..6cba1d7702 100644 --- a/extensions/CHCAT1320/163music.js +++ b/extensions/CHCAT1320/163music.js @@ -1,6 +1,6 @@ // Name:163music // ID: chcat1320Music163 -// Description: 有关网易云音乐的操作 +// Description: 有关网易云音乐的播放和下载操作 // By: Unknown // By: CHCAT1320 // License: MIT From 633f1375933b3cae87ee08f235c297152eb31bf8 Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sat, 15 Mar 2025 23:02:53 +0800 Subject: [PATCH 4/8] add new extensions --- extensions/CHCAT1320/163music.js | 499 ------------------------------- extensions/CHCAT1320/midi.js | 108 +++++++ 2 files changed, 108 insertions(+), 499 deletions(-) delete mode 100644 extensions/CHCAT1320/163music.js create mode 100644 extensions/CHCAT1320/midi.js diff --git a/extensions/CHCAT1320/163music.js b/extensions/CHCAT1320/163music.js deleted file mode 100644 index 6cba1d7702..0000000000 --- a/extensions/CHCAT1320/163music.js +++ /dev/null @@ -1,499 +0,0 @@ -// Name:163music -// ID: chcat1320Music163 -// Description: 有关网易云音乐的播放和下载操作 -// By: Unknown -// By: CHCAT1320 -// License: MIT - -const icon = "data:image/png;base64,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" -class MusicExtension { - constructor(runtime) { - this.runtime = runtime; - this.audioElement = null; - } - - getInfo() { - return { - id: '163music', - name: '网易云音乐', - color1: "#DD001B", - blockIconURI:icon, - blocks: [ - { - opcode: '搜索音乐', - blockType: Scratch.BlockType.REPORTER, - text: '搜索音乐 [name]', - arguments: { - name: { - type: Scratch.ArgumentType.STRING, - defaultValue: "Let's live" - } - } - }, - { - opcode: '获取音乐', - blockType: Scratch.BlockType.REPORTER, - text: '获取音乐url [id]', - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '1952657896' - } - } - }, - { - opcode: '获取歌词', - blockType: Scratch.BlockType.REPORTER, - text: '获取 [id] 的歌词', - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '1952657896' - } - } - }, - { - opcode: '获取翻译歌词', - blockType: Scratch.BlockType.REPORTER, - text: '获取 [id] 的翻译歌词', - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '1952657896' - } - } - }, - { - opcode: '获取封面', - blockType: Scratch.BlockType.REPORTER, - text: '获取 [id] 的封面', - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '1952657896' - } - } - }, - { - opcode: '播放音乐', - blockType: Scratch.BlockType.COMMAND, - text: '从 [url] 播放音乐', - arguments: { - url: { - type: Scratch.ArgumentType.STRING, - defaultValue: 'https://example.com/music.mp3' - } - } - }, - { - blockType: Scratch.BlockType.LABEL, - text: '电台' - }, - //电台部分 - { - opcode: '获取电台曲目', - blockType: Scratch.BlockType.REPORTER, - text: '获取电台节目 [id]', - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '350080224' - } - } - }, - { - opcode: '网页ID转音乐ID', - blockType: Scratch.BlockType.REPORTER, - text: '电台音乐ID转音乐ID [id]', - hideFromPalette: true, - arguments: { - id: { - type: Scratch.ArgumentType.STRING, - defaultValue: '2521984465' - } - } - }, - //控制部分 - { - blockType: Scratch.BlockType.LABEL, - text: '控制' - }, - { - opcode: '恢复音乐', - blockType: Scratch.BlockType.COMMAND, - text: '▶️ 播放音乐' - }, - { - opcode: '暂停音乐', - blockType: Scratch.BlockType.COMMAND, - text: '⏸ 暂停音乐' - }, - { - opcode: '停止音乐', - blockType: Scratch.BlockType.COMMAND, - text: '⏹ 停止音乐' - }, - { - opcode: '跳转到时间', - blockType: Scratch.BlockType.COMMAND, - text: '跳转到时间 [time] 秒', - arguments: { - time: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: 0 - } - } - }, - { - opcode: '调整音量', - blockType: Scratch.BlockType.COMMAND, - text: '将音量调到 [volume]', - arguments: { - volume: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: 100 - } - } - }, - //信息部分 - { - blockType: Scratch.BlockType.LABEL, - text: '信息' - }, - { - opcode: '是否正在播放音乐', - blockType: Scratch.BlockType.BOOLEAN, - text: '是否正在播放音乐?' - }, - { - opcode: '获取播放时间', - blockType: Scratch.BlockType.REPORTER, - text: '音乐播放时间(秒)' - }, - { - opcode: '获取音乐总时长', - blockType: Scratch.BlockType.REPORTER, - text: '音乐总时长(秒)' - }, - { - opcode: '获取当前时间歌词', - blockType: Scratch.BlockType.REPORTER, - text: '[lyricsText] 在 [currentTime] 时显示', - arguments: { - lyricsText: { - type: Scratch.ArgumentType.STRING, - defaultValue: '歌词' - }, - currentTime: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '时间' - } - } - }, - { - opcode: '获取当前时间歌词在第几行', - blockType: Scratch.BlockType.REPORTER, - text: '[lyricsText] 在 [currentTime] 时是第几行', - arguments: { - lyricsText: { - type: Scratch.ArgumentType.STRING, - defaultValue: '歌词' - }, - currentTime: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '时间' - } - } - }, - { - opcode: '获取第几行的歌词时间', - blockType: Scratch.BlockType.REPORTER, - text: '[lyricsText] 在[linenumber]行 是第几秒 ', - arguments: { - lyricsText: { - type: Scratch.ArgumentType.STRING, - defaultValue: '歌词' - }, - linenumber: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '行数' - } - } - }, - ], - }; - } - //音乐部分 - 搜索音乐(args) { - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/search?keywords=${args.name}`; - fetch(url) - .then(response => response.json()) - .then(data => { - const songs = data.result.songs; - function extractSongInfo(songs) { - return songs.map(song => { - const artists = song.artists; - const firstArtistName = artists.length > 0 ? artists[0].name : ''; - return { id: song.id, name: song.name, artists: firstArtistName }; - }); - } - const songInfo = extractSongInfo(songs); - const songInfoString = JSON.stringify(songInfo); - resolve(songInfoString); - }) - .catch(error => { - reject(error); - }); - }); - } - - 获取音乐(args) { - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/song/url?id=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - function getMusicUrl(data) { - return new Promise((resolve, reject) => { - if (data && data.code === 200 && data.data && data.data.length > 0) { - resolve(data.data[0].url.replace(/^http:/, 'https:')); - } else { - reject(new Error('无法获取音乐下载链接')); - } - }); - } - const songInfo = getMusicUrl(data); - resolve(songInfo); - }) - .catch(error => { - reject(error); - }); - }); - } - 获取封面(args) { - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/song/detail?ids=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - const picUrl = data.songs[0].al.picUrl; - resolve(picUrl); - }) - .catch(error => { - reject(error); - }); - }); - } - - 播放音乐(args) { - const url = args.url; - if (this.audioElement) { - this.audioElement.pause(); - } - - this.audioElement = new Audio(url); - this.audioElement.play(); - } - 获取歌词(args) { - const cacheKey = `lyrics_${args.id}`; - const cachedLyrics = localStorage.getItem(cacheKey); - if (cachedLyrics) { - return Promise.resolve(cachedLyrics); - } - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/lyric?id=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - const lrc = data.lrc.lyric; - localStorage.setItem(cacheKey, lrc); - resolve(lrc); - }) - .catch(error => { - reject(error); - }); - }); - } - 获取翻译歌词(args) { - const cacheKey = `tranlates_lyrics_${args.id}`; - const cachedLyrics = localStorage.getItem(cacheKey); - if (cachedLyrics) { - return Promise.resolve(cachedLyrics); - } - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/lyric?id=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - const lrc = data.tlyric.lyric; - localStorage.setItem(cacheKey, lrc); - resolve(lrc); - }) - .catch(error => { - reject(error); - }); - }); - } - - //电台部分 - 获取电台曲目(args) { - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/dj/program?rid=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - if (data && data.code === 200 && data.programs && data.programs.length > 0) { - const formattedData = data.programs.map(program => ({ - name: program.mainSong.name, - id: program.mainSong.id - })); - resolve(JSON.stringify(formattedData)); - } else { - reject(new Error('无法获取电台信息')); - } - }) - .catch(error => { - reject(error); - }); - }); - } - 网页ID转音乐ID(args) { - return new Promise((resolve, reject) => { - const url = `https://ilygfw-musicapi.voyage200.top/dj/program/detail?id=${args.id}`; - fetch(url) - .then(response => response.json()) - .then(data => { - const songId = data.program.mainSong.id; - resolve(songId); - }) - .catch(error => { - reject(error); - }); - }); - } - //控制部分 - 暂停音乐() { - if (this.audioElement) { - this.audioElement.pause(); - } - } - - 恢复音乐() { - if (this.audioElement) { - this.audioElement.play(); - } - } - - 停止音乐() { - if (this.audioElement) { - this.audioElement.pause(); - this.audioElement = null; - } - } - 跳转到时间(args) { - const time = args.time; - if (this.audioElement) { - this.audioElement.currentTime = time; - } - } - 调整音量(args) { - if (this.audioElement) { - const volumePercent = args.volume; - if (volumePercent >= 0 && volumePercent <= 100) { - const volume = volumePercent / 100; - this.audioElement.volume = volume; - } - } - } - //信息部分 - 是否正在播放音乐() { - if (this.audioElement) { - if (!this.audioElement.paused && !this.audioElement.ended) { - return true; - } else if (this.audioElement.paused) { - return "pause"; - } else { - return false; - } - } else { - return false; - } - } - - 获取播放时间() { - if (this.audioElement) { - return this.audioElement.currentTime; - } - return 0; - } - - 获取音乐总时长() { - if (this.audioElement) { - return this.audioElement.duration; - } - return 0; - } - 获取当前时间歌词(args) { - const lines = args.lyricsText.trim().split('\n'); - const lyrics = []; - - for (let line of lines) { - const matches = line.match(/\[(\d+):(\d+\.\d+)\](.*)/); - if (matches) { - const time = parseFloat(matches[1]) * 60 + parseFloat(matches[2]); - const text = matches[3].trim(); - lyrics.push({ time, text }); - } - } - - for (let i = lyrics.length - 1; i >= 0; i--) { - const { time, text } = lyrics[i]; - if (time <= args.currentTime) { - return text; - } - } - return ''; - } - - 获取当前时间歌词在第几行(args) { - const lines = args.lyricsText.trim().split('\n'); - const currentTime = args.currentTime; - - for (let i = lines.length - 1; i >= 0; i--) { - const matches = lines[i].match(/\[(\d+):(\d+\.\d+)\](.*)/); - if (matches) { - const time = parseFloat(matches[1]) * 60 + parseFloat(matches[2]); - if (time <= currentTime) { - return i + 1; - } - } - } - return 0; - } - 获取第几行的歌词时间(args){ - const lines = args.lyricsText.trim().split('\n'); - if (!lines || lines.length === 0) { - return '0'; - } - if (args.linenumber < 0 || args.linenumber >= lines.length) { - return '0'; - } - const line = lines[args.linenumber]; - if (!line) { - return '0'; - } - const matches = line.match(/\[(\d+):(\d+\.\d+)\](.*)/); - if (!matches) { - return '0'; - } - const minutes = parseFloat(matches[1]); - const seconds = parseFloat(matches[2]); - if (isNaN(minutes) || isNaN(seconds)) { - return '0'; - } - return minutes * 60 + seconds; - } - } - - Scratch.extensions.register(new MusicExtension()); \ No newline at end of file diff --git a/extensions/CHCAT1320/midi.js b/extensions/CHCAT1320/midi.js new file mode 100644 index 0000000000..51668409c6 --- /dev/null +++ b/extensions/CHCAT1320/midi.js @@ -0,0 +1,108 @@ +// Name:MIDI Parser +// ID: midiParser +// Description: Parse MIDI files into JSON. +// By: CHCAT1320 +// License: MIT + + +// tonejs/midi +const MidiLibrary = ` +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;rn})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;ne)return o;s[r]>e?a=o:s[r]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()})); +//# sourceMappingURL=Midi.js.map +`; +class MidiParserExtension { + constructor(runtime) { + this.runtime = runtime; + this.notesData = []; + this.errorMessage = ''; + this.loadMidiLibrary(); + } + + loadMidiLibrary() { + try { + const script = document.createElement('script'); + script.textContent = MidiLibrary; // Embedded library code + document.head.appendChild(script); + } catch (error) { + this.errorMessage = 'Failed to load MIDI library: ' + error.message; + } + } + + getInfo() { + return { + id: 'midiParser', + name: 'MIDI Parser', + color1: '#4C97FF', + color2: '#337BCC', + color3: '#2C6CA3', + blocks: [ + { + opcode: 'parseMidiDataUrl', + blockType: Scratch.BlockType.REPORTER, + text: 'Parse MIDI Data URL [DATA_URL]', + arguments: { + DATA_URL: { + type: Scratch.ArgumentType.STRING, + defaultValue: '' + } + } + } + ] + }; + } + + parseMidiDataUrl(args) { + this.errorMessage = ''; + if (!window.Midi) { + return 'MIDI library failed to load'; + } + + const dataUrl = args.DATA_URL.trim(); + if (!dataUrl) { + return 'MIDI Data URL is empty'; + } + + try { + // Parse Data URL + const base64Data = dataUrl.split(',')[1]; + if (!base64Data) { + throw new Error('Invalid Data URL format'); + } + + // Decode Base64 data to ArrayBuffer + const binaryString = atob(base64Data); + const len = binaryString.length; + const buffer = new ArrayBuffer(len); + const view = new Uint8Array(buffer); + for (let i = 0; i < len; i++) { + view[i] = binaryString.charCodeAt(i); + } + + // Parse MIDI file + const midi = new window.Midi(buffer); + + // Store note information + this.notesData = []; + midi.tracks.forEach((track, trackIndex) => { + track.notes.forEach(note => { + this.notesData.push({ + track: trackIndex, + midiNumber: note.midi, + noteName: note.name, + startTime: note.time, + duration: note.duration, + velocity: note.velocity + }); + }); + }); + + this.notesData.sort((a, b) => a.startTime - b.startTime); + return JSON.stringify(this.notesData, null, 2); + } catch (error) { + return 'Error parsing MIDI file: ' + error.message; + } + } +} + +// Register extension +Scratch.extensions.register(new MidiParserExtension()); \ No newline at end of file From e5958e2107c6c24ad0f92e384910a11dac24292a Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sat, 15 Mar 2025 23:43:16 +0800 Subject: [PATCH 5/8] Update midi.js --- extensions/CHCAT1320/midi.js | 163 ++++++++++++++++++----------------- 1 file changed, 85 insertions(+), 78 deletions(-) diff --git a/extensions/CHCAT1320/midi.js b/extensions/CHCAT1320/midi.js index 51668409c6..fdd9088432 100644 --- a/extensions/CHCAT1320/midi.js +++ b/extensions/CHCAT1320/midi.js @@ -10,99 +10,106 @@ const MidiLibrary = ` !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;rn})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;ne)return o;s[r]>e?a=o:s[r]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()})); //# sourceMappingURL=Midi.js.map `; -class MidiParserExtension { - constructor(runtime) { - this.runtime = runtime; - this.notesData = []; - this.errorMessage = ''; - this.loadMidiLibrary(); - } +// 嵌入 @tonejs/midi 库 +const MidiLibrary = ` +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;rn})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;ne)return o;s[r]>e?a=o:s[r]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()})); +//# sourceMappingURL=Midi.js.map +`; +(function (Scratch) { + class MidiParserExtension { + constructor(runtime) { + this.runtime = runtime; + this.notesData = []; + this.errorMessage = ''; + this.loadMidiLibrary(); + } - loadMidiLibrary() { - try { - const script = document.createElement('script'); - script.textContent = MidiLibrary; // Embedded library code - document.head.appendChild(script); - } catch (error) { - this.errorMessage = 'Failed to load MIDI library: ' + error.message; + loadMidiLibrary() { + try { + const script = document.createElement('script'); + script.textContent = MidiLibrary; // Embedded library code + document.head.appendChild(script); + } catch (error) { + this.errorMessage = 'Failed to load MIDI library: ' + error.message; + } } - } - getInfo() { - return { - id: 'midiParser', - name: 'MIDI Parser', - color1: '#4C97FF', - color2: '#337BCC', - color3: '#2C6CA3', - blocks: [ - { - opcode: 'parseMidiDataUrl', - blockType: Scratch.BlockType.REPORTER, - text: 'Parse MIDI Data URL [DATA_URL]', - arguments: { - DATA_URL: { - type: Scratch.ArgumentType.STRING, - defaultValue: '' + getInfo() { + return { + id: 'midiParser', + name: 'MIDI Parser', + color1: '#4C97FF', + color2: '#337BCC', + color3: '#2C6CA3', + blocks: [ + { + opcode: 'parseMidiDataUrl', + blockType: Scratch.BlockType.REPORTER, + text: 'Parse MIDI Data URL [DATA_URL]', + arguments: { + DATA_URL: { + type: Scratch.ArgumentType.STRING, + defaultValue: '' + } } } - } - ] - }; - } - - parseMidiDataUrl(args) { - this.errorMessage = ''; - if (!window.Midi) { - return 'MIDI library failed to load'; + ] + }; } - const dataUrl = args.DATA_URL.trim(); - if (!dataUrl) { - return 'MIDI Data URL is empty'; - } - - try { - // Parse Data URL - const base64Data = dataUrl.split(',')[1]; - if (!base64Data) { - throw new Error('Invalid Data URL format'); + parseMidiDataUrl(args) { + this.errorMessage = ''; + if (!window.Midi) { + return 'MIDI library failed to load'; } - // Decode Base64 data to ArrayBuffer - const binaryString = atob(base64Data); - const len = binaryString.length; - const buffer = new ArrayBuffer(len); - const view = new Uint8Array(buffer); - for (let i = 0; i < len; i++) { - view[i] = binaryString.charCodeAt(i); + const dataUrl = args.DATA_URL.trim(); + if (!dataUrl) { + return 'MIDI Data URL is empty'; } - // Parse MIDI file - const midi = new window.Midi(buffer); + try { + // Parse Data URL + const base64Data = dataUrl.split(',')[1]; + if (!base64Data) { + throw new Error('Invalid Data URL format'); + } + + // Decode Base64 data to ArrayBuffer + const binaryString = atob(base64Data); + const len = binaryString.length; + const buffer = new ArrayBuffer(len); + const view = new Uint8Array(buffer); + for (let i = 0; i < len; i++) { + view[i] = binaryString.charCodeAt(i); + } - // Store note information - this.notesData = []; - midi.tracks.forEach((track, trackIndex) => { - track.notes.forEach(note => { - this.notesData.push({ - track: trackIndex, - midiNumber: note.midi, - noteName: note.name, - startTime: note.time, - duration: note.duration, - velocity: note.velocity + // Parse MIDI file + const midi = new window.Midi(buffer); + + // Store note information + this.notesData = []; + midi.tracks.forEach((track, trackIndex) => { + track.notes.forEach(note => { + this.notesData.push({ + track: trackIndex, + midiNumber: note.midi, + noteName: note.name, + startTime: note.time, + duration: note.duration, + velocity: note.velocity + }); }); }); - }); - this.notesData.sort((a, b) => a.startTime - b.startTime); - return JSON.stringify(this.notesData, null, 2); - } catch (error) { - return 'Error parsing MIDI file: ' + error.message; + this.notesData.sort((a, b) => a.startTime - b.startTime); + return JSON.stringify(this.notesData, null, 2); + } catch (error) { + return 'Error parsing MIDI file: ' + error.message; + } } } -} -// Register extension -Scratch.extensions.register(new MidiParserExtension()); \ No newline at end of file + // Register extension + Scratch.extensions.register(new MidiParserExtension()); +})(Scratch); \ No newline at end of file From 488fe7e3bbbceb3f1e18fdcd3471aa19a88159fd Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:46:52 +0800 Subject: [PATCH 6/8] Update midi.js --- extensions/CHCAT1320/midi.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extensions/CHCAT1320/midi.js b/extensions/CHCAT1320/midi.js index fdd9088432..beef5f8c6e 100644 --- a/extensions/CHCAT1320/midi.js +++ b/extensions/CHCAT1320/midi.js @@ -10,11 +10,7 @@ const MidiLibrary = ` !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;rn})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;ne)return o;s[r]>e?a=o:s[r]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()})); //# sourceMappingURL=Midi.js.map `; -// 嵌入 @tonejs/midi 库 -const MidiLibrary = ` -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;rn})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;ne)return o;s[r]>e?a=o:s[r]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()})); -//# sourceMappingURL=Midi.js.map -`; + (function (Scratch) { class MidiParserExtension { constructor(runtime) { From 5d28ee44aa424696c5dd44f1d6176900e6c4c596 Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Tue, 1 Apr 2025 23:59:59 +0800 Subject: [PATCH 7/8] Create midi.sb3 --- extensions/CHCAT1320/midi.sb3 | Bin 0 -> 159858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extensions/CHCAT1320/midi.sb3 diff --git a/extensions/CHCAT1320/midi.sb3 b/extensions/CHCAT1320/midi.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..c698d2a158c0af58f5f2c63a6df79ba4498cde96 GIT binary patch literal 159858 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 QD9oq6^0WqnFrMcB2YAglhyVZp literal 0 HcmV?d00001 From f1e959f6f285a5fbc11392a6516fef1058e8204b Mon Sep 17 00:00:00 2001 From: CHCAT1320 <108920403+CHCAT1320@users.noreply.github.com> Date: Sun, 4 May 2025 13:05:19 +0800 Subject: [PATCH 8/8] update midi.sb3 --- extensions/CHCAT1320/midi.sb3 => samples/Midi.sb3 | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename extensions/CHCAT1320/midi.sb3 => samples/Midi.sb3 (100%) diff --git a/extensions/CHCAT1320/midi.sb3 b/samples/Midi.sb3 similarity index 100% rename from extensions/CHCAT1320/midi.sb3 rename to samples/Midi.sb3