gonzopi

git clone https://git.tarina.org/gonzopi
Log | Files | Refs | README | LICENSE

commit ea3f4a38f062e72df185991ca355ed51dae9c199
parent 82d4bb63b5346e276b357975d74a701e126f8274
Author: rbckman <rob@tarina.org>
Date:   Wed, 12 Feb 2025 20:22:51 +0000

slidearray

Diffstat:
Mgonzopi.py | 131+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
1 file changed, 91 insertions(+), 40 deletions(-)

diff --git a/gonzopi.py b/gonzopi.py @@ -122,7 +122,7 @@ else: #MAIN def main(): - global headphoneslevel, miclevel, gonzopifolder, screen, loadfilmsettings, plughw, channels, filmfolder, scene, showmenu, rendermenu, quality, profilelevel, i2cbuttons, menudone, soundrate, soundformat, process, serverstate, que, port, recording, onlysound, camera_model, fps_selection, fps_selected, fps, db, selected, cammode, newfilmname, camera_recording, abc, showhelp, camera, overlay, overlay2, recordwithports, crossfade, blendmodes, blendselect, udp_ip, udp_port, bitrate, pan, tilt, move, speed, slidereader,slide + global headphoneslevel, miclevel, gonzopifolder, screen, loadfilmsettings, plughw, channels, filmfolder, scene, showmenu, rendermenu, quality, profilelevel, i2cbuttons, menudone, soundrate, soundformat, process, serverstate, que, port, recording, onlysound, camera_model, fps_selection, fps_selected, fps, db, selected, cammode, newfilmname, camera_recording, abc, showhelp, camera, overlay, overlay2, recordwithports, crossfade, blendmodes, blendselect, udp_ip, udp_port, bitrate, pan, tilt, move, speed, slidereader,slide,smooth # Get path of the current dir, then use it as working directory: rundir = os.path.dirname(__file__) if rundir != '': @@ -133,7 +133,7 @@ def main(): #MENUS if slidecommander: - standardmenu = 'DSK:', 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'SFX:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'BLEND:', 'MODE:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'UPDATE', 'UPLOAD', 'BACKUP', 'LOAD', 'NEW', 'TITLE', 'LIVE:', 'SLIDE' + standardmenu = 'DSK:', 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'SFX:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'BLEND:', 'MODE:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'UPDATE', 'UPLOAD', 'BACKUP', 'LOAD', 'NEW', 'TITLE', 'LIVE:', 'SLIDE:' else: standardmenu = 'DSK:', 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'SFX:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'BLEND:', 'MODE:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'UPDATE', 'UPLOAD', 'BACKUP', 'LOAD', 'NEW', 'TITLE', 'LIVE:' gonzopictrlmenu = 'DSK:', 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'SFX:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'BLEND:', 'MODE:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'CAMERA:', 'Add CAMERA', 'New FILM', 'New SCENE', 'Sync SCENE' @@ -198,7 +198,8 @@ def main(): tilt = 0 move = 0 slidereader = None - slide=0 + smooth = 1000 + slide=1 onlysound=False filmname = 'reel_001' newfilmname = '' @@ -444,6 +445,11 @@ def main(): #run_command('avconv -i ' + foldername + filename + '.mp4 -frames 1 -vf scale=800:460 ' + foldername + filename + '.jpeg') updatethumb = True #VIEW SCENE + elif pressed == 'view' and menu[selected] == 'SLIDE:': + send_serial_port(slidecommander,';'+str(slide)) + slide += 1 + elif pressed == 'remove' and menu[selected] == 'SLIDE:': + send_serial_port(slidecommander,'<') elif pressed == 'view' and menu[selected] == 'SCENE:': writemessage('Loading scene...') organize(filmfolder, filmname) @@ -1398,8 +1404,8 @@ def main(): os.makedirs(foldername) if cammode == 'film': #if recandslide here - #if slidecommander: - #send_serial_port(slidecommander,';1') + if slidecommander: + send_serial_port(slidecommander,';'+str(slide)) videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] tot = int(videos_totalt.videos) video_origins=datetime.datetime.now().strftime('%Y%d%m')+str(tot).zfill(5)+'_'+os.urandom(8).hex() @@ -1526,7 +1532,7 @@ def main(): else: stream = stopstream(camera, stream) live = 'no' - elif pressed == 'middle' and menu[selected] == 'SLIDE': + elif pressed == 'middle' and menu[selected] == 'SLIDE:': slide_menu(slidecommander) rendermenu = True elif pressed == 'middle' and menu[selected] == 'BRIGHT:': @@ -1701,9 +1707,10 @@ def main(): if camselected < len(cameras)-1: newselected = camselected+1 logger.info('camera selected:'+str(camselected)) - elif menu[selected] == 'SLIDE': + elif menu[selected] == 'SLIDE:': if slidecommander: - send_serial_port(slidecommander,'>') + #send_serial_port(slidecommander,'>') + slide += 1 elif menu[selected] == 'DSK:': if dsk+1 < len(storagedrives): dsk += 1 @@ -1892,9 +1899,10 @@ def main(): if camselected > 0: newselected = camselected-1 logger.info('camera selected:'+str(camselected)) - elif menu[selected] == 'SLIDE': - if slidecommander: - send_serial_port(slidecommander,'<') + elif menu[selected] == 'SLIDE:': + if slidecommander and slide > 1: + slide -= 1 + #send_serial_port(slidecommander,'<') elif menu[selected] == 'DSK:': if dsk > 0: dsk -= 1 @@ -2080,7 +2088,7 @@ def main(): lastmenu = menu[selected] if showgonzopictrl == False: menu = standardmenu - settings = storagedrives[dsk][0]+' '+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(round(reclenght,2)), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '',blendmodes[blendselect], cammode, '', serverstate, searchforcameras, wifistate, '', '', '', '', '', '', live, '' + settings = storagedrives[dsk][0]+' '+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(round(reclenght,2)), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '',blendmodes[blendselect], cammode, '', serverstate, searchforcameras, wifistate, '', '', '', '', '', '', live, str(slide) else: #gonzopictrlmenu = 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'BLEND:', 'FADE:', 'L:', 'MODE:', 'DSK:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'CAMERA:', 'Add CAMERA', 'New FILM', 'Sync FILM', 'Sync SCENE' menu = gonzopictrlmenu @@ -2827,53 +2835,89 @@ def loadfilm(filmname, filmfolder, camera, overlay): time.sleep(0.02) def slide_menu(slidecommander): - global pan, tilt, move, speed, slidereader + global pan, tilt, move, speed, slidereader, smooth if not slidereader: slidereader = Popen(['python3', gonzopifolder+'/extras/slidereader.py']) + #slidereader = subprocess.check_output(['python3',gonzopifolder+'/extras/slidereader.py'], shell=True) + #slidereader = pipe.decode().strip() + #vumetermessage(slidereader) pressed = '' buttonpressed = '' buttontime = time.time() holdbutton = '' selected = 0 header = 'Future Tech Slide Commander' - menu = 'BACK','SPEED:', 'PAN:', 'TILT:', 'MOVE:', 'ADD', '<', '>', 'SAVE', 'RESET' + menu = 'BACK','SPEED:', 'SMOOTH:', 'PAN:', 'TILT:', 'MOVE:', 'ADD', '<', '>', 'SAVE', 'RESET', 'STATUS' while True: - settings = '',str(speed), str(pan), str(tilt), str(move), '', '', '' , '', '' + settings = '',str(speed), str(smooth), str(pan), str(tilt), str(move), '', '', '' , '', '', '' writemenu(menu,settings,selected,header,showmenu) pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton) if pressed == 'down' and menu[selected] == 'SPEED:': - if speed > 1: - speed -= 1 + if speed > 10: + speed -= 10 + elif pressed == 'remove' and menu[selected] =='SPEED:': + speed += 1 + elif pressed == 'view' and menu[selected] =='SPEED:': + speed -= 1 + elif pressed == 'up' and menu[selected] =='SPEED:': + speed += 10 + elif pressed == 'down' and menu[selected] =='SPEED:': + speed -= 10 + elif pressed == 'record' and menu[selected] =='SPEED:': + speed += 100 + elif pressed == 'retake' and menu[selected] =='SPEED:': + speed -= 100 + if pressed == 'down' and menu[selected] == 'SMOOTH:': + if smooth > 10: + smooth -= 10 + elif pressed == 'remove' and menu[selected] =='SMOOTH:': + smooth += 1 + elif pressed == 'view' and menu[selected] =='SMOOTH:': + smooth -= 1 + elif pressed == 'up' and menu[selected] =='SMOOTH:': + smooth += 10 + elif pressed == 'down' and menu[selected] =='SMOOTH:': + smooth -= 10 + elif pressed == 'record' and menu[selected] =='SMOOTH:': + smooth += 100 + elif pressed == 'retake' and menu[selected] =='SMOOTH:': + smooth -= 100 + elif pressed == 'up' and menu[selected] =='PAN:': + pan += 10 elif pressed == 'down' and menu[selected] =='PAN:': + pan -= 10 + elif pressed == 'view' and menu[selected] =='PAN:': pan -= 1 - elif pressed == 'down' and menu[selected] =='TILT:': - tilt -= 1 - elif pressed == 'remove' and menu[selected] =='MOVE:': - move = 0 elif pressed == 'remove' and menu[selected] =='PAN:': - pan = 0 - elif pressed == 'remove' and menu[selected] =='tilt:': - pan = 0 - elif pressed == 'remove' and menu[selected] =='speed:': - speed = 20 - elif pressed == 'down' and menu[selected] =='MOVE:': - move -= 10 - elif pressed == 'record' and menu[selected] =='MOVE:': - move -= 100 - elif pressed == 'record' and menu[selected] =='SPEED:': - send_serial_port(slidecommander,'X'+str(speed)) - elif pressed == 'up' and menu[selected] =='SPEED:': - speed += 1 - elif pressed == 'up' and menu[selected] =='PAN:': pan += 1 - elif pressed == 'up' and menu[selected] =='TILT:': + elif pressed == 'retake' and menu[selected] =='PAN:': + pan -= 100 + elif pressed == 'record' and menu[selected] =='PAN:': + pan += 100 + elif pressed == 'view' and menu[selected] =='TILT:': tilt += 1 - elif pressed == 'view' and menu[selected] =='MOVE:': + elif pressed == 'remove' and menu[selected] =='TILT:': + tilt -= 1 + elif pressed == 'up' and menu[selected] =='TILT:': + tilt += 10 + elif pressed == 'down' and menu[selected] =='TILT:': + tilt -= 10 + elif pressed == 'retake' and menu[selected] =='TILT:': + tilt -= 100 + elif pressed == 'record' and menu[selected] =='TILT:': + tilt += 100 + elif pressed == 'remove' and menu[selected] =='MOVE:': move += 1 + elif pressed == 'view' and menu[selected] =='MOVE:': + move -= 1 elif pressed == 'up' and menu[selected] =='MOVE:': move += 10 + elif pressed == 'down' and menu[selected] =='MOVE:': + move -= 10 elif pressed == 'record' and menu[selected] =='MOVE:': move += 100 + elif pressed == 'retake' and menu[selected] =='MOVE:': + move -= 100 elif pressed == 'right': if selected < (len(settings) - 1): selected = selected + 1 @@ -2900,10 +2944,16 @@ def slide_menu(slidecommander): send_serial_port(slidecommander,'>') elif pressed == 'middle' and menu[selected] == 'SPEED:': send_serial_port(slidecommander,'s'+str(speed)) - time.sleep(0.2) + time.sleep(0.3) send_serial_port(slidecommander,'S'+str(speed)) - time.sleep(0.2) + time.sleep(0.3) send_serial_port(slidecommander,'X'+str(speed)) + elif pressed == 'middle' and menu[selected] == 'SMOOTH:': + send_serial_port(slidecommander,'q'+str(smooth)) + time.sleep(0.3) + send_serial_port(slidecommander,'Q'+str(smooth)) + time.sleep(0.3) + send_serial_port(slidecommander,'w'+str(smooth)) elif pressed == 'middle' and menu[selected] == 'BACK': writemessage('Returning') return @@ -2922,11 +2972,12 @@ def slide_menu(slidecommander): os.system('pkill -9 slidereader.py') if slidereader.poll(): slidereader.kill() + slidereader = Popen(['python3', gonzopifolder+'/extras/slidereader.py']) time.sleep(1) pan = 0 tilt = 0 move = 0 - time.sleep(0.02) + time.sleep(keydelay) ### send to SERIAL PORT