Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TamTamEdit.activity/Edit/EditToolbars.py15
-rw-r--r--TamTamEdit.activity/Edit/MainWindow.py64
2 files changed, 33 insertions, 46 deletions
diff --git a/TamTamEdit.activity/Edit/EditToolbars.py b/TamTamEdit.activity/Edit/EditToolbars.py
index 9d4552e..e966c5d 100644
--- a/TamTamEdit.activity/Edit/EditToolbars.py
+++ b/TamTamEdit.activity/Edit/EditToolbars.py
@@ -76,7 +76,7 @@ class mainToolbar(gtk.Toolbar):
if Config.FEATURES_OGG:
#RecordOgg button
self.recordOggButton = ToggleToolButton('recordO')
- self.recordOggButton.connect('clicked', self.edit.handleAudioRecord)
+ self.recordOggButton.connect('clicked', self.handleRecord)
self.insert(self.recordOggButton, -1)
self.recordOggButton.show()
self.recordOggButton.set_tooltip(_('Record to ogg'))
@@ -126,6 +126,17 @@ class mainToolbar(gtk.Toolbar):
self.insert(self.volumeTempoButton, -1)
self.volumeTempoButton.show()
+ def handleRecord(self, widget, data = None):
+ if widget.get_active():
+ self.playButton.set_active(False)
+ self.edit.handleAudioRecord(widget, data)
+ if widget.get_active():
+ gobject.timeout_add( 500, self._startAudioRecord )
+
+ def _startAudioRecord( self ):
+ self.playButton.set_active(True)
+ return False
+
def handlePlayPause(self, widget, data = None):
if widget.get_active():
self.edit.handlePlay(widget)
@@ -143,8 +154,8 @@ class mainToolbar(gtk.Toolbar):
self.edit._generateToolbar.playButton.set_icon_widget(self.edit._generateToolbar.playButtonImg)
def handleStop(self, widget, data = None):
- self.edit.handleStop(widget, True)
self.playButton.set_active(False)
+ self.edit.handleStop(widget, True)
if self.recordButton.get_active():
self.recordButton.set_active(False)
diff --git a/TamTamEdit.activity/Edit/MainWindow.py b/TamTamEdit.activity/Edit/MainWindow.py
index e613351..01e6670 100644
--- a/TamTamEdit.activity/Edit/MainWindow.py
+++ b/TamTamEdit.activity/Edit/MainWindow.py
@@ -396,7 +396,7 @@ class MainWindow( gtk.EventBox ):
self.setContext( CONTEXT.PAGE )
- self.audioRecordState = False
+ self.audioRecordWidget = None
def createNewTune( self, widget, data=None ):
self.createNewTune3()
@@ -592,47 +592,16 @@ class MainWindow( gtk.EventBox ):
def handleAudioRecord( self, widget, data=None ):
if widget.get_active() == True:
- chooser = gtk.FileChooserDialog(
- title='Save tune as Audio file',
- action=gtk.FILE_CHOOSER_ACTION_SAVE,
- buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))
- filter = gtk.FileFilter()
- filter.add_pattern('*.ogg')
- chooser.set_filter(filter)
- chooser.set_current_folder(Config.INSTANCE_DIR)
-
- for f in chooser.list_shortcut_folder_uris():
- chooser.remove_shortcut_folder_uri(f)
-
- if chooser.run() == gtk.RESPONSE_OK:
- if self.playing:
- self.handleStop()
- else:
- self.handleRewind()
-
- self.audioRecordState = True
- head, tail = os.path.split(chooser.get_filename())
- tailfilt = '_'.join(tail.split())
- self.audioFileName = os.path.join(head, tailfilt)
- if self.audioFileName[-4:] != '.ogg':
- self.audioFileName += '.ogg'
-
- self.audioRecordTimeout = gobject.timeout_add( 500, self._startAudioRecord )
- self.audioRecordTick = -1
- chooser.destroy()
+ self.audioRecordWidget = widget
+ self.audioRecordTick = -1
else:
- self.audioRecordState = False
-
- def _startAudioRecord( self ):
- if not self.playing:
- self.handlePlay()
- return False
+ self.audioRecordWidget = None
def handlePlay( self, widget = None ):
if widget:
widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
- if self.audioRecordState:
+ if self.audioRecordWidget:
filename = Config.TMP_DIR + "/perf.wav"
self.csnd.inputMessage( Config.CSOUND_RECORD_PERF % filename)
time.sleep( 0.01 )
@@ -695,7 +664,7 @@ class MainWindow( gtk.EventBox ):
if widget:
widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
- if self.audioRecordState:
+ if self.audioRecordWidget:
filename = Config.TMP_DIR + "/perf.wav"
self.csnd.inputMessage( Config.CSOUND_STOP_RECORD_PERF % filename)
time.sleep( 0.01 )
@@ -707,24 +676,31 @@ class MainWindow( gtk.EventBox ):
self.csnd.loopPause()
self.csnd.loopDeactivate()
- if self.audioRecordState:
+ if self.audioRecordWidget:
time.sleep(4)
self.csnd.__del__()
time.sleep(0.5)
- self.audioRecordState = False
- command = "gst-launch-0.10 filesrc location=" + Config.TMP_DIR + "/perf.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=" + self.audioFileName
+ tmp_ogg = os.path.join(Config.TMP_DIR, "perf.ogg")
+
+ command = "gst-launch-0.10 filesrc location=" + Config.TMP_DIR + "/perf.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=" + tmp_ogg
command2 = "rm " + Config.TMP_DIR + "/perf.wav"
OS.system(command)
OS.system(command2)
+ from datetime import datetime
+ title = '%s %s.ogg' % (self.activity.get_title(),
+ datetime.now().isoformat(' '))
+
jobject = datastore.create()
- jobject.metadata['title'] = os.path.split(self.audioFileName)[1]
+ jobject.metadata['title'] = title
jobject.metadata['keep'] = '1'
jobject.metadata['mime_type'] = 'audio/ogg'
- jobject.file_path = self.audioFileName
+ jobject.file_path = tmp_ogg
datastore.write(jobject)
- os.remove(self.audioFileName)
+ os.remove(tmp_ogg)
+ self.audioRecordWidget.set_active(False)
+ self.audioRecordWidget = None
self.csnd.__init__()
time.sleep(0.1)
@@ -776,7 +752,7 @@ class MainWindow( gtk.EventBox ):
else:
self.trackInterface.predrawPage()
- if self.audioRecordState:
+ if self.audioRecordWidget:
if self.audioRecordTick > curTick: # we've looped around
self.handleStop()
else: