=== modified file 'Jokosher/Event.py' --- Jokosher/Event.py 2008-03-29 21:16:55 +0000 +++ Jokosher/Event.py 2008-03-30 00:12:36 +0000 @@ -87,6 +87,7 @@ self.selection = [0, 0] # List start and end of selection (for fades, etc) measured in seconds self.levels = [] # Array of audio levels to be drawn for this event + self.preciseLevels = [] # Array of tuples with audio levels and timestamps self.id = instrument.project.GenerateUniqueID(id) #check is id is already taken, then set it. self.instrument = instrument # The parent instrument @@ -579,6 +580,7 @@ self.levels.append(newLevel) end = st["endtime"] / float(gst.SECOND) + self.preciseLevels.append( (newLevel, end) ) self.loadingLength = int(end) # Only send events every second processed to reduce GUI load === modified file 'Jokosher/EventViewer.py' --- Jokosher/EventViewer.py 2008-03-14 22:03:19 +0000 +++ Jokosher/EventViewer.py 2008-03-30 00:18:44 +0000 @@ -19,6 +19,7 @@ import gettext _ = gettext.gettext import Globals +import itertools #========================================================================= @@ -351,29 +352,47 @@ context.set_source_rgb(*self._BACKGROUND_RGB) context.fill() - if self.event.levels and (self.event.duration or self.event.loadingLength): + if self.event.preciseLevels and (self.event.duration or self.event.loadingLength): if self.event.loadingLength: - scale = (self.event.loadingLength * self.project.viewScale) / float(len(self.event.levels)) + duration = self.event.loadingLength else: - scale = (self.event.duration * self.project.viewScale) / float(len(self.event.levels)) + duration = self.event.duration - # Draw waveform - x_pos = int(rect.x/scale) - x = 0 - skipFactor = max(int(self._MIN_POINT_SEPARATION / scale), 1) context.move_to(0,rect.height) # get levels list - fadedLevels = self.event.GetFadeLevels() + #fadedLevels = self.event.GetFadeLevels() - for peak in fadedLevels[x_pos::skipFactor]: - x = (x_pos * scale) - rect.x + levels = self.event.preciseLevels + length = len(levels) + + starting_time = int(rect.x / self.project.viewScale) + starting_index = int(starting_time * length / duration) + + s_time = levels[starting_index][1] + if s_time > starting_time: + while starting_index > 0 and s_time > starting_time: + starting_index -= 1 + s_time = levels[starting_index][1] + elif s_time < starting_time: + while starting_index < length and s_time < starting_time: + starting_index += 1 + s_time = levels[starting_index][1] + # we want to end up one before the beginning + starting_index -= 1 + + last_x = -2 + iterator = itertools.islice(levels, starting_index, length) + for peak, time in iterator: + x = int((time - starting_time) * self.project.viewScale) + if (x - last_x) < self._MIN_POINT_SEPARATION: + continue + peakOnScreen = int(peak * rect.height) context.line_to(x, rect.height - peakOnScreen) if x > rect.width: break - x_pos += skipFactor context.line_to(x, rect.height) === modified file 'Jokosher/Project.py' --- Jokosher/Project.py 2008-03-15 19:58:49 +0000 +++ Jokosher/Project.py 2008-03-29 16:47:59 +0000 @@ -1341,7 +1341,7 @@ except: pass Globals.debug("Output device: %s" % outdevice) - sinkElement.set_property("device", outdevice) + sinkElement.set_property("device", "default") Globals.debug("Using alsasink for audio output") elif sinkString != "autoaudiosink": === modified file 'Jokosher/TransportManager.py' --- Jokosher/TransportManager.py 2007-05-24 08:55:50 +0000 +++ Jokosher/TransportManager.py 2008-03-29 17:28:00 +0000 @@ -14,6 +14,7 @@ pygst.require("0.10") import gst import gobject +import Globals #========================================================================= @@ -348,6 +349,7 @@ Reads the current playhead cursor position by querying pipeline. """ pos = self.pipeline.query_position(gst.FORMAT_TIME)[0] + Globals.debug("update position: %.9f" % (float(pos) / gst.SECOND)) self.SetPosition(float(pos) / gst.SECOND) #_____________________________________________________________________ === modified file 'Jokosher/Utils.py' --- Jokosher/Utils.py 2008-03-14 22:03:19 +0000 +++ Jokosher/Utils.py 2008-03-16 17:58:44 +0000 @@ -16,8 +16,8 @@ import Globals import gst -if gst.pygst_version >= (0, 10, 10): - import gst.pbutils +#if gst.pygst_version >= (0, 10, 10): + # import gst.pbutils #_____________________________________________________________________