[Csnd] Python help please
Date | 2011-08-24 15:31 |
From | "Art Hunkins" |
Subject | [Csnd] Python help please |
I've written a Python script for a new XO/Sugar activity for children (SamplePlay). It includes 26 buttons that allow a user to select (from the Journal) up to 26 audio samples/loops to play. AFAIK, the "filename" must be sent to Csound as a discrete variable, on its own channel (see below). As a result, I've 26 iterations(!) (0-25) of the same basic code. I'd like to simplify it if possible (the code itself works fine). Any suggestions from you Python/Csound enthusiasts are very much welcomed. (The code references Victor's csndsugui.py, but I don't think this is significant her self.path0 = "0" (up through) self.path25 = "0" self.jobject0 = None (through) self.jobject25 = None def choose0(self, widget): chooser = ObjectChooser(parent=self, what_filter=mime.GENERIC_TYPE_AUDIO) result = chooser.run() if result == gtk.RESPONSE_ACCEPT: self.jobject0 = chooser.get_selected_object() self.path0 = str(self.jobject0.get_file_path()) else: self.jobject0 = None self.path0 = "0" (through) def choose25(self, widget): chooser = ObjectChooser(parent=self, what_filter=mime.GENERIC_TYPE_AUDIO) result = chooser.run() if result == gtk.RESPONSE_ACCEPT: self.jobject25 = chooser.get_selected_object() self.path25 = str(self.jobject25.get_file_path()) else: self.jobject25 = None self.path25 = "0" def send_data(self): self.w.set_filechannel("file0", self.path0) self.w.set_filechannel("file1", self.path1) (through) self.w.set_filechannel("file24", self.path24) self.w.set_filechannel("file25", self.path25) Hoping (as a Python novice) to be shown a more efficient way; I'm in the dark - Art Hunkins Send bugs reports to the Sourceforge bug tracker https://sourceforge.net/tracker/?group_id=81968&atid=564599 Discussions of bugs and features can be posted here To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound" |
Date | 2011-08-24 16:13 |
From | Olivier Bélanger |
Subject | Re: [Csnd] Python help please |
self.path0 -> self.path25 must be a list where you store your paths: Same thing for self.jobjects... (not sure you really need to keep references to those objects). self.paths = ["0"]*26 self.jobjects = [None]*26 def choose(self, widget): which = something here to grab the order of "widget" .... self.paths[which] = str(self.jobjects[which].get_file_path()) def send_data(self): for i in range(26): self.w.set_filechannel("file%d" % i, self.paths[i]) Olivier 2011/8/24 Art Hunkins <abhunkin@uncg.edu> I've written a Python script for a new XO/Sugar activity for children (SamplePlay). |
Date | 2011-08-24 16:23 |
From | Tarmo Johannes |
Subject | Re: [Csnd] Python help please |
Hello, and another hint, perhaps it is useful: if you play the audio samples in csound with diskin, diskin2, diskin or soundin, the filename can be given also as integer number like aL,aR soundin 1 the number " denotes the file soundin.filcod;" (from the manual). If you put your files to the same directory as the csd and rename them soundin.1, soundin.2 etc you can pass just the number and get rid from the business with strings - it is always easier to manipulate the numbers. tarmo On Wednesday 24 August 2011 17:31:02 Art Hunkins wrote: > I've written a Python script for a new XO/Sugar activity for children > (SamplePlay). > It includes 26 buttons that allow a user to select (from the Journal) up to > 26 audio > samples/loops to play. AFAIK, the "filename" must be sent to Csound as a > discrete variable, on its own channel (see below). > > As a result, I've 26 iterations(!) (0-25) of the same basic code. I'd like > to simplify it if possible (the code itself works fine). Any suggestions > from > you Python/Csound enthusiasts are very much welcomed. (The code references > Victor's csndsugui.py, but I don't think this is significant her > > self.path0 = "0" > (up through) > self.path25 = "0" > > self.jobject0 = None > (through) > self.jobject25 = None > > def choose0(self, widget): > chooser = ObjectChooser(parent=self, what_filter=mime.GENERIC_TYPE_AUDIO) > result = chooser.run() > if result == gtk.RESPONSE_ACCEPT: > self.jobject0 = chooser.get_selected_object() > self.path0 = str(self.jobject0.get_file_path()) > else: > self.jobject0 = None > self.path0 = "0" > (through) > def choose25(self, widget): > chooser = ObjectChooser(parent=self, what_filter=mime.GENERIC_TYPE_AUDIO) > result = chooser.run() > if result == gtk.RESPONSE_ACCEPT: > self.jobject25 = chooser.get_selected_object() > self.path25 = str(self.jobject25.get_file_path()) > else: > self.jobject25 = None > self.path25 = "0" > > def send_data(self): > self.w.set_filechannel("file0", self.path0) > self.w.set_filechannel("file1", self.path1) > (through) > self.w.set_filechannel("file24", self.path24) > self.w.set_filechannel("file25", self.path25) > > > Hoping (as a Python novice) to be shown a more efficient way; I'm in the > dark - > > Art Hunkins > > > > Send bugs reports to the Sourceforge bug tracker > https://sourceforge.net/tracker/?group_id=81968&atid=564599 > Discussions of bugs and features can be posted here > To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound" > > Send bugs reports to the Sourceforge bug tracker https://sourceforge.net/tracker/?group_id=81968&atid=564599 Discussions of bugs and features can be posted here To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound" |
Date | 2011-08-26 10:53 |
From | mantaraya36@gmail.com |
Subject | Re: [Csnd] Python help please |
Hi Art, Additionally, you could add the index input to the choose function: def choose (self, index, widget) Cheers, Andres On Wed Aug 24 16:13:31 2011 Olivier Bélanger wrote: self.path0 -> self.path25 must be a list where you store your paths: Same thing for self.jobjects... (not sure you really need to keep references to those objects). self.paths = ["0"]*26 self.jobjects = [None]*26 def choose(self, widget): which = something here to grab the order of "widget" .... self.paths[which] = str(self.jobjects[which].get_file_path()) def send_data(self): for i in range(26): self.w.set_filechannel("file%d" % i, self.paths[i]) Olivier 2011/8/24 Art Hunkins <abhunkin@uncg.edu> I've written a Python script for a new XO/Sugar activity for children (SamplePlay). |