如何用Lua打开wav文件

时间:2010-05-19 15:18:32

标签: audio lua wav

我正在尝试使用Lua进行一些wav处理,但是已经成为第一个障碍!我找不到允许我加载wav文件并访问原始数据的函数或库。有一个库,但它允许播放wavs,而不是访问原始数据。

那里有没有?

干杯, 皮特。

2 个答案:

答案 0 :(得分:1)

我认为Lua不是原始音频数据处理的合适工具,主要是因为Lua只使用一种数字数据类型 - 双倍。此外,Lua无法直接访问数据流的元素,但您可以使用类似struct库(http://www.inf.puc-rio.br/~roberto/struct/

的内容

处理数据的一种更好的方法是在C中编写过滤器,绑定Lua,然后使用Lua进行更高级别的处理,如(虚构工具包):

  

要求'wave'
   - 加载波浪   wav = wave.load('file.wav','s16')
   - 应用一些过滤器
  thresh = wave.threshold(wav,0.5)
  faded = wave.fadeout(thresh,5)

答案 1 :(得分:0)

或者,您可以加载数据并像这样查看。 ascii列将显示WAV标头,它存储在前44个字节......

local f = assert(io.open(path, "rb"))
-- read in 16 bytes at a time
local block = 16
while true do
local bytes = f:read(block)
if not bytes then break end

for _, b in pairs{string.byte(bytes, 1, -1)} do
    io.write(string.format("%02X ", b))
end

io.write(string.rep(" ", block - string.len(bytes)))
io.write(" ", string.gsub(bytes, "%c", "."), "\n")
end