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