Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
    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()
Beispiel #4
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #8
0
 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()
Beispiel #9
0
 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()
Beispiel #10
0
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)
Beispiel #11
0
    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)
Beispiel #12
0
 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])
Beispiel #13
0
 def changeFileType(self, index, label):
     CeciliaLib.setVar("audioFileType", label)
Beispiel #14
0
 def changeFPO(self, index, choice):
     CeciliaLib.setVar("defaultFirstOutput", index)
Beispiel #15
0
 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
Beispiel #16
0
 def closeInterface(self):
     if CeciliaLib.getVar("interface") is not None:
         CeciliaLib.getVar("interface").onClose(None)
         CeciliaLib.setVar("interface", None)
Beispiel #17
0
        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"):
Beispiel #18
0
 def onUseSoundDuration(self, evt):
     CeciliaLib.setVar("useSoundDur", evt.GetInt())
Beispiel #19
0
 def enableAutomaticBinding(self, state):
     CeciliaLib.setVar("automaticMidiBinding", state)
Beispiel #20
0
 def enableVerbose(self, state):
     CeciliaLib.setVar("DEBUG", state)
     CeciliaLib.getVar("audioServer").updateDebug()
Beispiel #21
0
 def enableGraphTexture(self, state):
     CeciliaLib.setVar("graphTexture", state)
     if CeciliaLib.getVar("grapher") is not None:
         CeciliaLib.getVar("grapher").plotter.draw()
Beispiel #22
0
 def changeSr(self, index, label):
     sr = int(label.strip())
     CeciliaLib.setVar("sr", sr)
Beispiel #23
0
 def changeSampSize(self, index, label):
     CeciliaLib.setVar("sampSize", BIT_DEPTHS[label])
Beispiel #24
0
 def changeNchnls(self, index, choice):
     nchnls = int(choice)
     CeciliaLib.setVar("defaultNchnls", nchnls)
     CeciliaLib.setVar("nchnls", nchnls)
     CeciliaLib.updateNchnlsDevices()
Beispiel #25
0
 def onShowSpectrum(self, event):
     if event.GetInt():
         CeciliaLib.setVar('showSpectrum', 1)
     else:
         CeciliaLib.setVar('showSpectrum', 0)
Beispiel #26
0
 def changeDefaultTotalTime(self, index, label):
     CeciliaLib.setVar("defaultTotalTime",
                       float(self.choiceTotalTime.getLabel().strip()))
Beispiel #27
0
 def changeGlobalFade(self, index, label):
     CeciliaLib.setVar("globalFade",
                       float(self.choiceGlobalFade.getLabel().strip()))
Beispiel #28
0
 def onUseMidi(self, event):
     CeciliaLib.setVar("useMidi", event.GetInt())
Beispiel #29
0
 def enableTooltips(self, state):
     CeciliaLib.setVar("useTooltips", state)
     CeciliaLib.updateTooltips()
Beispiel #30
0
    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)
Beispiel #31
0
        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