Ejemplo n.º 1
0
	def __init__(self,root):
		# gui
		self.root = root
		self.current_song = Song('')
		self.frame = tk.Frame(root)
		self.control_frame = tk.Frame(self.frame)
		self.progress_frame = tk.Frame(self.frame)

		self.progress_var = tk.StringVar()
		self.progress_var.set("--:--")
		self.progress_time = tk.Label(self.progress_frame,textvariable=self.progress_var)
		self.progress_time.pack()

		self.control_frame.pack(side=tk.LEFT,anchor=tk.W,expand=False)
		self.progress_frame.pack(anchor=tk.E,expand=False)
		self.frame.pack(fill=tk.X)
		# osc
		self.osc_server = ServeR(self,port=7008)
		self.osc_client = ControlR(self.current_song,port=7007)
		self.osc_to_send = None

		self.setup_buttons()
		self.setup_menu()
		self.progress_bar = ProgressBar(self,self.current_song)
		self.progress_bar.map_osc('/pyaud/pos/float')

		self.osc_start()
Ejemplo n.º 2
0
class MainGui:
	def __init__(self,root):
		# gui
		self.root = root
		self.current_song = Song('')
		self.frame = tk.Frame(root)
		self.control_frame = tk.Frame(self.frame)
		self.progress_frame = tk.Frame(self.frame)

		self.progress_var = tk.StringVar()
		self.progress_var.set("--:--")
		self.progress_time = tk.Label(self.progress_frame,textvariable=self.progress_var)
		self.progress_time.pack()

		self.control_frame.pack(side=tk.LEFT,anchor=tk.W,expand=False)
		self.progress_frame.pack(anchor=tk.E,expand=False)
		self.frame.pack(fill=tk.X)
		# osc
		self.osc_server = ServeR(self,port=7008)
		self.osc_client = ControlR(self.current_song,port=7007)
		self.osc_to_send = None

		self.setup_buttons()
		self.setup_menu()
		self.progress_bar = ProgressBar(self,self.current_song)
		self.progress_bar.map_osc('/pyaud/pos/float')

		self.osc_start()

	def osc_start(self):
		# osc mappings (inputs)
		def sec_to_str(_,osc_msg):
			try:
				time_sec = float(osc_msg)
				self.progress_var.set("%d:%02d"  %  (time_sec // 60.0 , time_sec % 60.0))
			except:
				self.progress_var.set("--:--")
		def float_to_prog(_,osc_msg):
			try:
				float_perc = float(osc_msg)
				self.progress_bar.move_bar(float_perc*self.progress_bar.width)
			except:
				self.progress_bar.move_bar(0)
		self.osc_server.map("/pyaud/pos/sec",sec_to_str)
		self.osc_server.map("/pyaud/pos/float",float_to_prog)
		self.osc_server.map("/pyaud/status",self.buttons_enabler)
		self.osc_server.start()

	def setup_buttons(self):
		# osc msgs

		play = self.osc_client.build_msg('/pyaud/pps',1)
		pause = self.osc_client.build_msg('/pyaud/pps',0)
		stop = self.osc_client.build_msg('/pyaud/pps',-1)

		def gen_osc_send(msg):
			def sender():
				self.osc_client.send(msg)
			return sender

		self.playbut =  tk.Button(self.control_frame,text=">",padx=8,pady=4,
							command = gen_osc_send(play),state='disabled')
		self.pausebut =  tk.Button(self.control_frame,text="||",padx=8,pady=4,
							command = gen_osc_send(pause),state='disabled')
		def stopfun():
			osc_send = gen_osc_send(stop)
			osc_send()
			self.progress_var.set("--:--")
		self.stopbut =  tk.Button(self.control_frame,text="[]",padx=8,pady=4,
							command = stopfun)
		self.playbut.pack(side=tk.LEFT)
		self.pausebut.pack(side=tk.LEFT)
		self.stopbut.pack(side=tk.LEFT)

	def buttons_enabler(self,_,osc_msg):
		if osc_msg == 'loaded' or osc_msg == 'paused':
			self.playbut.config(state='normal')
			self.pausebut.config(state='disabled')
		elif osc_msg == 'playing':
			self.playbut.config(state='disabled')
			self.pausebut.config(state='normal')
		elif osc_msg == 'stopped':
			self.playbut.config(state='disabled')
			self.pausebut.config(state='disabled')

	def setup_menu(self):

		def change_connect():
			set_connect = ConnectionSelect(self)

		self.menubar = tk.Menu(self.root)
		self.filemenu = tk.Menu(self.menubar,tearoff=0)
		self.filemenu.add_command(label="open",command=self.open_file)
		self.filemenu.add_command(label="set connections",command=change_connect)
		self.filemenu.add_command(label="quit",command=self.osc_server.stop)
		self.menubar.add_cascade(label='file',menu=self.filemenu)
		self.root.config(menu=self.menubar)

	def open_file(self):
		filename = tkfd.askopenfilename(parent=root,title='Choose your WAV file')
		splitname = os.path.splitext(filename)
		if splitname[1] == '.wav' or splitname[1] == '.WAV':
			self.osc_client.build_n_send('/pyaud/open',filename)
			self.current_song.fname = filename
		else:
			tkmb.showerror("Bad file","please choose a proper .wav file")