コード例 #1
0
    def add_layer_midich(self, midich, select=True):
        if self.add_layer_eng:
            zyngine = self.zyngui.screens['engine'].start_engine(
                self.add_layer_eng)
            layer = zynthian_layer(zyngine, midich, self.zyngui)

            # Try to connect Audio Effects ...
            if len(self.layers) > 0 and layer.engine.type == "Audio Effect":
                if self.replace_layer_index is not None:
                    self.replace_on_fxchain(layer)
                else:
                    self.add_to_fxchain(layer, self.layer_chain_parallel)
                    self.layers.append(layer)
            # Try to connect MIDI tools ...
            elif len(self.layers) > 0 and layer.engine.type == "MIDI Tool":
                if self.replace_layer_index is not None:
                    self.replace_on_midichain(layer)
                else:
                    self.add_to_midichain(layer, self.layer_chain_parallel)
                    self.layers.append(layer)
            # New root layer
            else:
                self.layers.append(layer)

            self.zyngui.zynautoconnect()

            if select:
                self.fill_list()
                root_layer = self.get_fxchain_root(layer)
                try:
                    self.index = self.root_layers.index(root_layer)
                    self.layer_control()
                except Exception as e:
                    logging.error(e)
                    self.zyngui.show_screen('layer')
コード例 #2
0
	def add_layer_midich(self, midich, select=True):
		if self.add_layer_eng:
			self.layers.append(zynthian_layer(self.add_layer_eng,midich,zynthian_gui_config.zyngui))
			self.fill_list()
			if select:
				self.index=len(self.layers)-1
				self.select_action(self.index)
コード例 #3
0
    def add_layer_midich(self, midich, select=True):
        if self.add_layer_eng:
            layer = zynthian_layer(self.add_layer_eng, midich, self.zyngui)

            # Try to connect effects ...
            if len(self.layers) > 0 and layer.engine.type == "Audio Effect":
                if self.replace_layer_index is not None:
                    self.replace_on_fxchain(layer)
                else:
                    self.add_to_fxchain(layer)
                    self.layers.append(layer)
            else:
                self.layers.append(layer)

            self.zyngui.zynautoconnect()

            if select:
                self.fill_list()
                root_layer = self.get_fxchain_root(layer)
                try:
                    self.index = self.root_layers.index(root_layer)
                    self.layer_control()
                except Exception as e:
                    logging.error(e)
                    self.zyngui.show_screen('layer')
コード例 #4
0
 def load_snapshot(self, fpath):
     try:
         with open(fpath, "r") as fh:
             json = fh.read()
             logging.info("Loading snapshot %s => \n%s" % (fpath, json))
     except Exception as e:
         logging.error("Can't load snapshot '%s': %s" % (fpath, e))
         return False
     try:
         snapshot = JSONDecoder().decode(json)
         self.remove_all_layers(False)
         for lss in snapshot['layers']:
             engine = zynthian_gui_config.zyngui.screens[
                 'engine'].start_engine(lss['engine_nick'], 1)
             self.layers.append(
                 zynthian_layer(engine, lss['midi_chan'],
                                zynthian_gui_config.zyngui))
             self.layers[-1].restore_snapshot(lss)
         self.fill_list()
         self.index = snapshot['index']
         if self.list_data[self.index][0] in ('NEW', 'RESET'):
             self.index = 0
             zynthian_gui_config.zyngui.show_screen('layer')
         else:
             self.select_action(self.index)
         zynthian_gui_config.zyngui.screens['engine'].clean_unused_engines()
     except Exception as e:
         logging.error("Invalid snapshot format: %s" % e)
         return False
     return True
