1
0
Fork 0
mirror of https://github.com/ctruLua/ctruLua.git synced 2025-10-27 16:39:29 +00:00
ctruLua/sdcard/3ds/ctruLua/examples/audio/audio.lua
2016-03-23 19:53:46 +01:00

54 lines
No EOL
1.7 KiB
Lua

local ctr = require("ctr")
local hid = require("ctr.hid")
local gfx = require("ctr.gfx")
local audio = require("ctr.audio")
local test = assert(audio.load("test.wav")) -- Load audio file
local channel = -1
local speed = 1
local leftBalance = 0.5
while true do
hid.read()
local keys = hid.keys()
if keys.down.start then break end
if keys.down.a then
channel = test:play() -- Play audio (an audio can be played multiple times at the same time)
end
if keys.down.up then
speed = speed + 0.01
test:speed(speed) -- Set the audio object default speed, will affect the next time it is played
audio.speed(nil, speed) -- Set the speed of all the currently playing channels
end
if keys.down.down then
speed = speed - 0.01
test:speed(speed) -- See above
audio.speed(nil, speed)
end
if keys.down.left then
leftBalance = leftBalance + 0.1
test:mix(1-leftBalance, leftBalance) -- Set the audio mix: left speaker will be at leftBalance% and right speaker 1-leftBalance%.
-- Like with test:speed(), it won't affect the currently playing audios but the nexts test:play() will have theses mix paramters.
audio.mix(nil, leftBalance, 1-leftBalance) -- Set the mix of all currently playing channels
end
if keys.down.right then
leftBalance = leftBalance - 0.1
test:mix(1-leftBalance, leftBalance) -- See above
audio.mix(nil, leftBalance, 1-leftBalance)
end
gfx.start(gfx.TOP)
gfx.text(5, 5, "Audio test! "..tostring(test:time()).."/"..tostring(test:duration()).."s")
gfx.text(5, 25, "Last audio played on channel "..tostring(channel))
gfx.text(5, 65, "Speed: "..(speed*100).."% - Left balance: "..(leftBalance*100).."%")
gfx.stop()
audio.update()
gfx.render()
end
test:unload() -- Unload audio file