UPDATE: new single piston version with support for pausing lights and sound. you can also use this with only lights and no sound. to disable sound set soundEnabled flag to false and save the piston. if flag is false the soundSpeaker device variable can be left empty.
to pause the light and sound this uses a global variable called @pauseHLCRaFp please create this global boolean variable and set it to false before restoring this piston. once this piston is running, from another piston set this variable to true to pause and false to resume.
how often the sound is played is controlled by the playSoundEveryNthLoop. if you want sound to play always set it to 0. otherwise set to some positive integer number 2…N.