コード例 #5
0
	def load_snapshot(self, fpath):
		try:
			with open(fpath,"r") as fh:
				json=fh.read()
				logging.info("Loading snapshot %s => \n%s" % (fpath,json))
			self.last_snapshot_fpath=fpath
		except Exception as e:
			logging.error("Can't load snapshot '%s': %s" % (fpath,e))
			return False
		try:
			snapshot=JSONDecoder().decode(json)
			#Clean all layers
			self.remove_all_layers(False)
			#Create layers
			for lss in snapshot['layers']:
				engine=zynthian_gui_config.zyngui.screens['engine'].start_engine(lss['engine_nick'],1)
				self.layers.append(zynthian_layer(engine,lss['midi_chan'],zynthian_gui_config.zyngui))
			#Set active layer
			self.index=snapshot['index']
			self.curlayer=self.layers[self.index]
			zynthian_gui_config.zyngui.set_curlayer(self.curlayer)
			#Load layers
			i=0
			for lss in snapshot['layers']:
				self.layers[i].restore_snapshot(lss)
				i+=1
			#Fill layer list
			self.fill_list()
			#Remove unused engines
			zynthian_gui_config.zyngui.screens['engine'].clean_unused_engines()
			#Set Transpose
			if 'transpose' in snapshot:
				for i in range(0,16):
					zyncoder.lib_zyncoder.set_midi_filter_transpose(i,snapshot['transpose'][i])
			#Set CC-Map
			#TODO
			#Set Monitored Engines
			if 'monitored_engines' in snapshot:
				zynautoconnect.set_monitored_engines(snapshot['monitored_engines'])
			else:
				zynautoconnect.reset_monitored_engines()
			#Post action
			if self.list_data[self.index][0] in ('NEW','RESET'):
				self.index=0
				zynthian_gui_config.zyngui.show_screen('layer')
			else:
				self.select_action(self.index)
		except Exception as e:
			logging.error("Invalid snapshot format: %s" % e)
			return False
		return True
コード例 #6
0
	def add_layer_midich(self, midich, select=True):
		if self.add_layer_eng:
			layer=zynthian_layer(self.add_layer_eng, midich,zynthian_gui_config.zyngui)

			# Try to connect effects ...
			if len(self.layers)>0 and layer.engine.type=="Audio Effect":
				self.add_to_fxchain(layer)

			self.layers.append(layer)
			self.zyngui.zynautoconnect()

			if select:
				self.fill_list()
				root_layer = self.get_fxchain_root(layer)
				try:
					self.index = self.root_layers.index(root_layer)
					self.layer_control()
				except Exception as e:
					logging.error(e)
					self.zyngui.show_screen('layer')
コード例 #7
0
 def create_amixer_layer(self):
     mixer_eng = self.zyngui.screens['engine'].start_engine('MX')
     self.amixer_layer = zynthian_layer(mixer_eng, None, self.zyngui)
