API Mod Player
Tracker module music playback (MOD, XM, S3M formats). The mod player runs on Core 1 alongside other audio.
picocalc.modplayer
Section titled “picocalc.modplayer”Functions
Section titled “Functions”picocalc.modplayer.create()
Section titled “picocalc.modplayer.create()”Create a new mod player instance.
- Parameters: None
- Returns: (userdata) Player object, or
nil, errorStringon failure
local player, err = picocalc.modplayer.create()if not player then picocalc.repl.print("Error: " .. err)endPlayer Methods
Section titled “Player Methods”Objects returned by picocalc.modplayer.create(). There is one MOD player:
create() returns the one live handle (calling it again returns the same
object while it is alive). It is cleaned up by the garbage collector; a
destroyed handle raises on use. Volume is 0-100.
player:load(path)
Section titled “player:load(path)”Load a tracker module file from the SD card.
- Parameters:
path(string): Path to a MOD, XM, or S3M file
- Returns: (boolean)
trueif the file was loaded successfully
local ok = player:load("/apps/myapp/music.mod")player:play([loop])
Section titled “player:play([loop])”Start playback of the loaded module.
- Parameters:
loop(boolean, optional): Whether to loop playback. Defaultfalse.
- Returns: None
player:play(true) -- play with loopingplayer:stop()
Section titled “player:stop()”Stop playback.
- Parameters: None
- Returns: None
player:stop()player:pause()
Section titled “player:pause()”Pause playback at the current position.
- Parameters: None
- Returns: None
player:pause()player:resume()
Section titled “player:resume()”Resume paused playback.
- Parameters: None
- Returns: None
player:resume()player:isPlaying()
Section titled “player:isPlaying()”Check whether the player is currently playing.
- Parameters: None
- Returns: (boolean)
trueif playback is active
if player:isPlaying() then picocalc.repl.print("Playing...")endplayer:setVolume(vol)
Section titled “player:setVolume(vol)”Set the playback volume.
- Parameters:
vol(number): Volume level from 0 (silent) to 100 (maximum)
- Returns: None
player:setVolume(75)player:getVolume()
Section titled “player:getVolume()”Get the current playback volume.
- Parameters: None
- Returns: (number) Current volume level (0-100)
local vol = player:getVolume()player:setLoop(enabled)
Section titled “player:setLoop(enabled)”Enable or disable looping on the current module.
- Parameters:
enabled(boolean):trueto loop,falseto play once
- Returns: None
player:setLoop(true)