@2003scape/rsc-sounds 中文文档教程

发布于 5年前 浏览 22 项目主页 更新于 3年前

rsc-sounds

从缓存中提取 runescape classic 声音到 wav(反之亦然)。 使用了 jagex Sun 原创的 .au 声音格式, 这是无头、8 位、u-law 编码的 8000 Hz pcm 样本。 这个模块可以 将声音档案中的原始声音解压为 带标题的 WAV,并重新压缩(+ 重新采样) 新的 WAV 文件。

install

$ npm install @2003scape/rsc-sounds # use -g for the CLI program

cli usage

rsc-sounds <command>

Commands:
  rsc-sounds dump-wav <archive> [sounds..]  extract WAV files from a sounds mem
                                            archive
  rsc-sounds pack-wav <archive> <files..>   pack WAV file(s) into a sounds mem
                                            archive
  rsc-sounds play <archive> <sound>         play a sound from an archive

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
$ rsc-sounds play sounds1.mem death # play death sound on speaker
$ rsc-sounds pack-wav sounds2.mem scream.wav chop.wav # add new sounds
$ rsc-sounds dump-wav sounds1.mem -i sounds1.json # dump all original sounds
$ rsc-sounds dump-wav sounds1.mem death # dump death.wav

example

const fs = require('fs');
const { Sounds } = require('@2003scape/rsc-sounds');

if (typeof window !== 'undefined') {
    fs.writeFileSync = () => {};
}

// create sounds2.mem with a new .wav file
const sounds = new Sounds();
sounds.loadArchive(fs.readFileSync('./sounds1.mem'));
sounds.putWav('scream', fs.readFileSync('./scream.wav'));
fs.writeFileSync('./sounds2.mem', sounds.toArchive());

// load the archive and play the new sound
const sounds2 = new Sounds();
sounds2.loadArchive(fs.readFileSync('./sounds2.mem'));
fs.writeFileSync('./scream-recovered.wav', sounds2.getWav('scream'));
const duration = sounds2.playSound('scream');
setTimeout(() => console.log('done'), duration);

api

sounds = new Sounds()

创建一个新的声音(反)序列化器实例。

sounds.loadArchive(buffer)

加载声音内存存档缓冲区。

sounds.putWav(name, buffer)

重新编码和重新采样任何 WAV 文件并将其添加到存档缓冲区。

sounds.getWav(name)

从存档缓冲区返回带标题的 WAV 文件。

sounds.playSound(name)

在扬声器上播放存档中的声音(也适用于浏览器)。

sounds.toArchive()

返回声音内存存档。

license

版权所有 2019 2003Scape Team

本程序是免费软件:您可以重新分发它和/或修改它 GNU Affero 通用公共许可证的条款由 自由软件基金会,许可证的第 3 版,或(由您选择) 任何更高版本。

分发该程序是希望它有用,但没有任何 保修单; 甚至没有适销性或适用性的默示保证 特殊用途。 有关详细信息,请参阅 GNU Affero 通用公共许可证。

您应该已经收到 GNU Affero 通用公共许可证的副本 有了这个程序。 如果没有,请参阅 http://www.gnu.org/licenses/。

rsc-sounds

extract runescape classic sounds from cache to wav (and vice versa). jagex used Sun's original .au sound format, which is headerless, 8-bit, u-law encoded, 8000 Hz pcm samples. this module can decompress original sounds from sound archives as headered WAVs, and recompress (+ resample) new WAVs into archives.

install

$ npm install @2003scape/rsc-sounds # use -g for the CLI program

cli usage

rsc-sounds <command>

Commands:
  rsc-sounds dump-wav <archive> [sounds..]  extract WAV files from a sounds mem
                                            archive
  rsc-sounds pack-wav <archive> <files..>   pack WAV file(s) into a sounds mem
                                            archive
  rsc-sounds play <archive> <sound>         play a sound from an archive

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
$ rsc-sounds play sounds1.mem death # play death sound on speaker
$ rsc-sounds pack-wav sounds2.mem scream.wav chop.wav # add new sounds
$ rsc-sounds dump-wav sounds1.mem -i sounds1.json # dump all original sounds
$ rsc-sounds dump-wav sounds1.mem death # dump death.wav

example

const fs = require('fs');
const { Sounds } = require('@2003scape/rsc-sounds');

if (typeof window !== 'undefined') {
    fs.writeFileSync = () => {};
}

// create sounds2.mem with a new .wav file
const sounds = new Sounds();
sounds.loadArchive(fs.readFileSync('./sounds1.mem'));
sounds.putWav('scream', fs.readFileSync('./scream.wav'));
fs.writeFileSync('./sounds2.mem', sounds.toArchive());

// load the archive and play the new sound
const sounds2 = new Sounds();
sounds2.loadArchive(fs.readFileSync('./sounds2.mem'));
fs.writeFileSync('./scream-recovered.wav', sounds2.getWav('scream'));
const duration = sounds2.playSound('scream');
setTimeout(() => console.log('done'), duration);

api

sounds = new Sounds()

create a new sound (de)serializer instance.

sounds.loadArchive(buffer)

load a sounds mem archive buffer.

sounds.putWav(name, buffer)

re-encode and re-sample any WAV file and add it to the archive buffer.

sounds.getWav(name)

return a headered WAV file from the archive buffer.

sounds.playSound(name)

play a sound from the archive on the speakers (works in browser as well).

sounds.toArchive()

return a sounds mem archive.

license

Copyright 2019 2003Scape Team

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文