コード例 #8
0
    def load_snapshot(self, fpath):
        try:
            with open(fpath, "r") as fh:
                json = fh.read()
                logging.info("Loading snapshot %s => \n%s" % (fpath, json))

        except Exception as e:
            logging.error("Can't load snapshot '%s': %s" % (fpath, e))
            return False

        try:
            snapshot = JSONDecoder().decode(json)

            #Clean all layers, but don't stop unused engines
            self.remove_all_layers(False)

            # Reusing Jalv engine instances raise problems (audio routing & jack names, etc..),
            # so we stop Jalv engines!
            self.zyngui.screens['engine'].stop_unused_jalv_engines()

            #Create new layers, starting engines when needed
            i = 0
            for lss in snapshot['layers']:
                if lss['engine_nick'] == "MX":
                    if zynthian_gui_config.snapshot_mixer_settings:
                        snapshot['amixer_layer'] = lss
                    del (snapshot['layers'][i])
                else:
                    engine = self.zyngui.screens['engine'].start_engine(
                        lss['engine_nick'])
                    self.layers.append(
                        zynthian_layer(engine, lss['midi_chan'], self.zyngui))
                i += 1

            # Finally, stop all unused engines
            self.zyngui.screens['engine'].stop_unused_engines()

            #Restore MIDI profile state
            if 'midi_profile_state' in snapshot:
                self.set_midi_profile_state(snapshot['midi_profile_state'])

            #Set MIDI Routing
            if 'midi_routing' in snapshot:
                self.set_midi_routing(snapshot['midi_routing'])
            else:
                self.reset_midi_routing()

            #Autoconnect MIDI
            self.zyngui.zynautoconnect_midi(True)

            #Set extended config
            if 'extended_config' in snapshot:
                self.set_extended_config(snapshot['extended_config'])

            # Restore layer state, step 1 => Restore Bank & Preset Status
            i = 0
            for lss in snapshot['layers']:
                self.layers[i].restore_snapshot_1(lss)
                i += 1

            # Restore layer state, step 2 => Restore Controllers Status
            i = 0
            for lss in snapshot['layers']:
                self.layers[i].restore_snapshot_2(lss)
                i += 1

            #Set Audio Routing
            if 'audio_routing' in snapshot:
                self.set_audio_routing(snapshot['audio_routing'])
            else:
                self.reset_audio_routing()

            #Set Audio Capture
            if 'audio_capture' in snapshot:
                self.set_audio_capture(snapshot['audio_capture'])
            else:
                self.reset_audio_routing()

            #Autoconnect Audio
            self.zyngui.zynautoconnect_audio()

            # Restore ALSA Mixer settings
            if self.amixer_layer and 'amixer_layer' in snapshot:
                self.amixer_layer.restore_snapshot_1(snapshot['amixer_layer'])
                self.amixer_layer.restore_snapshot_2(snapshot['amixer_layer'])

            #Fill layer list
            self.fill_list()

            #Set active layer
            if snapshot['index'] < len(self.layers):
                self.index = snapshot['index']
                self.zyngui.set_curlayer(self.layers[self.index])
            elif len(self.layers) > 0:
                self.index = 0
                self.zyngui.set_curlayer(self.layers[self.index])

            #Set Clone
            if 'clone' in snapshot:
                self.set_clone(snapshot['clone'])
            else:
                self.reset_clone()

            # Note-range & Tranpose
            self.reset_note_range()
            if 'note_range' in snapshot:
                self.set_note_range(snapshot['note_range'])
            #BW compat.
            elif 'transpose' in snapshot:
                self.set_transpose(snapshot['transpose'])

            #Zynseq RIFF data
            if 'zynseq_riff_b64' in snapshot and 'stepseq' in self.zyngui.screens:
                b64_bytes = snapshot['zynseq_riff_b64'].encode('utf-8')
                binary_riff_data = base64.decodebytes(b64_bytes)
                self.zyngui.screens['stepseq'].restore_riff_data(
                    binary_riff_data)

            #Post action
            if self.index < len(self.root_layers):
                self.select_action(self.index)
            else:
                self.index = 0
                self.zyngui.show_screen('layer')

        except Exception as e:
            self.zyngui.reset_loading()
            logging.exception("Invalid snapshot: %s" % e)
            return False

        self.last_snapshot_fpath = fpath
        return True
