def createGrapher(self, evt=None): buildGrapher(self.grapher) for slider in CeciliaLib.getVar("userSliders"): slider.refresh() if CeciliaLib.getVar("presetToLoad") is not None: CeciliaLib.loadPresetFromDict(CeciliaLib.getVar("presetToLoad")) CeciliaLib.setVar("presetToLoad", None)
def onRememberInputSound(self, event): if event.GetInt() == 1: CeciliaLib.getVar("interface").menubar.editMenu.FindItemById(ID_REMEMBER).Check(True) CeciliaLib.setVar("rememberedSound", True) else: CeciliaLib.getVar("interface").menubar.editMenu.FindItemById(ID_REMEMBER).Check(False) CeciliaLib.setVar("rememberedSound", False)
def onQuit(self, event): ok = True msg = "Do you want to save the current state of the module?" dlg = wx.MessageDialog(self, msg, "Quit Cecilia5...", style=wx.YES_NO | wx.CANCEL | wx.STAY_ON_TOP) ret = dlg.ShowModal() if ret == wx.ID_YES: CeciliaLib.saveCeciliaFile(self, showDialog=False) elif ret == wx.ID_CANCEL: ok = False dlg.Destroy() if not ok: return if not CeciliaLib.closeCeciliaFile(self): return try: self.prefs.onClose(event) except: pass if CeciliaLib.getVar("audioServer").isAudioServerRunning(): CeciliaLib.getVar("audioServer").stop() time.sleep(.2) if CeciliaLib.getVar('spectrumFrame') is not None: try: CeciliaLib.getVar('spectrumFrame')._destroy(None) except: pass finally: CeciliaLib.setVar('spectrumFrame', None) self.api_doc_frame.Destroy() self.mod_doc_frame.Destroy() self.closeInterface() CeciliaLib.writeVarToDisk() self.Destroy()
def openSpectrumWindow(self): if CeciliaLib.getVar('spectrumFrame') is None: f = SpectrumFrame(CeciliaLib.getVar("interface")) f.setAnalyzer(CeciliaLib.getVar("audioServer").spectrum) f.Center() f.Show() CeciliaLib.setVar('spectrumFrame', f)
def __init__(self, parent, id=-1, title='', mainFrame=None, pos=wx.DefaultPosition, size=wx.DefaultSize, style=style): wx.Frame.__init__(self, parent, id, title, pos, size, style) self.SetBackgroundColour(BACKGROUND_COLOUR) self.ceciliaMainFrame = mainFrame self.menubar = InterfaceMenuBar(self, self.ceciliaMainFrame) self.SetMenuBar(self.menubar) self.box = wx.GridBagSizer(0, 0) self.controlBox = wx.BoxSizer(wx.VERTICAL) self.controlPanel = Control.CECControl(self, -1) togglePopupPanel, objs, tpsize = self.createTogglePopupPanel() slidersPanel, slPanelSize = self.createSlidersPanel() self.grapher = getGrapher(self) CeciliaLib.setVar("grapher", self.grapher) presetPanel = Preset.CECPreset(self) CeciliaLib.setVar("presetPanel", presetPanel) self.controlBox.Add(self.controlPanel, 1, wx.EXPAND | wx.RIGHT, -1) self.controlBox.Add(presetPanel, 0, wx.EXPAND | wx.TOP | wx.RIGHT, -1) self.controlBox.Add(togglePopupPanel, 0, wx.EXPAND | wx.TOP | wx.RIGHT, -1) self.box.Add(self.controlBox, (0, 0), span=(2, 1), flag=wx.EXPAND) self.box.Add(self.grapher, (0, 1), flag=wx.EXPAND) self.box.Add(slidersPanel, (1, 1), flag=wx.EXPAND | wx.TOP, border=-1) self.box.AddGrowableCol(1, 1) self.box.AddGrowableRow(0, 1) pos = CeciliaLib.getVar("interfacePosition") size = CeciliaLib.getVar("interfaceSize") pos, size = self.positionToClientArea(pos, size) self.SetSizer(self.box) self.SetSize(size) self.Bind(wx.EVT_CLOSE, self.onClose) if pos is None: self.Center() else: self.SetPosition(pos) self.Show() self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.createGrapher, self.timer) self.timer.StartOnce(100)
def createSlidersPanel(self): panel = wx.Panel(self, -1, style=wx.BORDER_SIMPLE) panel.SetBackgroundColour(BACKGROUND_COLOUR) widgets = CeciliaLib.getVar("interfaceWidgets") box, sl = buildHorizontalSlidersBox(panel, widgets) CeciliaLib.setVar("userSliders", sl) panel.SetSizerAndFit(box) size = panel.GetSize() return panel, size
def createTogglePopupPanel(self): panel = wx.Panel(self, -1, style=wx.BORDER_SIMPLE) panel.SetBackgroundColour(BACKGROUND_COLOUR) widgets = CeciliaLib.getVar("interfaceWidgets") box, objs = buildTogglePopupBox(panel, widgets) panel.SetSizerAndFit(box) CeciliaLib.setVar("userTogglePopups", objs) size = panel.GetSize() return panel, objs, size
def onPlayStop(self, value): if value: CeciliaLib.getControlPanel().nonZeroTime = 0 CeciliaLib.setVar("toDac", True) CeciliaLib.getVar("grapher").toolbar.loadingMsg.SetForegroundColour("#FFFFFF") CeciliaLib.getVar("grapher").toolbar.loadingMsg.Refresh() CeciliaLib.getControlPanel().transportButtons.setPlay(True) wx.CallLater(50, CeciliaLib.startCeciliaSound, True) else: CeciliaLib.stopCeciliaSound()
def onClose(self, event): CeciliaLib.setVar("interfaceSize", self.GetSize()) CeciliaLib.setVar("interfacePosition", self.GetPosition()) CeciliaLib.resetWidgetVariables() try: self.Destroy() except: pass CeciliaLib.getVar("mainFrame").SetFocus() CeciliaLib.getVar("mainFrame").Hide()
def onStart(): ceciliaMainFrame = CeciliaMainFrame.CeciliaMainFrame(None, -1) CeciliaLib.setVar("mainFrame", ceciliaMainFrame) file = "" if len(sys.argv) > 1: file = sys.argv[1] if os.path.isfile(file): ceciliaMainFrame.onOpen(file) else: categories = [folder for folder in os.listdir(MODULES_PATH) if not folder.startswith(".")] category = random.choice(categories) files = [f for f in os.listdir(os.path.join(MODULES_PATH, category)) if f.endswith(FILE_EXTENSION)] file = random.choice(files) ceciliaMainFrame.onOpen(os.path.join(MODULES_PATH, category, file), True)
def addPrefPath(self): currentPath = CeciliaLib.getVar("prefferedPath") path = '' dlg = wx.DirDialog(self, message="Choose a folder...", defaultPath=CeciliaLib.ensureNFD( os.path.expanduser('~'))) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() dlg.Destroy() if path and currentPath != '': path = currentPath + ';' + path elif not path: return CeciliaLib.setVar("prefferedPath", path) self.textPrefPath.SetValue(path)
def onUpdateInterface(self, event): if event is not None: snds = [] if CeciliaLib.getVar("rememberedSound"): for key in CeciliaLib.getVar("userInputs").keys(): if CeciliaLib.getVar("userInputs")[key]['path'] != '': snds.append(CeciliaLib.getVar("userInputs")[key]['path']) if CeciliaLib.getVar("audioServer").isAudioServerRunning(): CeciliaLib.stopCeciliaSound() self.closeInterface() CeciliaLib.parseInterfaceText() title = os.path.split(CeciliaLib.getVar("currentCeciliaFile", unicode=True))[1] ceciliaInterface = CeciliaInterface.CeciliaInterface(None, title='Interface - %s' % title, mainFrame=self) ceciliaInterface.SetSize(CeciliaLib.getVar("interfaceSize")) ceciliaInterface.SetPosition(CeciliaLib.getVar("interfacePosition")) CeciliaLib.setVar("interface", ceciliaInterface) if CeciliaLib.getVar("presets") != {}: CeciliaLib.getVar("presetPanel").loadPresets() if event is not None: for i, cfilein in enumerate(CeciliaLib.getControlPanel().getCfileinList()): if i >= len(snds): break cfilein.onLoadFile(snds[i])
def changeFileType(self, index, label): CeciliaLib.setVar("audioFileType", label)
def changeFPO(self, index, choice): CeciliaLib.setVar("defaultFirstOutput", index)
def onSelectOutputFilename(self): file = CeciliaLib.saveFileDialog(self, AUDIO_FILE_WILDCARD, type='Save audio') if file is not None: CeciliaLib.setVar("saveAudioFilePath", os.path.split(file)[0]) return file
def closeInterface(self): if CeciliaLib.getVar("interface") is not None: CeciliaLib.getVar("interface").onClose(None) CeciliaLib.setVar("interface", None)
file = random.choice(files) ceciliaMainFrame.onOpen(os.path.join(MODULES_PATH, category, file), True) if __name__ == '__main__': if not os.path.isdir(TMP_PATH): os.mkdir(TMP_PATH) if not os.path.isfile(os.path.join(TMP_PATH, '.recent.txt')): f = open(os.path.join(TMP_PATH, '.recent.txt'), "w") f.close() if not os.path.isdir(AUTOMATION_SAVE_PATH): os.mkdir(AUTOMATION_SAVE_PATH) audioServer = audio.AudioServer() CeciliaLib.setVar("audioServer", audioServer) try: CeciliaLib.queryAudioMidiDrivers() except: pass app = CeciliaApp(redirect=False) wx.Log.SetLogLevel(0) if sys.version_info[0] < 3: wx.SetDefaultPyEncoding('utf-8') try: display = wx.Display() numDisp = display.GetCount() if CeciliaLib.getVar("DEBUG"):
def onUseSoundDuration(self, evt): CeciliaLib.setVar("useSoundDur", evt.GetInt())
def enableAutomaticBinding(self, state): CeciliaLib.setVar("automaticMidiBinding", state)
def enableVerbose(self, state): CeciliaLib.setVar("DEBUG", state) CeciliaLib.getVar("audioServer").updateDebug()
def enableGraphTexture(self, state): CeciliaLib.setVar("graphTexture", state) if CeciliaLib.getVar("grapher") is not None: CeciliaLib.getVar("grapher").plotter.draw()
def changeSr(self, index, label): sr = int(label.strip()) CeciliaLib.setVar("sr", sr)
def changeSampSize(self, index, label): CeciliaLib.setVar("sampSize", BIT_DEPTHS[label])
def changeNchnls(self, index, choice): nchnls = int(choice) CeciliaLib.setVar("defaultNchnls", nchnls) CeciliaLib.setVar("nchnls", nchnls) CeciliaLib.updateNchnlsDevices()
def onShowSpectrum(self, event): if event.GetInt(): CeciliaLib.setVar('showSpectrum', 1) else: CeciliaLib.setVar('showSpectrum', 0)
def changeDefaultTotalTime(self, index, label): CeciliaLib.setVar("defaultTotalTime", float(self.choiceTotalTime.getLabel().strip()))
def changeGlobalFade(self, index, label): CeciliaLib.setVar("globalFade", float(self.choiceGlobalFade.getLabel().strip()))
def onUseMidi(self, event): CeciliaLib.setVar("useMidi", event.GetInt())
def enableTooltips(self, state): CeciliaLib.setVar("useTooltips", state) CeciliaLib.updateTooltips()
def applyBatchProcessingFolder(self, value): folderName = value if folderName == "": return old_file_type = CeciliaLib.getVar("audioFileType") cfileins = CeciliaLib.getControlPanel().getCfileinList() num_snds = len(cfileins[0].fileMenu.choice) dlg = wx.ProgressDialog("Batch processing on sound folder", "", maximum=num_snds, parent=self, style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_SMOOTH) dlg.SetMinSize((600, -1)) dlg.SetClientSize((600, 100)) count = 0 totaltime = CeciliaLib.getVar("totalTime") for snd in cfileins[0].fileMenu.choice: cfileins[0].onSelectSound(-1, snd) if CeciliaLib.getVar("useSoundDur"): cfileins[0].setTotalTime() path, dump = os.path.split(cfileins[0].filePath) name, ext = os.path.splitext(snd) lext = ext.lower() if lext in [".wav", ".wave"]: CeciliaLib.setVar('audioFileType', "wav") elif lext in [".aif", ".aiff", ".aifc"]: CeciliaLib.setVar('audioFileType', "aif") elif lext in [".ogg"]: CeciliaLib.setVar('audioFileType', "ogg") elif lext in [".flac"]: CeciliaLib.setVar('audioFileType', "flac") elif lext in [".au"]: CeciliaLib.setVar('audioFileType', "au") elif lext in [".sd2"]: CeciliaLib.setVar('audioFileType', "sd2") elif lext in [".caf"]: CeciliaLib.setVar('audioFileType', "caf") if not os.path.isdir(os.path.join(path, folderName)): os.mkdir(os.path.join(path, folderName)) filename = os.path.join(path, folderName, "%s-%s%s" % (name, folderName, ext)) count += 1 (keepGoing, skip) = dlg.Update(count, "Exporting %s" % filename) CeciliaLib.getControlPanel().onBatchProcessing(filename) while (CeciliaLib.getVar("audioServer").isAudioServerRunning()): time.sleep(.1) if CeciliaLib.getVar("useSoundDur"): CeciliaLib.getControlPanel().setTotalTime(totaltime) CeciliaLib.getControlPanel().updateDurationSlider() dlg.Destroy() CeciliaLib.setVar('audioFileType', old_file_type)
ceciliaMainFrame.onOpen(os.path.join(MODULES_PATH, category, file), True) if __name__ == '__main__': reload(sys) sys.setdefaultencoding('utf-8') if not os.path.isdir(TMP_PATH): os.mkdir(TMP_PATH) if not os.path.isfile(os.path.join(TMP_PATH,'.recent.txt')): f = open(os.path.join(TMP_PATH,'.recent.txt'), "w") f.close() if not os.path.isdir(AUTOMATION_SAVE_PATH): os.mkdir(AUTOMATION_SAVE_PATH) audioServer = audio.AudioServer() CeciliaLib.setVar("audioServer", audioServer) try: CeciliaLib.queryAudioMidiDrivers() except: pass app = CeciliaApp(redirect=False) wx.Log.SetLogLevel(0) wx.SetDefaultPyEncoding('utf-8') try: display = wx.Display() numDisp = display.GetCount() if CeciliaLib.getVar("DEBUG"): print 'Numbers of displays:', numDisp