Important notes
Please make sure you did not switch lua off in the config otherwise it will not work.
Also if you already have a license make sure it includes the lua runtime. Check the logfile and look out init.lua gets searched and loaded and for your lua functions being called when you trigger tests.
See the lua example videos on my youtube channel: e.g. https://www.youtube.com/watch?v=Se2uvYuHbf0
Global variabels
config: all the main config parameters from the raspisound.ini file as lua table. That means you can access it like config.say_version.
version: the version of the TILT!Audion firmware as string. e.g. “1.29”
musicPlayingId: the number of the currently playing background music (or 0 if none).
effectiveVolume: the effectiveVolume (overall volume).
Functions
playSound(id, volume, index): play a sound effect (or background music) from sound pack.
id: the sound effect id.
volume (optional): if set (0-30) override the standard volume from sound pack and play with given volume.
index (optional): if set, use a specfic sound file for the effect. This is only relevant, when the sound pack defines more than one sound file for this effect.
getSound( id ): returns a lua table (or nil) for the sound effect with given id. the lua table contains the properties:
name: the name of the sound effect.
samples: number if sound files for the effect (normally 1).
type: 1-6 depending on sound type: music, voice, effect ..
command: string if the effect has an command attached
getCurrentSoundPack(): returns the current sound pack as lua table.
port( pinNumber, value): set port to high or low. pinNumber is one of the valid Raspberry Pi pins the can be used for output (basically the shaker pin) or 100-115 for port extender pins. value = 0 -> LOW output, value != 0 -> HIGH output.
portseq( pinNumber, time1, time2, … ): queue a sequence of HIGH, LOW changes for a GPIO pin. pinNumber see above. time1, time2 … define the intervals in milliseconds, that will make the output go HIGH-LOW-HIGH …
send( command ): send a string command to attached device (either serial or via TCP, depending on config). Can be used with the serial media server.
sendI2C( deviceAdress, reg, data): send a command to an attached i2c device. deviceAddress is 1 Byte device address on i2c bus. reg is 1 byte register number, data is one byte data to write to register.
sendI2CW( deviceAdress, reg, data): send a command to an attached i2c device. deviceAddress is 1 Byte device address on i2c bus. reg is 1 byte register number, data is two byte data to write to register.
readI2C( deviceAdress, reg): read data from an n I2C device and returns an int.
log( logLevel, message ): logs a message into main logfile. logLevel: 1=ERROR up to 4=DEBUG, message a string with log message. NOTE: normal print output will also go to the logfile if DEBUG is switched on.
setVolume( newVolume ): set a new volume, value 0-100
decVolume(): decrease volume
incVolume(): increase volume
nextSoundSet(): cycle through installed sound packs
restart(): restart TILT!Audio firmware
reboot(): reboot the raspberry pi completely
pauseMusic(): pause background music
resumeMusic( ms ): resume pause background music and fade back in ms = milli seconds
stopMusic(): stops background music
fadeMusic( milliSeconds ): fades background music in milliSeconds
fadeOutID( ID, milliSeconds): fades out a specific sound (referred by ID) in milliSeconds
fadeOutSfx( milliSeconds): fades out sfx sounds in milliSeconds
fadeOutVoice( milliSeconds): fades out voice sounds in milliSeconds
fadeOutAllEffects( milliSeconds): fades out both woice and sfx in milliSeconds
stopAllSamples(): stops all running sound effects other than background music
omx player commands (beta)
omxPause(): pause player playback
omxAction( action ): perform an action on player. action numbers see OMXControl.h
omxSetPos( pos ): set playback position absolute in milli seconds
omxStop(): stop player playback
omxPlay( file ): play a new file
omxGetPos(): get the current playing pos in milli seconds.
omxGetStatus(): return current player status: 0 = pause, 1 = playing
Handlers (beta)
There are two special lua functions in your script recognized at startup. They are called handlers. Just put a function named timer or eventHandler and it will be called like described:
timer( millis ): this function gets called every milli second (approximately). It is run in the main loop of TILT!Audio firmware (will be changed maybe), so don’t block anything and keep the function short and fast.
eventHander( stringMessage): it the event handler feature is enabled with TILT!Audio, every time the firmware receives an event, the function gets called.