コード例 #9
0
    def load_snapshot(self, fpath):
        try:
            with open(fpath, "r") as fh:
                json = fh.read()
                logging.info("Loading snapshot %s => \n%s" % (fpath, json))

        except Exception as e:
            logging.error("Can't load snapshot '%s': %s" % (fpath, e))
            return False

        try:
            snapshot = JSONDecoder().decode(json)

            first_layer_index = 1
            remove_mixer_layer = False

            # Check for MIXER layer ...
            for lss in snapshot['layers']:
                if lss['engine_nick'] == "MX":
                    if zynthian_gui_config.ignore_snapshot_mixer_settings:
                        snapshot['layers'].remove(lss)
                    else:
                        first_layer_index = 0
                        remove_mixer_layer = True
                    break

            #Clean all layers, but don't stop unused engines
            self.remove_all_layers(False, remove_mixer_layer)

            # Reusing Jalv engine instances raise problems (audio routing & jack names, etc..),
            # so we stop Jalv engines!
            self.zyngui.screens['engine'].stop_unused_jalv_engines()

            #Create new layers, starting engines when needed
            for lss in snapshot['layers']:
                engine = self.zyngui.screens['engine'].start_engine(
                    lss['engine_nick'])
                self.layers.append(
                    zynthian_layer(engine, lss['midi_chan'], self.zyngui))

            # Finally, stop all unused engines
            self.zyngui.screens['engine'].stop_unused_engines()

            #Autoconnect
            self.zyngui.zynautoconnect_midi(True)
            self.zyngui.zynautoconnect_audio()

            #Restore MIDI profile state
            if 'midi_profile_state' in snapshot:
                self.set_midi_profile_state(snapshot['midi_profile_state'])

            #Set extended config
            if 'extended_config' in snapshot:
                self.set_extended_config(snapshot['extended_config'])

            # Restore layer state, step 1 => Restore Bank & Preset Status
            i = first_layer_index
            for lss in snapshot['layers']:
                self.layers[i].restore_snapshot_1(lss)
                i += 1

            # Restore layer state, step 2 => Restore Controllers Status
            i = first_layer_index
            for lss in snapshot['layers']:
                self.layers[i].restore_snapshot_2(lss)
                i += 1

            #Fill layer list
            self.fill_list()

            #Set active layer
            self.index = first_layer_index + snapshot['index']
            if self.index in self.layers:
                self.curlayer = self.layers[self.index]
                self.zyngui.set_curlayer(self.curlayer)

            #Set Clone
            if 'clone' in snapshot:
                self.set_clone(snapshot['clone'])
            else:
                self.reset_clone()

            #Set Transpose
            if 'transpose' in snapshot:
                self.set_transpose(snapshot['transpose'])
            else:
                self.reset_transpose()

            #Set CC-Map
            #TODO

            #Set Audio Routing
            if 'audio_routing' in snapshot:
                self.set_audio_routing(snapshot['audio_routing'])
            else:
                self.reset_audio_routing()

            #Post action
            if self.index < len(self.root_layers):
                self.select_action(self.index)
            else:
                self.index = 0
                self.zyngui.show_screen('layer')

        except Exception as e:
            self.zyngui.reset_loading()
            logging.exception("Invalid snapshot: %s" % e)
            return False

        self.last_snapshot_fpath = fpath
        return True
コード例 #10
0
 def add_layer_mixer(self):
     mixer_eng = self.zyngui.screens['engine'].start_engine('MX')
     layer = zynthian_layer(mixer_eng, None, self.zyngui)
     self.layers.append(layer)
