def update_config(self, config): sconfig = {} for vn in config: if vn[0] != '_': sconfig[vn] = config[vn][0] zynconf.save_config(sconfig, update_sys=True)
def stop_vncserver(self, save_config=True): logging.info("STOPPING VNC SERVICES") # Save state and stop engines if len(self.zyngui.screens['layer'].layers) > 0: self.zyngui.screens['snapshot'].save_last_state_snapshot() self.zyngui.screens['layer'].reset() restore_state = True else: restore_state = False try: check_output("systemctl stop novnc; systemctl stop vncserver@:1", shell=True) zynthian_gui_config.vncserver_enabled = 0 # Update Config if save_config: zynconf.save_config({ "ZYNTHIAN_VNCSERVER_ENABLED": str(zynthian_gui_config.vncserver_enabled) }) except Exception as e: logging.error(e) # Restore state if restore_state: self.zyngui.screens['snapshot'].load_last_state_snapshot(True) self.fill_list()
def toggle_loop(self): if zynthian_gui_config.audio_play_loop: logging.info("Audio play loop OFF") zynthian_gui_config.audio_play_loop=False else: logging.info("Audio play loop ON") zynthian_gui_config.audio_play_loop=True zynconf.save_config({"ZYNTHIAN_AUDIO_PLAY_LOOP": str(int(zynthian_gui_config.audio_play_loop))}) self.update_list()
def select_action(self, i, t='S'): profile_fpath=self.list_data[i][0] if profile_fpath==self.current_profile: logging.info("MIDI PROFILE '%s' IS THE CURRENT PROFILE", profile_fpath) else: logging.info("LOADING MIDI PROFILE => %s", profile_fpath) zynconf.save_config({ "ZYNTHIAN_SCRIPT_MIDI_PROFILE": self.list_data[i][0] }) self.zyngui.reload_midi_config() self.zyngui.show_active_screen()
def select_action(self, i, t='S'): profile_fpath = self.list_data[i][0] if profile_fpath == self.current_profile: logging.info("MIDI PROFILE '%s' IS THE CURRENT PROFILE", profile_fpath) else: logging.info("LOADING MIDI PROFILE => %s", profile_fpath) zynconf.save_config( {"ZYNTHIAN_SCRIPT_MIDI_PROFILE": self.list_data[i][0]}) self.zyngui.reload_midi_config() self.zyngui.show_active_screen()
def toggle_snapshot_mixer_settings(self): if zynthian_gui_config.snapshot_mixer_settings: logging.info("Mixer Settings on Snapshots OFF") zynthian_gui_config.snapshot_mixer_settings=False else: logging.info("Mixer Settings on Snapshots ON") zynthian_gui_config.snapshot_mixer_settings=True # Update Config zynconf.save_config({ "ZYNTHIAN_UI_SNAPSHOT_MIXER_SETTINGS": str(int(zynthian_gui_config.snapshot_mixer_settings)) }) self.fill_list()
def stop_vncserver(self, save_config=True): logging.info("STOPPING VNC SERVICES") try: check_output("systemctl stop novnc; systemctl stop vncserver@:1", shell=True) zynthian_gui_config.vncserver_enabled = 0 # Update Config if save_config: zynconf.save_config({ "ZYNTHIAN_VNCSERVER_ENABLED": str(zynthian_gui_config.vncserver_enabled) }) except Exception as e: logging.error(e) self.fill_list()
def stop_rbpi_headphones(self, save_config=True): logging.info("STOPPING RBPI HEADPHONES") try: check_output("systemctl stop headphones", shell=True) zynthian_gui_config.rbpi_headphones = 0 # Update Config if save_config: zynconf.save_config({ "ZYNTHIAN_RBPI_HEADPHONES": str(int(zynthian_gui_config.rbpi_headphones)) }) except Exception as e: logging.error(e) self.fill_list()
def start_rbpi_headphones(self, save_config=True): logging.info("STARTING RBPI HEADPHONES") try: check_output("systemctl start headphones", shell=True) zynthian_gui_config.rbpi_headphones = 1 # Update Config if save_config: zynconf.save_config({ "ZYNTHIAN_RBPI_HEADPHONES": str(zynthian_gui_config.rbpi_headphones) }) # Call autoconnect after a little time sleep(0.5) self.zyngui.zynautoconnect_audio() except Exception as e: logging.error(e) self.fill_list()
envars_backup_file = "{}/zynthian_envars_backup.sh".format( os.environ.get('ZYNTHIAN_CONFIG_DIR', "/zynthian/config")) if os.path.isfile(input_envars_file): try: print("Loading config input file '{}' ...".format(input_envars_file)) config = zynconf.load_config(False, input_envars_file) except Exception as e: print( "ERROR: Config input file {} can't be parsed. Check the syntax! => \n{}" .format(input_envars_file, e)) try: print("Saving config backup '{}' ...".format(envars_backup_file)) shutil.copyfile(envars_file, envars_backup_file) except Exception as e: print("ERROR: Can't perform a config backup! => \n{}".format(e)) try: print("Updating config on '{}' ...".format(envars_file)) zynconf.save_config(config, True) except Exception as e: print("ERROR: Config can't be updated! => \n{}".format(e)) try: print("Deleting config input file '{}' ...".format(input_envars_file)) os.remove(input_envars_file) except Exception as e: print("ERROR: Input config file can't be removed! => \n{}".format(e)) else: print("Config input file '{}' doesn't exist.".format(update_envars_file)) #--------------------------------------------------------------------
def post(self): self.request.arguments[ 'ZYNTHIAN_MIDI_FILTER_OUTPUT'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_FILTER_OUTPUT', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_SYS_ENABLED'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_SYS_ENABLED', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_SINGLE_ACTIVE_CHANNEL'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_SINGLE_ACTIVE_CHANNEL', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_PROG_CHANGE_ZS3'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_PROG_CHANGE_ZS3', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_RTPMIDI_ENABLED'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_RTPMIDI_ENABLED', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_NETWORK_ENABLED'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_NETWORK_ENABLED', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_TOUCHOSC_ENABLED'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_TOUCHOSC_ENABLED', '0') self.request.arguments[ 'ZYNTHIAN_MIDI_AUBIONOTES_ENABLED'] = self.request.arguments.get( 'ZYNTHIAN_MIDI_AUBIONOTES_ENABLED', '0') escaped_request_arguments = tornado.escape.recursive_unicode( self.request.arguments) errors = {} try: freq = float( self.request.arguments.get('ZYNTHIAN_MIDI_FINE_TUNING', '440.0')[0]) if freq < 392.0 or freq > 493.88: errors[ 'ZYNTHIAN_MIDI_FINE_TUNING'] = "Frequency must be in the range 392.00 - 493.88 Hz!" except: self.request.arguments['ZYNTHIAN_MIDI_FINE_TUNING'] = 440.0 errors['ZYNTHIAN_MIDI_FINE_TUNING'] = "Frequency must be a number!" filter_error = self.validate_filter_rules(escaped_request_arguments) if filter_error: errors['ZYNTHIAN_MIDI_FILTER_RULES'] = filter_error if not errors: # remove fields that start with FILTER_ADD from request_args, so that they won't be passed to update_config for filter_add_argument in list(escaped_request_arguments.keys()): if filter_add_argument.startswith('FILTER_ADD'): del escaped_request_arguments[filter_add_argument] new_profile_script_name = self.get_argument( 'zynthian_midi_profile_new_script_name') if new_profile_script_name: #New MIDI profile self.current_midi_profile_script = self.PROFILES_DIRECTORY + '/' + new_profile_script_name + '.sh' try: #create file as copy of default: zynconf.get_midi_config_fpath( self.current_midi_profile_script) zynconf.update_midi_profile( escaped_request_arguments, self.current_midi_profile_script) mode = os.stat(self.current_midi_profile_script).st_mode mode |= (mode & 0o444) >> 2 # copy R bits to X os.chmod(self.current_midi_profile_script, mode) errors = zynconf.save_config({ 'ZYNTHIAN_SCRIPT_MIDI_PROFILE': self.current_midi_profile_script }) self.load_midi_profile_directories() except: errors[ 'zynthian_midi_profile_new_script_name'] = "Can't create new profile!" elif 'zynthian_midi_profile_delete_script' in self.request.arguments and self.get_argument( 'zynthian_midi_profile_delete_script') == "1": #DELETE if self.current_midi_profile_script.startswith( self.PROFILES_DIRECTORY): os.remove(self.current_midi_profile_script) self.current_midi_profile_script = "{}/default.sh".format( self.PROFILES_DIRECTORY) errors = zynconf.save_config({ 'ZYNTHIAN_SCRIPT_MIDI_PROFILE': self.current_midi_profile_script }) self.load_midi_profile_directories() else: errors[ 'zynthian_midi_profile_delete_script'] = 'You can only delete user profiles!' else: #SAVE if self.current_midi_profile_script: updateParameters = [] for parameter in escaped_request_arguments: if not parameter.startswith('ZYNTHIAN_'): updateParameters.append(parameter) for k in updateParameters: del escaped_request_arguments[k] zynconf.update_midi_profile( escaped_request_arguments, self.current_midi_profile_script) errors = self.update_config(escaped_request_arguments) else: errors[ 'zynthian_midi_profile_new_script_name'] = 'No profile name!' self.reload_midi_config_flag = True self.get(errors)
sys.path.append(os.environ.get('ZYNTHIAN_UI_DIR', "/zynthian/zynthian-ui")) import zynconf #-------------------------------------------------------------------- soundcard_mixer_0 = os.environ.get('SOUNDCARD_MIXER') if soundcard_mixer_0 is not None: ctrls_0 = soundcard_mixer_0.split(',') if len(ctrls_0) > 0: ctrls_1 = [] for ctrl in ctrls_0: ctrl = ctrl.strip() if ctrl in ("Digital", "ADC", "Master", "Capture", "DAC", "Speaker", "Mic", "Headphone", "HDMI"): ctrls_1.append(ctrl + " Left") ctrls_1.append(ctrl + " Right") else: ctrls_1.append(ctrl) soundcard_mixer_1 = ",".join(ctrls_1) # Update Config if soundcard_mixer_1 != soundcard_mixer_0: print("Updating SOUNDCARD_MIXER => {}".format(soundcard_mixer_1)) zynconf.save_config({'SOUNDCARD_MIXER': soundcard_mixer_1}) else: print("SOUNDCARD_MIXER is OK") #--------------------------------------------------------------------
# modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # For a full copy of the GNU General Public License see the LICENSE.txt file. # #******************************************************************** import os import sys sys.path.append(os.environ.get('ZYNTHIAN_UI_DIR',"/zynthian/zynthian-ui")) import zynconf #-------------------------------------------------------------------- envar_name = sys.argv[1] envar_value = sys.argv[2] # Update Config zynconf.save_config({ envar_name: envar_value }) #--------------------------------------------------------------------