コード例 #11
0
	def load_snapshot(self, fpath):
		try:
			with open(fpath,"r") as fh:
				json=fh.read()
				logging.info("Loading snapshot %s => \n%s" % (fpath,json))

		except Exception as e:
			logging.error("Can't load snapshot '%s': %s" % (fpath,e))
			return False

		try:
			snapshot=JSONDecoder().decode(json)

			#Clean all layers
			self.remove_all_layers(False)

			#Start engines
			for lss in snapshot['layers']:
				engine=self.zyngui.screens['engine'].start_engine(lss['engine_nick'])
				self.layers.append(zynthian_layer(engine,lss['midi_chan'],zynthian_gui_config.zyngui))

			#Remove unused engines
			self.zyngui.screens['engine'].clean_unused_engines()

			#Autoconnect
			self.zyngui.zynautoconnect(True)

			#Restore MIDI profile state
			if 'midi_profile_state' in snapshot:
				self.set_midi_profile_state(snapshot['midi_profile_state'])

			#Set extended config
			if 'extended_config' in snapshot:
				self.set_extended_config(snapshot['extended_config'])

			# Restore layer state, step 1 => Restore Bank & Preset Status
			i=0
			for lss in snapshot['layers']:
				self.layers[i].restore_snapshot_1(lss)
				i+=1

			# Restore layer state, step 2 => Restore Controllers Status
			i=0
			for lss in snapshot['layers']:
				self.layers[i].restore_snapshot_2(lss)
				i+=1

			#Fill layer list
			self.fill_list()

			#Set active layer
			self.index=snapshot['index']
			if self.index in self.layers:
				self.curlayer=self.layers[self.index]
				self.zyngui.set_curlayer(self.curlayer)

			#Set Clone
			if 'clone' in snapshot:
				self.set_clone(snapshot['clone'])
			else:
				self.reset_clone()

			#Set Transpose
			if 'transpose' in snapshot:
				self.set_transpose(snapshot['transpose'])
			else:
				self.reset_transpose()

			#Set CC-Map
			#TODO

			#Set Audio Routing
			if 'audio_routing' in snapshot:
				self.set_audio_routing(snapshot['audio_routing'])
			else:
				self.reset_audio_routing()

			#Post action
			if self.list_data[self.index][0] in ('NEW','RESET'):
				self.index=0
				self.zyngui.show_screen('layer')
			else:
				self.select_action(self.index)

		except Exception as e:
			self.zyngui.reset_loading()
			logging.exception("Invalid snapshot: %s" % e)
			return False

		self.last_snapshot_fpath = fpath
		return True
コード例 #12
0
	def load_snapshot(self, fpath):
		try:
			with open(fpath,"r") as fh:
				json=fh.read()
				logging.info("Loading snapshot %s => \n%s" % (fpath,json))
			self.last_snapshot_fpath=fpath
		except Exception as e:
			logging.error("Can't load snapshot '%s': %s" % (fpath,e))
			return False
		try:
			snapshot=JSONDecoder().decode(json)

			#Clean all layers
			self.remove_all_layers(False)

			#Start engines
			for lss in snapshot['layers']:
				engine=self.zyngui.screens['engine'].start_engine(lss['engine_nick'])
				self.layers.append(zynthian_layer(engine,lss['midi_chan'],zynthian_gui_config.zyngui))

			#Remove unused engines
			self.zyngui.screens['engine'].clean_unused_engines()

			#Autoconnect
			self.zyngui.zynautoconnect()

			#Set extended config
			if 'extended_config' in snapshot:
				self.set_extended_config(snapshot['extended_config'])

			# Restore layer state, step 1 => Restore Bank & Preset Status
			i=0
			for lss in snapshot['layers']:
				self.layers[i].restore_snapshot_1(lss)
				i+=1

			# Restore layer state, step 2 => Restore Controllers Status
			i=0
			for lss in snapshot['layers']:
				self.layers[i].restore_snapshot_2(lss)
				i+=1

			#Fill layer list
			self.fill_list()

			#Set active layer
			self.index=snapshot['index']
			if self.index in self.layers:
				self.curlayer=self.layers[self.index]
				self.zyngui.set_curlayer(self.curlayer)

			#Set Clone
			if 'clone' in snapshot:
				self.set_clone(snapshot['clone'])
			else:
				self.reset_clone()

			#Set Transpose
			if 'transpose' in snapshot:
				self.set_transpose(snapshot['transpose'])
			else:
				self.reset_transpose()

			#Set CC-Map
			#TODO

			#Set Audio Routing
			if 'audio_routing' in snapshot:
				self.set_audio_routing(snapshot['audio_routing'])
			else:
				self.reset_audio_routing()

			#Post action
			if self.list_data[self.index][0] in ('NEW','RESET'):
				self.index=0
				self.zyngui.show_screen('layer')
			else:
				self.select_action(self.index)

		except Exception as e:
			if zynthian_gui_config.raise_exceptions:
				raise e
			else:
				logging.error("Invalid snapshot format: %s" % e)
				return False

		return True