diff options
-rw-r--r-- | Config.py | 2 | ||||
-rw-r--r-- | Edit/EditToolbars.py | 385 | ||||
-rw-r--r-- | Edit/MainWindow.py | 17 | ||||
-rw-r--r-- | NEWS | 6 | ||||
-rwxr-xr-x | TamTam.py | 2 | ||||
-rw-r--r-- | Util/Clooper/aclient.cpp | 27 | ||||
-rwxr-xr-x | Util/Clooper/aclient.so | bin | 49464 -> 49464 bytes | |||
-rw-r--r-- | Util/Clooper/audio.cpp | 9 | ||||
-rw-r--r-- | activity/activity.info | 2 | ||||
-rwxr-xr-x | icons/accept.svg | 18 | ||||
-rwxr-xr-x | icons/cancel.svg | 11 | ||||
-rw-r--r-- | icons/pause.svg | 14 | ||||
-rwxr-xr-x | icons/test.svg | 9 | ||||
-rw-r--r-- | po/TamTam.pot | 684 | ||||
-rw-r--r-- | po/de.po | 741 |
15 files changed, 1424 insertions, 503 deletions
@@ -378,7 +378,7 @@ IMAGE_ROOT = TAM_TAM_ROOT + '/Resources/Images/' MAIN_WINDOW_PADDING = 5 -BG_COLOR = '#999999' +BG_COLOR = '#515151' NOTE_HEIGHT = 9 # pixels NOTE_IMAGE_PADDING = 6 diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py index 18625a2..22d470f 100644 --- a/Edit/EditToolbars.py +++ b/Edit/EditToolbars.py @@ -46,7 +46,7 @@ class mainToolbar(gtk.Toolbar): self.playButton.show() #Pause button - self.pauseButton = ToolButton('pstop') + self.pauseButton = ToolButton('pause') self.pauseButton.connect('clicked', self.handlePause) self.pauseButton.set_sensitive(False) self.insert(self.pauseButton, -1) @@ -66,7 +66,7 @@ class mainToolbar(gtk.Toolbar): self.insert(self.recordButton, -1) self.recordButton.show() - _insertSeparator(2) + _insertSeparator(13) #Pencil button self._pencilPalette = pencilPalette(_('Draw Tool'), self.edit, self) @@ -76,7 +76,21 @@ class mainToolbar(gtk.Toolbar): self.insert(self.pencilButton, -1) self.pencilButton.show() - _insertSeparator(4) + #Duplicate button + self.duplicateButton = ToggleToolButton('duplicate') + self.duplicateButton.connect('toggled', self.handleDuplicate) + self.insert(self.duplicateButton, -1) + self.duplicateButton.show() + + _insertSeparator(18) + + #Volume / Tempo button + self._volumeTempoPalette = volumeTempoPalette(_('Volume / Tempo'), self.edit) + self.volumeTempoButton = ToggleToolButton('voltemp') + self.volumeTempoButton.set_palette(self._volumeTempoPalette) + #self.volumeTempoButton.connect(None) + self.insert(self.volumeTempoButton, -1) + self.volumeTempoButton.show() #Generation button self._generationPalette = generationPalette(_('Generation'), self.edit) @@ -90,24 +104,9 @@ class mainToolbar(gtk.Toolbar): self._propertiesPalette = propertiesPalette(_('Properties'), self.edit) self.propsButton = ToggleToolButton('props') self.propsButton.set_palette(self._propertiesPalette) - #self.propsButton.connect(None) self.insert(self.propsButton, -1) self.propsButton.show() - #Duplicate button - self.duplicateButton = ToggleToolButton('duplicate') - self.duplicateButton.connect('toggled', self.handleDuplicate) - self.insert(self.duplicateButton, -1) - self.duplicateButton.show() - - #Volume / Tempo button - self._volumeTempoPalette = volumeTempoPalette(_('Volume / Tempo'), self.edit) - self.volumeTempoButton = ToggleToolButton('voltemp') - self.volumeTempoButton.set_palette(self._volumeTempoPalette) - #self.volumeTempoButton.connect(None) - self.insert(self.volumeTempoButton, -1) - self.volumeTempoButton.show() - def handlePlayStop(self, widget, data = None): if widget.get_active(): self.edit.handlePlay(widget) @@ -140,7 +139,6 @@ class mainToolbar(gtk.Toolbar): elif self.edit.getContext() == 2: #Note self.edit.noteDuplicateWidget(widget) widget.set_active(False) - class playPalette(Palette): def __init__(self, label, edit): @@ -313,10 +311,10 @@ class generationPalette(Palette): self.scaleModeBox.pack_start(self.scaleBoxHBox, False, False, padding = 5) self.scaleModeBox.pack_start(self.modeBoxHBox, False, False, padding = 5) - self.acceptButton = gtk.Button(label = _('Accept')) + self.acceptButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/accept.svg') # self.acceptButton = IconButton('stock-accept') self.acceptButton.connect('clicked',self.generate) - self.cancelButton = gtk.Button(label = _('Cancel')) + self.cancelButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/cancel.svg') self.cancelButton.connect('clicked',self.cancel) # self.cancelButton = IconButton('activity-stop') self.decisionBox.pack_start(self.cancelButton, False, False, padding = 5) @@ -385,15 +383,31 @@ class generationPalette(Palette): class propertiesPalette(Palette): def __init__(self, label, edit): Palette.__init__(self, label) + self.connect('popup', self.handlePopup) + self.connect('popdown', self.handlePopdown) self.edit = edit + self.filterTypes = [_('None'), _('Lowpass'), _('Bandpass'), _('Highpass')] + self.geneTypes = [_('Line'),_('Drunk'),_('Drone and Jump'),_('Repeater'),_('Loop Segments')] + self.colors = [_('Purple'), _('Green'), _('Blue'), _('Yellow')] + self.currentFilterType = self.filterTypes[0] + self.currentGeneType = self.geneTypes[0] + + self.setup = False + self.geneCheckButtonDic = {} + + self.pageIds = [] + self.context = "page" + self.mainBox = gtk.VBox() self.gridDivisionBox = gtk.HBox() self.gridDivisionLabel = gtk.Label(_('Grid division: ')) - self.gridDivisionSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.gridDivisionSliderAdj = gtk.Adjustment(4, 2, 12, 1, 1, 0) self.gridDivisionSlider = gtk.HScale(adjustment = self.gridDivisionSliderAdj) + self.gridDivisionSlider.set_digits(0) + self.gridDivisionSlider.connect('button-release-event', self.handleBeat) self.gridDivisionSlider.set_size_request(200,-1) self.gridDivisionSlider.set_value_pos(gtk.POS_RIGHT) self.gridDivisionBox.pack_start(self.gridDivisionLabel, False, False, padding = 5) @@ -401,13 +415,23 @@ class propertiesPalette(Palette): self.pageColorBox = gtk.HBox() self.pageColorLabel = gtk.Label(_('Page color: ')) + self.pageColorComboBox = BigComboBox() + for color in self.colors: + self.pageColorComboBox.append_item(self.colors.index(color), color) + self.pageColorComboBox.set_active(0) + self.pageColorComboBox.connect('changed', self.handleColor) self.pageColorBox.pack_start(self.pageColorLabel, False, False, padding = 5) + self.pageColorBox.pack_end(self.pageColorComboBox, False, False, padding = 55) self.transposeBox = gtk.HBox() self.transposeLabel = gtk.Label(_('Transposition: ')) self.transposeDownButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/arrow-down.svg') + self.transposeDownButton.connect('clicked', self.stepPitch, -1) self.transposeUpButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/arrow-up.svg') + self.transposeUpButton.connect('clicked', self.stepPitch, 1) self.transposeCheckButton = gtk.CheckButton() + self.transposeCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['transpose'] = self.transposeCheckButton self.transposeBox.pack_start(self.transposeLabel, False, False, padding = 5) self.transposeBox.pack_end(self.transposeCheckButton, False, False, padding = 5) self.transposeBox.pack_end(self.transposeUpButton, False, False, padding = 50) @@ -416,8 +440,12 @@ class propertiesPalette(Palette): self.volumeBox = gtk.HBox() self.volumeLabel = gtk.Label(_('Volume: ')) self.volumeDownButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/arrow-down.svg') + self.volumeDownButton.connect('clicked', self.stepVolume, -0.1) self.volumeUpButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/arrow-up.svg') + self.volumeUpButton.connect('clicked', self.stepVolume, 0.1) self.volumeCheckButton = gtk.CheckButton() + self.volumeCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['volume'] = self.volumeCheckButton self.volumeBox.pack_start(self.volumeLabel, False, False, padding = 5) self.volumeBox.pack_end(self.volumeCheckButton, False, False, padding = 5) self.volumeBox.pack_end(self.volumeUpButton, False, False, padding = 50) @@ -425,82 +453,99 @@ class propertiesPalette(Palette): self.panBox = gtk.HBox() self.panLabel = gtk.Label(_('Pan: ')) - self.panSliderAdj = gtk.Adjustment(value=50, lower=0, upper=100, step_incr=1, page_incr=0, page_size=0) + self.panSliderAdj = gtk.Adjustment(0.5, 0, 1, .1, .1, 0) + self.panSliderAdj.connect('value-changed', self.handlePan) self.panSlider = gtk.HScale(adjustment = self.panSliderAdj) self.panSlider.set_size_request(200,-1) self.panSlider.set_value_pos(gtk.POS_RIGHT) self.panCheckButton = gtk.CheckButton() + self.panCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['pan'] = self.panCheckButton self.panBox.pack_start(self.panLabel, False, False, padding = 5) self.panBox.pack_end(self.panCheckButton, False, False, padding = 5) self.panBox.pack_end(self.panSlider, False, False, padding = 5) self.reverbBox = gtk.HBox() self.reverbLabel = gtk.Label(_('Reverb: ')) - self.reverbSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.reverbSliderAdj = gtk.Adjustment(0.1, 0, 1, 0.1, 0.1, 0) + self.reverbSliderAdj.connect("value-changed", self.handleReverb) self.reverbSlider = gtk.HScale(adjustment = self.reverbSliderAdj) self.reverbSlider.set_size_request(200,-1) self.reverbSlider.set_value_pos(gtk.POS_RIGHT) self.reverbCheckButton = gtk.CheckButton() + self.reverbCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['reverb'] = self.reverbCheckButton self.reverbBox.pack_start(self.reverbLabel, False, False, padding = 5) self.reverbBox.pack_end(self.reverbCheckButton, False, False, padding = 5) self.reverbBox.pack_end(self.reverbSlider, False, False, padding = 5) self.attackDurBox = gtk.HBox() self.attackDurLabel = gtk.Label(_('Attack duration: ')) - self.attackDurSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.attackDurSliderAdj = gtk.Adjustment(0.04, 0.03, 1, .01, .01, 0) + self.attackDurSliderAdj.connect('value-changed', self.handleAttack) self.attackDurSlider = gtk.HScale(adjustment = self.attackDurSliderAdj) self.attackDurSlider.set_size_request(200,-1) self.attackDurSlider.set_value_pos(gtk.POS_RIGHT) self.attackDurCheckButton = gtk.CheckButton() + self.attackDurCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['attack'] = self.attackDurCheckButton self.attackDurBox.pack_start(self.attackDurLabel, False, False, padding = 5) self.attackDurBox.pack_end(self.attackDurCheckButton, False, False, padding = 5) self.attackDurBox.pack_end(self.attackDurSlider, False, False, padding = 5) self.decayDurBox = gtk.HBox() self.decayDurLabel = gtk.Label(_('Decay duration: ')) - self.decayDurSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.decayDurSliderAdj = gtk.Adjustment(0.31, 0.03, 1, .01, .01, 0) + self.decayDurSliderAdj.connect('value-changed', self.handleDecay) self.decayDurSlider = gtk.HScale(adjustment = self.decayDurSliderAdj) self.decayDurSlider.set_size_request(200,-1) self.decayDurSlider.set_value_pos(gtk.POS_RIGHT) self.decayDurCheckButton = gtk.CheckButton() + self.decayDurCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['decay'] = self.decayDurCheckButton self.decayDurBox.pack_start(self.decayDurLabel, False, False, padding = 5) self.decayDurBox.pack_end(self.decayDurCheckButton, False, False, padding = 5) self.decayDurBox.pack_end(self.decayDurSlider, False, False, padding = 5) + self.filterTypeBox = gtk.HBox() + self.filterTypeLabel = gtk.Label(_('Filter Type: ')) + self.filterTypeComboBox = BigComboBox() + for filtertype in self.filterTypes: + self.filterTypeComboBox.append_item(self.filterTypes.index(filtertype), filtertype, Config.TAM_TAM_ROOT + '/icons/test.svg', (30,30)) + self.filterTypeComboBox.connect('changed', self.handleFilterTypes) + self.filterTypeBox.pack_start(self.filterTypeLabel, False, False, padding = 5) + self.filterTypeBox.pack_end(self.filterTypeComboBox, False, False, padding = 55) + self.filterCutoffBox = gtk.HBox() self.filterCutoffLabel = gtk.Label(_('Filter cutoff: ')) - self.filterCutoffSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.filterCutoffSliderAdj = gtk.Adjustment(1000, 100, 7000, 100, 100, 0) + self.filterCutoffSliderAdj.connect('value-changed', self.handleFilter) self.filterCutoffSlider = gtk.HScale(adjustment = self.filterCutoffSliderAdj) self.filterCutoffSlider.set_size_request(200,-1) self.filterCutoffSlider.set_value_pos(gtk.POS_RIGHT) self.filterCutoffCheckButton = gtk.CheckButton() + self.filterCutoffCheckButton.connect('toggled', self.handleGeneCheckButton) + self.geneCheckButtonDic['filter'] = self.filterCutoffCheckButton self.filterCutoffBox.pack_start(self.filterCutoffLabel, False, False, padding = 5) self.filterCutoffBox.pack_end(self.filterCutoffCheckButton, False, False, padding = 5) self.filterCutoffBox.pack_end(self.filterCutoffSlider, False, False, padding = 5) - self.filterTypeBox = gtk.HBox() - self.filterTypeLabel = gtk.Label(_('Filter Type: ')) - self.filterTypeComboBox = BigComboBox() - for type in [_('Lowpass'),_('Bandpass'),_('Highpass')]: - self.filterTypeComboBox.append_item(0, type) - self.filterTypeComboBox.set_active(0) - self.filterTypeBox.pack_start(self.filterTypeLabel, False, False, padding = 5) - self.filterTypeBox.pack_end(self.filterTypeComboBox, False, False, padding = 55) - + self.generationMainBox = gtk.VBox() self.generationLabel = gtk.Label(_('Generation')) self.generationTypeBox = gtk.HBox() self.generationTypeLabel = gtk.Label(_('Type: ')) self.generationTypeComboBox = BigComboBox() - for type in [_('Line'),_('Drunk'),_('Drone and Jump'),_('Repeater'),_('Loop Segments')]: - self.generationTypeComboBox.append_item(0, type) + for genetype in self.geneTypes: + self.generationTypeComboBox.append_item(self.geneTypes.index(genetype), genetype, Config.TAM_TAM_ROOT + '/icons/test.svg', (30,30)) + self.generationTypeComboBox.connect('changed', self.handleGeneTypes) self.generationTypeComboBox.set_active(0) self.generationTypeBox.pack_start(self.generationTypeLabel, False, False, padding = 5) self.generationTypeBox.pack_end(self.generationTypeComboBox, False, False, padding = 55) self.minimumBox = gtk.HBox() self.minimumLabel = gtk.Label(_('Minimum: ')) - self.minimumSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.minimumSliderAdj = gtk.Adjustment(0, 0, 100, 1, 1, 0) self.minimumSlider = gtk.HScale(adjustment = self.minimumSliderAdj) self.minimumSlider.set_size_request(200,-1) self.minimumSlider.set_value_pos(gtk.POS_RIGHT) @@ -509,7 +554,7 @@ class propertiesPalette(Palette): self.maximumBox = gtk.HBox() self.maximumLabel = gtk.Label(_('Maximum: ')) - self.maximumSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.maximumSliderAdj = gtk.Adjustment(100, 0, 100, 1, 1, 0) self.maximumSlider = gtk.HScale(adjustment = self.maximumSliderAdj) self.maximumSlider.set_size_request(200,-1) self.maximumSlider.set_value_pos(gtk.POS_RIGHT) @@ -518,7 +563,7 @@ class propertiesPalette(Palette): self.randomBox = gtk.HBox() self.randomLabel = gtk.Label(_('Random: ')) - self.randomSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.randomSliderAdj = gtk.Adjustment(20, 0, 100, 1, 1, 0) self.randomSlider = gtk.HScale(adjustment = self.randomSliderAdj) self.randomSlider.set_size_request(200,-1) self.randomSlider.set_value_pos(gtk.POS_RIGHT) @@ -526,8 +571,8 @@ class propertiesPalette(Palette): self.randomBox.pack_end(self.randomSlider, False, False, padding = 52) self.decisionBox = gtk.HBox() - self.acceptButton = Icon('stock-accept') - self.cancelButton = Icon('activity-stop') + self.acceptButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/accept.svg') + self.cancelButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/cancel.svg') self.decisionBox.pack_start(self.cancelButton, False, False, padding = 5) self.decisionBox.pack_start(self.acceptButton, False, False, padding = 5) @@ -539,15 +584,255 @@ class propertiesPalette(Palette): self.mainBox.pack_start(self.reverbBox, padding = 5) self.mainBox.pack_start(self.attackDurBox, padding = 5) self.mainBox.pack_start(self.decayDurBox, padding = 5) - self.mainBox.pack_start(self.filterCutoffBox, padding = 5) self.mainBox.pack_start(self.filterTypeBox, padding = 5) - self.mainBox.pack_start(self.generationLabel, padding = 15) - self.mainBox.pack_start(self.generationTypeBox, padding = 5) - self.mainBox.pack_start(self.minimumBox, padding = 5) - self.mainBox.pack_start(self.maximumBox, padding = 5) - self.mainBox.pack_start(self.randomBox, padding = 5) - self.mainBox.pack_start(self.decisionBox, padding = 5) + self.mainBox.pack_start(self.filterCutoffBox, padding = 5) + self.generationMainBox.pack_start(self.generationLabel, padding = 15) + self.generationMainBox.pack_start(self.generationTypeBox, padding = 5) + self.generationMainBox.pack_start(self.minimumBox, padding = 5) + self.generationMainBox.pack_start(self.maximumBox, padding = 5) + self.generationMainBox.pack_start(self.randomBox, padding = 5) + self.generationMainBox.pack_start(self.decisionBox, padding = 5) + self.mainBox.pack_start(self.generationMainBox, padding = 5) self.mainBox.show_all() + self.generationMainBox.hide() + self.set_content(self.mainBox) + + def handlePopup(self, widget, data = None): + if self.edit.getContext() == 0: #Page + self.setContext('page', self.edit._mainToolbar._generationPalette.scale, self.edit.tuneInterface.getSelectedIds()) + elif self.edit.getContext() == 1: #Track + self.setContext('track', self.edit._mainToolbar._generationPalette.scale, self.edit.tuneInterface.getSelectedIds(), [ i for i in range(Config.NUMBER_OF_TRACKS) if self.edit.trackSelected[i] ]) + elif self.edit.getContext() == 2: #Note + ids = self.edit.trackInterface.getSelectedNotes() + notes = { self.edit.displayedPage: {} } + for t in range(Config.NUMBER_OF_TRACKS): + if len(ids[t]): + notes[self.edit.displayedPage][t] = [ self.edit.noteDB.getNote( self.edit.displayedPage, t, id ) for id in ids[t] ] + self.setContext('note', self.edit._mainToolbar._generationPalette.scale, notes = notes) + + def handlePopdown(self, widget, data = None): + self.resetGeneCheckButton() + + def setContext( self, context, scale, pageIds = None, trackIds = None, notes = {} ): + self.context = context + self.scale = GenerationConstants.SCALES[scale] + self.notes = {} + self.pageIds = pageIds + self.trackIds = trackIds + + if context == "page": + self.trackIds = [0,1,2,3,4] + for p in pageIds: + self.notes[p] = {} + for t in range(Config.NUMBER_OF_TRACKS): + self.notes[p][t] = self.edit.noteDB.getNotesByTrack( p, t ) + page = self.edit.noteDB.getPage(pageIds[0]) + self.gridDivisionSliderAdj.set_value(page.beats) + elif context == "track": + for p in pageIds: + self.notes[p] = {} + for t in trackIds: + self.notes[p][t] = self.edit.noteDB.getNotesByTrack( p, t ) + else: + self.notes = notes + self.pageIds = self.notes.keys() + self.trackIds = self.notes[self.pageIds[0]].keys() + + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + # initialize values from first note + self.setup = True + n = self.notes[p][t][0] + self.panSliderAdj.set_value( n.cs.pan ) + self.reverbSliderAdj.set_value( n.cs.reverbSend ) + self.attackDurSliderAdj.set_value( n.cs.attack ) + self.decayDurSliderAdj.set_value( n.cs.decay ) + self.filterTypeComboBox.set_active(n.cs.filterType) + self.currentFilterType = n.cs.filterType + self.filterCutoffSliderAdj.set_value( n.cs.filterCutoff ) + self.setup = False + + def resetGeneCheckButton(self): + for key in self.geneCheckButtonDic: + self.geneCheckButtonDic[key].set_active(False) + + def handleGeneCheckButton(self, widget, data = None): + hidden = True + if widget.get_active(): + self.generationMainBox.show() + else: + for key in self.geneCheckButtonDic: + if self.geneCheckButtonDic[key].get_active(): + hidden = False + if hidden: + self.generationMainBox.hide() + + + def handleBeat(self, widget, signal_id): + beats = int(widget.get_adjustment().value) + stream = [] + for page in self.pageIds: + stream += [ page, beats ] + if len(stream): + self.edit.noteDB.updatePages( [ PARAMETER.PAGE_BEATS, len(stream)//2 ] + stream ) + + def handleColor(self, widget): + index = widget.props.value + stream = [] + for page in self.pageIds: + stream += [ page, index ] + if len(stream): + self.edit.noteDB.updatePages( [ PARAMETER.PAGE_COLOR, len(stream)//2 ] + stream ) + + def stepPitch(self, widget, step): + stream = [] + for p in self.notes: + for t in self.notes[p]: + substream = [] + if step > 0: + if t != Config.NUMBER_OF_TRACKS-1: # regular note + for n in self.notes[p][t]: + if n.cs.pitch != Config.MAXIMUM_PITCH: + substream += [ n.id, min( Config.MAXIMUM_PITCH, n.cs.pitch + step ) ] + else: # drum note + for n in self.notes[p][t]: + if n.cs.pitch != Config.MAXIMUM_PITCH_DRUM: + substream += [ n.id, min( Config.MAXIMUM_PITCH_DRUM, n.cs.pitch + step*Config.PITCH_STEP_DRUM ) ] + else: + if t != Config.NUMBER_OF_TRACKS-1: # regular note + for n in self.notes[p][t]: + if n.cs.pitch != Config.MINIMUM_PITCH: + substream += [ n.id, max( Config.MINIMUM_PITCH, n.cs.pitch + step ) ] + else: # drum note + for n in self.notes[p][t]: + if n.cs.pitch != Config.MINIMUM_PITCH_DRUM: + substream += [ n.id, max( Config.MINIMUM_PITCH_DRUM, n.cs.pitch + step*Config.PITCH_STEP_DRUM ) ] + if len(substream): + stream += [ p, t, PARAMETER.PITCH, len(substream)//2 ] + substream + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + def stepVolume(self, widget, step): + stream = [] + for p in self.notes: + for t in self.notes[p]: + substream = [] + if step > 0: + for n in self.notes[p][t]: + if n.cs.amplitude != Config.MAXIMUM_AMPLITUDE: + substream += [ n.id, min( Config.MAXIMUM_AMPLITUDE, n.cs.amplitude + step ) ] + else: + for n in self.notes[p][t]: + if n.cs.amplitude != Config.MINIMUM_AMPLITUDE: + substream += [ n.id, max( Config.MINIMUM_AMPLITUDE, n.cs.amplitude + step ) ] + if len(substream): + stream += [ p, t, PARAMETER.AMPLITUDE, len(substream)//2 ] + substream + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + def handlePan(self, adjust): + if not self.setup: + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.PAN, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + def handleReverb(self, adjust): + if not self.setup: + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.REVERB, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + def handleAttack(self, adjust): + if not self.setup: + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.ATTACK, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + def handleDecay(self, adjust): + if not self.setup: + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.DECAY, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) + + + def handleFilterTypes(self, widget): + self.currentFilterType = widget.props.value + + if not self.currentFilterType: + self.filterCutoffSlider.set_sensitive(False) + else: + self.filterCutoffSlider.set_sensitive(True) + + if not self.setup: + if self.currentFilterType: + typestream = [] + cutoffstream = [] + cutoff = self.filterCutoffSliderAdj.value + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + substream = [] + typestream += [ p, t, PARAMETER.FILTERTYPE, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + typestream += [ n.id, self.currentFilterType ] + if n.cs.filterCutoff != cutoff: + substream += [ n.id, cutoff ] + if len(substream): + cutoffstream += [ p, t, PARAMETER.FILTERCUTOFF, len(substream)//2 ] + substream + if len(typestream): + self.edit.noteDB.updateNotes( typestream + [-1] ) + if len(cutoffstream): + self.edit.noteDB.updateNotes( cutoffstream + [-1] ) + else: + self.currentFilterType = 0 + typestream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + typestream += [ p, t, PARAMETER.FILTERTYPE, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + typestream += [ n.id, 0 ] + if len(typestream): + self.edit.noteDB.updateNotes( typestream + [-1] ) + + def handleGeneTypes(self, widget): + self.currentGeneType = widget.props.value + + def handleFilter(self, adjust): + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.FILTERCUTOFF, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py index 15d0468..b25cf62 100644 --- a/Edit/MainWindow.py +++ b/Edit/MainWindow.py @@ -135,7 +135,8 @@ class MainWindow( SubActivity ): self.GUI["2instrument1volBox"] = gtk.VBox() self.GUI["2instrument1volumeAdjustment"] = gtk.Adjustment( self._data["track_volume"][1], 0, 100, 1, 1, 0 ) #self.GUI["2instrument1volumeAdjustment"].connect( "value_changed", self.onTrackVolumeChanged, 0 ) - self.GUI["2instrument1volumeSlider"] = ImageVScale( Config.IMAGE_ROOT+"sliderInst1.png", self.GUI["2instrument1volumeAdjustment"], 6 ) + self.GUI["2instrument1volumeSlider"] = gtk.VScale(self.GUI["2instrument1volumeAdjustment"]) + self.GUI["2instrument1volumeSlider"].set_draw_value(False) self.GUI["2instrument1volumeSlider"].set_inverted(True) self.GUI["2instrument1volumeSlider"].set_size_request( 30, -1 ) self.GUI["2instrument1volumeAdjustment"].connect( "value-changed", self.handleTrackVolume, 0 ) @@ -156,7 +157,8 @@ class MainWindow( SubActivity ): self.GUI["2instrument2volBox"] = gtk.VBox() self.GUI["2instrument2volumeAdjustment"] = gtk.Adjustment( self._data["track_volume"][1], 0, 100, 1, 1, 0 ) #self.GUI["2instrument2volumeAdjustment"].connect( "value_changed", self.onTrackVolumeChanged, 1 ) - self.GUI["2instrument2volumeSlider"] = ImageVScale( Config.IMAGE_ROOT+"sliderInst2.png", self.GUI["2instrument2volumeAdjustment"], 6 ) + self.GUI["2instrument2volumeSlider"] = gtk.VScale(self.GUI["2instrument2volumeAdjustment"]) + self.GUI["2instrument2volumeSlider"].set_draw_value(False) self.GUI["2instrument2volumeSlider"].set_inverted(True) self.GUI["2instrument2volumeSlider"].set_size_request( 30, -1 ) self.GUI["2instrument2volumeAdjustment"].connect( "value-changed", self.handleTrackVolume, 1 ) @@ -177,7 +179,8 @@ class MainWindow( SubActivity ): self.GUI["2instrument3volBox"] = gtk.VBox() self.GUI["2instrument3volumeAdjustment"] = gtk.Adjustment( self._data["track_volume"][2], 0, 100, 1, 1, 0 ) #self.GUI["2instrument3volumeAdjustment"].connect( "value_changed", self.onTrackVolumeChanged, 2 ) - self.GUI["2instrument3volumeSlider"] = ImageVScale( Config.IMAGE_ROOT+"sliderInst3.png", self.GUI["2instrument3volumeAdjustment"], 6 ) + self.GUI["2instrument3volumeSlider"] = gtk.VScale(self.GUI["2instrument3volumeAdjustment"]) + self.GUI["2instrument3volumeSlider"].set_draw_value(False) self.GUI["2instrument3volumeSlider"].set_inverted(True) self.GUI["2instrument3volumeSlider"].set_size_request( 30, -1 ) self.GUI["2instrument3volumeAdjustment"].connect( "value-changed", self.handleTrackVolume, 2 ) @@ -198,7 +201,8 @@ class MainWindow( SubActivity ): self.GUI["2instrument4volBox"] = gtk.VBox() self.GUI["2instrument4volumeAdjustment"] = gtk.Adjustment( self._data["track_volume"][3], 0, 100, 1, 1, 0 ) #self.GUI["2instrument4volumeAdjustment"].connect( "value_changed", self.onTrackVolumeChanged, 3 ) - self.GUI["2instrument4volumeSlider"] = ImageVScale( Config.IMAGE_ROOT+"sliderInst4.png", self.GUI["2instrument4volumeAdjustment"], 6 ) + self.GUI["2instrument4volumeSlider"] = gtk.VScale(self.GUI["2instrument4volumeAdjustment"]) + self.GUI["2instrument4volumeSlider"].set_draw_value(False) self.GUI["2instrument4volumeSlider"].set_inverted(True) self.GUI["2instrument4volumeSlider"].set_size_request( 30, -1 ) self.GUI["2instrument4volumeAdjustment"].connect( "value-changed", self.handleTrackVolume, 3 ) @@ -219,7 +223,8 @@ class MainWindow( SubActivity ): self.GUI["2drumVolBox"] = gtk.VBox() self.GUI["2drumvolumeAdjustment"] = gtk.Adjustment( self._data["track_volume"][4], 0, 100, 1, 1, 0 ) #self.GUI["2drumvolumeAdjustment"].connect( "value_changed", self.onTrackVolumeChanged, 4 ) - self.GUI["2drumvolumeSlider"] = ImageVScale( Config.IMAGE_ROOT+"sliderDrum.png", self.GUI["2drumvolumeAdjustment"], 6 ) + self.GUI["2drumvolumeSlider"] = gtk.VScale(self.GUI["2drumvolumeAdjustment"]) + self.GUI["2drumvolumeSlider"].set_draw_value(False) self.GUI["2drumvolumeSlider"].set_inverted(True) self.GUI["2drumvolumeSlider"].set_size_request( 30, -1 ) self.GUI["2drumvolumeAdjustment"].connect( "value-changed", self.handleTrackVolume, 4 ) @@ -1552,7 +1557,7 @@ class MainWindow( SubActivity ): self.GUI["9propertiesPopup"].move( balloc.x + winLoc[0] - 100, balloc.y - walloc.height + winLoc[1] ) else: self.GUI["9propertiesPopup"].hide() - + def pageDelete( self, pageIds = -1, instruments = False ): if pageIds == -1: @@ -1,12 +1,16 @@ 34 +34 + * Synthlab sugar integration (olipet, Flipo) +* Toolbars in edit draft, hit alt-t to show the toolbar, alt-y to hide (Flipo) +* Bug that prevented sound from working fixed (LeJames) 33 * Added Sugar Toolbar to miniTamTam and Synthlab (Flipo) * Network now working in miniTamTam, use the share button on the activity toolbar (lync) -* Added help subsystem (ethrop, lejames) +* Added help subsystem (ethrop, LeJames) 32 @@ -209,6 +209,8 @@ class TamTam(Activity): elif key == gtk.keysyms.t: self.toolbox.show() return + elif key == gtk.keysyms.y: + self.toolbox.hide() if self.mode: self.modeList[ self.mode ].onKeyPress(widget, event) diff --git a/Util/Clooper/aclient.cpp b/Util/Clooper/aclient.cpp index baa7419..1755438 100644 --- a/Util/Clooper/aclient.cpp +++ b/Util/Clooper/aclient.cpp @@ -30,6 +30,7 @@ static double pytime(const struct timeval * tv) #define ERROR_HERE if (_debug && (VERBOSE > 0)) fprintf(_debug, "ERROR: %s:%i\n", __FILE__, __LINE__) #define IF_DEBUG(N) if (_debug && (VERBOSE > N)) +#define FLOAT_TO_SHORT(in,out) __asm__ __volatile__ ("fistps %0" : "=m" (out) : "t" (in) : "st") ; int VERBOSE = 3; FILE * _debug = NULL; @@ -472,11 +473,11 @@ struct TamTamSound return 1; } - assert(up_ratio = sys_stuff->rate / csound_frame_rate); + assert(up_ratio == (signed)(sys_stuff->rate / csound_frame_rate)); bool do_upsample = (signed)sys_stuff->period_size != csound_nframes; - float *upbuf = do_upsample ? new float[ sys_stuff->period_size * nchannels ]: NULL; //2 channels - int cbuf_pos = csound_nframes; + short *upbuf = new short[ sys_stuff->period_size * nchannels ]; + int cbuf_pos = csound_nframes; // trigger a call to csoundPerformBuffer immediately float *cbuf = NULL; int up_pos = 0; int ratio_pos = 0; @@ -487,6 +488,7 @@ struct TamTamSound { up_pos = 0; int messed = 0; + short cursample[2]={0,0}; while(!messed) { if (cbuf_pos == csound_nframes) @@ -495,13 +497,17 @@ struct TamTamSound if (csoundPerformBuffer(csound)) { messed = 1;break;} cbuf = csoundGetOutputBuffer(csound); } - upbuf[2*up_pos+0] = cbuf[cbuf_pos*2+0]; - upbuf[2*up_pos+1] = cbuf[cbuf_pos*2+1]; + upbuf[2*up_pos+0] = cursample[0]; + upbuf[2*up_pos+1] = cursample[1]; if (++ratio_pos == up_ratio) { ratio_pos = 0; ++cbuf_pos; + cbuf[cbuf_pos*2+0] *= (float) ((1<<15)-100.0f); + cbuf[cbuf_pos*2+1] *= (float) ((1<<15)-100.0f); + FLOAT_TO_SHORT( cbuf[cbuf_pos*2+0], cursample[0]); + FLOAT_TO_SHORT( cbuf[cbuf_pos*2+1], cursample[1]); } if (++up_pos == (signed)sys_stuff->period_size) break; @@ -512,9 +518,14 @@ struct TamTamSound } else //fill one period of audio directly from csound { - //if (0 > sys_stuff->readbuf((char*)csoundGetInputBuffer(csound))) break; if (csoundPerformBuffer(csound)) break; - if (0 > sys_stuff->writebuf(csound_nframes,csoundGetOutputBuffer(csound))) break; + cbuf = csoundGetOutputBuffer(csound); + for (int i = 0; i < csound_nframes * nchannels; ++i) + { + cbuf[i] *= (float) ((1<<15)-100.0f); + FLOAT_TO_SHORT( cbuf[i], upbuf[i]); + } + if (0 > sys_stuff->writebuf(csound_nframes,upbuf)) break; } if (thread_playloop) @@ -533,7 +544,7 @@ struct TamTamSound } sys_stuff->close(1); - if (do_upsample) delete [] upbuf; + delete [] upbuf; ll->printf(2, "INFO: performance thread returning 0\n"); return 0; } diff --git a/Util/Clooper/aclient.so b/Util/Clooper/aclient.so Binary files differindex b089412..97c9cbb 100755 --- a/Util/Clooper/aclient.so +++ b/Util/Clooper/aclient.so diff --git a/Util/Clooper/audio.cpp b/Util/Clooper/audio.cpp index 0d901e6..e93ea54 100644 --- a/Util/Clooper/audio.cpp +++ b/Util/Clooper/audio.cpp @@ -45,7 +45,8 @@ struct SystemStuff snd_pcm_t *phandle; snd_pcm_uframes_t period_size; unsigned int rate; - SystemStuff(log_t * ll) : ll(ll), phandle(NULL), period_size(0), rate(0) + const snd_pcm_format_t sample_format; + SystemStuff(log_t * ll) : ll(ll), phandle(NULL), period_size(0), rate(0), sample_format(SND_PCM_FORMAT_S16) { } ~SystemStuff() @@ -95,8 +96,8 @@ struct SystemStuff if ( 0 > snd_pcm_hw_params_set_rate_resample(phandle, hw, 0)) { ERROR_HERE; goto open_error;} if ( 0 > snd_pcm_hw_params_test_access(phandle, hw, SND_PCM_ACCESS_RW_INTERLEAVED)){ ERROR_HERE; goto open_error;} if ( 0 > snd_pcm_hw_params_set_access(phandle, hw, SND_PCM_ACCESS_RW_INTERLEAVED)){ ERROR_HERE; goto open_error;} - if ( 0 > snd_pcm_hw_params_test_format(phandle, hw, SND_PCM_FORMAT_FLOAT)) { ERROR_HERE; goto open_error;} - if ( 0 > snd_pcm_hw_params_set_format(phandle, hw, SND_PCM_FORMAT_FLOAT)) { ERROR_HERE; goto open_error;} + if ( 0 > snd_pcm_hw_params_test_format(phandle, hw, sample_format)) { ERROR_HERE; goto open_error;} + if ( 0 > snd_pcm_hw_params_set_format(phandle, hw, sample_format)) { ERROR_HERE; goto open_error;} if ( 0 > snd_pcm_hw_params_set_channels(phandle, hw, 2)) { ERROR_HERE; goto open_error;} if ( snd_pcm_hw_params_test_rate(phandle, hw, rate, 0)) @@ -181,7 +182,7 @@ open_error: } if (0 > snd_pcm_prepare(phandle)) { ERROR_HERE; } } - int writebuf(snd_pcm_uframes_t frame_count, float * frame_data) + int writebuf(snd_pcm_uframes_t frame_count, short int * frame_data) { if (!phandle) { diff --git a/activity/activity.info b/activity/activity.info index 8ea67bb..ff1bcd3 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -3,4 +3,4 @@ name = TamTam service_name = org.laptop.TamTam icon = activity-tamtam class = TamTam.TamTam -activity_version = 33 +activity_version = 34 diff --git a/icons/accept.svg b/icons/accept.svg new file mode 100755 index 0000000..a2f9e28 --- /dev/null +++ b/icons/accept.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="45px" height="45px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+<g>
+
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="
+ M5.78,28.079c0-12.43,10.071-22.499,22.499-22.499c12.431,0,22.501,10.069,22.501,22.499c0,12.431-10.07,22.501-22.501,22.501
+ C15.851,50.58,5.78,40.51,5.78,28.079z"/>
+</g>
+<g>
+
+ <line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="16.788" y1="26.691" x2="25.781" y2="38.706"/>
+
+ <line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="25.781" y1="38.706" x2="39.773" y2="18.704"/>
+</g>
+</svg>
diff --git a/icons/cancel.svg b/icons/cancel.svg new file mode 100755 index 0000000..59512eb --- /dev/null +++ b/icons/cancel.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="45px" height="45px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="
+ M5.78,28.08c0-12.431,10.071-22.5,22.5-22.5c12.432,0,22.5,10.069,22.5,22.5c0,12.432-10.068,22.5-22.5,22.5
+ C15.851,50.58,5.78,40.512,5.78,28.08z"/>
+<line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="20.155" y1="19.956" x2="37.029" y2="36.83"/>
+<line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="37.029" y1="19.956" x2="20.155" y2="36.83"/>
+</svg>
diff --git a/icons/pause.svg b/icons/pause.svg new file mode 100644 index 0000000..e8ee5eb --- /dev/null +++ b/icons/pause.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="55px" height="55px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+<g>
+ <circle fill="#808284" cx="27" cy="27" r="22.5"/>
+ <circle fill="none" stroke="#4C4D4F" stroke-width="2.25" cx="27.001" cy="27" r="18.677"/>
+</g>
+<g>
+ <line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" x1="31.896" y1="20.973" x2="31.896" y2="33.141"/>
+ <line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" x1="22.104" y1="20.859" x2="22.104" y2="33.027"/>
+</g>
+</svg>
diff --git a/icons/test.svg b/icons/test.svg new file mode 100755 index 0000000..8a0912a --- /dev/null +++ b/icons/test.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
+<rect x="6.554" y="13.275" fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" stroke="#FFFFFF" width="18.491" height="11.565"/>
+<rect x="12.095" y="16.512" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" stroke="#808080" width="6.943" height="4.624"/>
+<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFC" points="28.3,14.192 3.3,14.192 15.8,4.48 "/>
+</svg>
diff --git a/po/TamTam.pot b/po/TamTam.pot index 27b7b55..903212f 100644 --- a/po/TamTam.pot +++ b/po/TamTam.pot @@ -3,12 +3,41 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # +#: SynthLab/SynthLabConstants.py:114 SynthLab/SynthLabConstants.py:117 +#: SynthLab/SynthLabConstants.py:171 SynthLab/SynthLabConstants.py:172 +#: SynthLab/SynthLabConstants.py:173 SynthLab/SynthLabConstants.py:174 +#: SynthLab/SynthLabConstants.py:183 SynthLab/SynthLabConstants.py:184 +#: SynthLab/SynthLabConstants.py:185 SynthLab/SynthLabConstants.py:186 +#: SynthLab/SynthLabConstants.py:194 SynthLab/SynthLabConstants.py:195 +#: SynthLab/SynthLabConstants.py:196 SynthLab/SynthLabConstants.py:197 +#: SynthLab/SynthLabConstants.py:206 SynthLab/SynthLabConstants.py:207 +#: SynthLab/SynthLabConstants.py:208 SynthLab/SynthLabConstants.py:209 +#: SynthLab/SynthLabConstants.py:218 SynthLab/SynthLabConstants.py:219 +#: SynthLab/SynthLabConstants.py:220 SynthLab/SynthLabConstants.py:221 +#: SynthLab/SynthLabConstants.py:230 SynthLab/SynthLabConstants.py:231 +#: SynthLab/SynthLabConstants.py:232 SynthLab/SynthLabConstants.py:233 +#: SynthLab/SynthLabConstants.py:241 SynthLab/SynthLabConstants.py:242 +#: SynthLab/SynthLabConstants.py:243 SynthLab/SynthLabConstants.py:244 +#: SynthLab/SynthLabConstants.py:252 SynthLab/SynthLabConstants.py:253 +#: SynthLab/SynthLabConstants.py:254 SynthLab/SynthLabConstants.py:255 +#: SynthLab/SynthLabConstants.py:264 SynthLab/SynthLabConstants.py:265 +#: SynthLab/SynthLabConstants.py:266 SynthLab/SynthLabConstants.py:267 +#: SynthLab/SynthLabConstants.py:275 SynthLab/SynthLabConstants.py:276 +#: SynthLab/SynthLabConstants.py:277 SynthLab/SynthLabConstants.py:278 +#: SynthLab/SynthLabConstants.py:287 SynthLab/SynthLabConstants.py:288 +#: SynthLab/SynthLabConstants.py:289 SynthLab/SynthLabConstants.py:290 +#: SynthLab/SynthLabConstants.py:299 SynthLab/SynthLabConstants.py:300 +#: SynthLab/SynthLabConstants.py:301 SynthLab/SynthLabConstants.py:302 +#: SynthLab/SynthLabConstants.py:311 SynthLab/SynthLabConstants.py:312 +#: SynthLab/SynthLabConstants.py:313 SynthLab/SynthLabConstants.py:321 +#: SynthLab/SynthLabConstants.py:322 SynthLab/SynthLabConstants.py:323 +#: SynthLab/SynthLabConstants.py:324 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-07-31 11:45-0400\n" +"POT-Creation-Date: 2007-08-14 17:15-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -16,115 +45,216 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: Edit/EditToolbars.py:30 Resources/tooltips_en.py:114 +#: Edit/EditToolbars.py:41 Resources/tooltips_en.py:114 #: miniTamTam/miniToolbars.py:31 msgid "Play / Stop" msgstr "" -#: Edit/EditToolbars.py:44 -msgid "Generation" +#: Edit/EditToolbars.py:62 miniTamTam/miniTamTamMain.py:150 +msgid "Record" msgstr "" -#: Edit/EditToolbars.py:54 +#: Edit/EditToolbars.py:72 msgid "Draw Tool" msgstr "" -#: Edit/EditToolbars.py:64 +#: Edit/EditToolbars.py:88 msgid "Volume / Tempo" msgstr "" -#: Edit/EditToolbars.py:72 +#: Edit/EditToolbars.py:96 Edit/EditToolbars.py:534 +msgid "Generation" +msgstr "" + +#: Edit/EditToolbars.py:104 msgid "Properties" msgstr "" -#: Edit/EditToolbars.py:93 -msgid "Non-continuous" +#: Edit/EditToolbars.py:169 +msgid "Continuous" msgstr "" -#: Edit/EditToolbars.py:99 +#: Edit/EditToolbars.py:176 msgid "1/2" msgstr "" -#: Edit/EditToolbars.py:100 +#: Edit/EditToolbars.py:176 msgid "1/4" msgstr "" -#: Edit/EditToolbars.py:101 +#: Edit/EditToolbars.py:176 msgid "1/8" msgstr "" -#: Edit/EditToolbars.py:102 +#: Edit/EditToolbars.py:176 msgid "1/16" msgstr "" -#: Edit/EditToolbars.py:103 +#: Edit/EditToolbars.py:176 msgid "1/32" msgstr "" -#: Edit/EditToolbars.py:124 Resources/tooltips_en.py:111 +#: Edit/EditToolbars.py:209 Resources/tooltips_en.py:111 msgid "Volume" msgstr "" -#: Edit/EditToolbars.py:134 Resources/tooltips_en.py:49 +#: Edit/EditToolbars.py:220 Resources/tooltips_en.py:49 #: Resources/tooltips_en.py:120 msgid "Tempo" msgstr "" -#: Edit/EditToolbars.py:191 +#: Edit/EditToolbars.py:290 msgid "Scale: " msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:65 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:65 msgid "Major scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:66 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:66 msgid "Harmonic minor scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:67 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:67 msgid "Natural minor scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:68 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:68 msgid "Phrygian scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:69 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:69 msgid "Dorian scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:70 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:70 msgid "Lydian scale" msgstr "" -#: Edit/EditToolbars.py:193 +#: Edit/EditToolbars.py:292 msgid "Myxolidian scale" msgstr "" -#: Edit/EditToolbars.py:197 +#: Edit/EditToolbars.py:299 msgid "Mode: " msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:61 -#: Resources/tooltips_en.py:98 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:61 Resources/tooltips_en.py:98 msgid "Drunk" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:62 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:62 msgid "Drone and Jump" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:63 -#: Resources/tooltips_en.py:100 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:63 Resources/tooltips_en.py:100 msgid "Repeater" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:64 +#: Edit/EditToolbars.py:301 Resources/tooltips_en.py:64 #: Resources/tooltips_en.py:101 msgid "Loop segments" msgstr "" +#: Edit/EditToolbars.py:391 +msgid "None" +msgstr "" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Lowpass" +msgstr "" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Bandpass" +msgstr "" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Highpass" +msgstr "" + +#: Edit/EditToolbars.py:392 Resources/tooltips_en.py:97 +msgid "Line" +msgstr "" + +#: Edit/EditToolbars.py:392 +msgid "Loop Segments" +msgstr "" + +#: Edit/EditToolbars.py:393 +msgid "Purple" +msgstr "" + +#: Edit/EditToolbars.py:393 +msgid "Green" +msgstr "" + +#: Edit/EditToolbars.py:393 +msgid "Blue" +msgstr "" + +#: Edit/EditToolbars.py:393 +msgid "Yellow" +msgstr "" + +#: Edit/EditToolbars.py:406 +msgid "Grid division: " +msgstr "" + +#: Edit/EditToolbars.py:417 +msgid "Page color: " +msgstr "" + +#: Edit/EditToolbars.py:427 +msgid "Transposition: " +msgstr "" + +#: Edit/EditToolbars.py:441 +msgid "Volume: " +msgstr "" + +#: Edit/EditToolbars.py:455 +msgid "Pan: " +msgstr "" + +#: Edit/EditToolbars.py:469 +msgid "Reverb: " +msgstr "" + +#: Edit/EditToolbars.py:483 +msgid "Attack duration: " +msgstr "" + +#: Edit/EditToolbars.py:497 +msgid "Decay duration: " +msgstr "" + +#: Edit/EditToolbars.py:511 +msgid "Filter Type: " +msgstr "" + +#: Edit/EditToolbars.py:520 +msgid "Filter cutoff: " +msgstr "" + +#: Edit/EditToolbars.py:537 +msgid "Type: " +msgstr "" + +#: Edit/EditToolbars.py:547 +msgid "Minimum: " +msgstr "" + +#: Edit/EditToolbars.py:556 +msgid "Maximum: " +msgstr "" + +#: Edit/EditToolbars.py:565 +msgid "Random: " +msgstr "" + #: Edit/MainWindow.py:59 msgid "Compose" msgstr "" @@ -253,7 +383,7 @@ msgstr "" msgid "Rewind" msgstr "" -#: Resources/tooltips_en.py:46 Resources/tooltips_en.py:141 +#: Resources/tooltips_en.py:46 msgid "Save to journal and quit" msgstr "" @@ -320,7 +450,7 @@ msgid "Panoramisation" msgstr "" #: Resources/tooltips_en.py:83 Resources/tooltips_en.py:113 -#: Resources/tooltips_en.py:264 miniTamTam/miniToolbars.py:83 +#: SynthLab/SynthLabConstants.py:305 miniTamTam/miniToolbars.py:83 msgid "Reverb" msgstr "" @@ -355,10 +485,6 @@ msgstr "" msgid "Open algorithmic generator" msgstr "" -#: Resources/tooltips_en.py:97 -msgid "Line" -msgstr "" - #: Resources/tooltips_en.py:99 msgid "Drone and jump" msgstr "" @@ -443,455 +569,569 @@ msgstr "" msgid "Record mic into slot 4" msgstr "" -#: Resources/tooltips_en.py:132 +#: SynthLab/SynthLabConstants.py:90 msgid "Source" msgstr "" -#: Resources/tooltips_en.py:133 +#: SynthLab/SynthLabConstants.py:91 msgid "Effect" msgstr "" -#: Resources/tooltips_en.py:134 +#: SynthLab/SynthLabConstants.py:92 msgid "Control" msgstr "" -#: Resources/tooltips_en.py:135 +#: SynthLab/SynthLabConstants.py:93 msgid "Sound Output" msgstr "" -#: Resources/tooltips_en.py:136 -msgid "Sound Duration" +#: SynthLab/SynthLabConstants.py:96 +msgid "LFO" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 1" +#: SynthLab/SynthLabConstants.py:97 +msgid "Amplitude" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 2" +#: SynthLab/SynthLabConstants.py:98 +msgid "Frequency" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 3" +#: SynthLab/SynthLabConstants.py:99 SynthLab/SynthLabConstants.py:250 +msgid "Waveform" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 4" +#: SynthLab/SynthLabConstants.py:100 +msgid "Sine" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 5" +#: SynthLab/SynthLabConstants.py:100 SynthLab/SynthLabConstants.py:180 +msgid "Triangle" msgstr "" -#: Resources/tooltips_en.py:137 -msgid "Record into slot 6" +#: SynthLab/SynthLabConstants.py:100 +msgid "Bi-Square" msgstr "" -#: Resources/tooltips_en.py:138 -msgid "Save" +#: SynthLab/SynthLabConstants.py:100 +msgid "Uni-Square" msgstr "" -#: Resources/tooltips_en.py:139 -msgid "Load" +#: SynthLab/SynthLabConstants.py:100 SynthLab/SynthLabConstants.py:180 +msgid "Sawtooth" msgstr "" -#: Resources/tooltips_en.py:140 -msgid "Save to miniTamTam" +#: SynthLab/SynthLabConstants.py:100 +msgid "Sawtooth-down" msgstr "" -#: Resources/tooltips_en.py:142 -msgid "Reset" +#: SynthLab/SynthLabConstants.py:101 +msgid "Offset" msgstr "" -#: Resources/tooltips_en.py:145 -msgid "LFO" +#: SynthLab/SynthLabConstants.py:102 +msgid "" +"A low frequency oscillation (LFO) is a signal usually below 20 Hz which " +"creates a pulsating rythm rather than a audible tone. This signal is " +"commonly used to control sound parameters." msgstr "" -#: Resources/tooltips_en.py:146 -msgid "Amplitude" +#: SynthLab/SynthLabConstants.py:103 +msgid "" +"The amplitude (volume) of the LFO signal. More amplitude means the effect " +"will be more noticeable." msgstr "" -#: Resources/tooltips_en.py:147 -msgid "Frequency" +#: SynthLab/SynthLabConstants.py:104 +msgid "The speed of the signal beteen 0 Hz and 20 hz." msgstr "" -#: Resources/tooltips_en.py:148 Resources/tooltips_en.py:234 -msgid "Waveform" +#: SynthLab/SynthLabConstants.py:105 +msgid "The type of waveform that will be used for the LFO." msgstr "" -#: Resources/tooltips_en.py:149 -msgid "Sine" +#: SynthLab/SynthLabConstants.py:106 +msgid "Offset: " msgstr "" -#: Resources/tooltips_en.py:149 Resources/tooltips_en.py:194 -msgid "Triangle" +#: SynthLab/SynthLabConstants.py:108 +msgid "Random" msgstr "" -#: Resources/tooltips_en.py:149 -msgid "Bi-Square" +#: SynthLab/SynthLabConstants.py:109 +msgid "Minimum" msgstr "" -#: Resources/tooltips_en.py:149 -msgid "Uni-Square" +#: SynthLab/SynthLabConstants.py:110 +msgid "Maximum" msgstr "" -#: Resources/tooltips_en.py:149 Resources/tooltips_en.py:194 -msgid "Sawtooth" +#: SynthLab/SynthLabConstants.py:112 +msgid "Seed" msgstr "" -#: Resources/tooltips_en.py:149 -msgid "Sawtooth-down" +#: SynthLab/SynthLabConstants.py:113 +msgid "" +"A random number generator is a computational device designed to generate a " +"sequence of numbers that lack any pattern." msgstr "" -#: Resources/tooltips_en.py:150 -msgid "Offset" +#: SynthLab/SynthLabConstants.py:115 +msgid "The minimum value that can be generated." msgstr "" -#: Resources/tooltips_en.py:152 -msgid "Random" +#: SynthLab/SynthLabConstants.py:116 +msgid "The maximum value that can be generated." msgstr "" -#: Resources/tooltips_en.py:153 -msgid "Minimum" +#: SynthLab/SynthLabConstants.py:119 +msgid "Envelope" msgstr "" -#: Resources/tooltips_en.py:154 -msgid "Maximum" +#: SynthLab/SynthLabConstants.py:120 +msgid "Attack" msgstr "" -#: Resources/tooltips_en.py:156 -msgid "Seed" +#: SynthLab/SynthLabConstants.py:121 +msgid "Decay" msgstr "" -#: Resources/tooltips_en.py:158 -msgid "Envelope" +#: SynthLab/SynthLabConstants.py:122 +msgid "Sustain" msgstr "" -#: Resources/tooltips_en.py:159 -msgid "Attack" +#: SynthLab/SynthLabConstants.py:123 +msgid "Release" msgstr "" -#: Resources/tooltips_en.py:160 -msgid "Decay" +#: SynthLab/SynthLabConstants.py:124 +msgid "" +"An ADSR envelope is a component of many sythesizers, samplers, and other " +"electronic musical instruments. Its function is to modulate some aspect of " +"the instrument's sound - often its volume - over time." msgstr "" -#: Resources/tooltips_en.py:161 -msgid "Sustain" +#: SynthLab/SynthLabConstants.py:125 +msgid "How quickly the sound reaches full volume after the sound is activated." msgstr "" -#: Resources/tooltips_en.py:162 -msgid "Release" +#: SynthLab/SynthLabConstants.py:126 +msgid "" +"How quickly the sound drops to the sustain level after the initial peak." +msgstr "" + +#: SynthLab/SynthLabConstants.py:127 +msgid "" +"The \"constant\" volume that the sound takes after decay until the note is " +"released." msgstr "" -#: Resources/tooltips_en.py:164 +#: SynthLab/SynthLabConstants.py:128 +msgid "How quickly the sound fades when a note ends." +msgstr "" + +#: SynthLab/SynthLabConstants.py:130 msgid "Trackpad X" msgstr "" -#: Resources/tooltips_en.py:167 +#: SynthLab/SynthLabConstants.py:133 msgid "Scaling" msgstr "" -#: Resources/tooltips_en.py:168 +#: SynthLab/SynthLabConstants.py:134 msgid "Lin" msgstr "" -#: Resources/tooltips_en.py:168 +#: SynthLab/SynthLabConstants.py:134 msgid "Log" msgstr "" -#: Resources/tooltips_en.py:169 +#: SynthLab/SynthLabConstants.py:135 msgid "Poll time" msgstr "" -#: Resources/tooltips_en.py:171 +#: SynthLab/SynthLabConstants.py:136 +msgid "" +"The XO trackpad can be used to control sound parameters. This is the x axis, " +"from left to right." +msgstr "" + +#: SynthLab/SynthLabConstants.py:137 SynthLab/SynthLabConstants.py:149 +msgid "The minimum value the trackpad will send." +msgstr "" + +#: SynthLab/SynthLabConstants.py:138 SynthLab/SynthLabConstants.py:150 +msgid "The maximum value de trackpad will send." +msgstr "" + +#: SynthLab/SynthLabConstants.py:139 SynthLab/SynthLabConstants.py:151 +msgid "The type of scaling, logarithmic or linear." +msgstr "" + +#: SynthLab/SynthLabConstants.py:140 SynthLab/SynthLabConstants.py:152 +msgid "The time interval between each event coming from the trackpad." +msgstr "" + +#: SynthLab/SynthLabConstants.py:142 msgid "Trackpad Y" msgstr "" -#: Resources/tooltips_en.py:179 +#: SynthLab/SynthLabConstants.py:148 +msgid "" +"The XO trackpad can be used to control sound parameters. This is the y axis, " +"from top to bottom." +msgstr "" + +#: SynthLab/SynthLabConstants.py:155 msgid "FM" msgstr "" -#: Resources/tooltips_en.py:180 +#: SynthLab/SynthLabConstants.py:156 msgid "Carrier Frequency" msgstr "" -#: Resources/tooltips_en.py:181 +#: SynthLab/SynthLabConstants.py:157 msgid "Modulator Frequency" msgstr "" -#: Resources/tooltips_en.py:182 Resources/tooltips_en.py:228 +#: SynthLab/SynthLabConstants.py:158 SynthLab/SynthLabConstants.py:239 msgid "Index" msgstr "" -#: Resources/tooltips_en.py:183 +#: SynthLab/SynthLabConstants.py:159 msgid "Gain" msgstr "" -#: Resources/tooltips_en.py:185 +#: SynthLab/SynthLabConstants.py:160 +msgid "" +"Frequency modulation synthesis is a form of audio synthesis where the timbre " +"of a simple waveform is changed by frequency modulating it with a modulating " +"frequency that is also in the audio range, resulting in a more complex " +"waveform and a different-sounding tone." +msgstr "" + +#: SynthLab/SynthLabConstants.py:161 +msgid "The main waveform frequency." +msgstr "" + +#: SynthLab/SynthLabConstants.py:162 +msgid "The frequency of the waveform that will modulate the Carrier waveform." +msgstr "" + +#: SynthLab/SynthLabConstants.py:163 +msgid "The variation in frequency of the Carrier waveform." +msgstr "" + +#: SynthLab/SynthLabConstants.py:164 SynthLab/SynthLabConstants.py:175 +#: SynthLab/SynthLabConstants.py:187 SynthLab/SynthLabConstants.py:198 +#: SynthLab/SynthLabConstants.py:210 SynthLab/SynthLabConstants.py:222 +#: SynthLab/SynthLabConstants.py:234 SynthLab/SynthLabConstants.py:245 +#: SynthLab/SynthLabConstants.py:256 SynthLab/SynthLabConstants.py:268 +#: SynthLab/SynthLabConstants.py:279 SynthLab/SynthLabConstants.py:291 +#: SynthLab/SynthLabConstants.py:303 SynthLab/SynthLabConstants.py:314 +#: SynthLab/SynthLabConstants.py:325 SynthLab/SynthLabConstants.py:347 +msgid "The overall gain (volume) of the sound source." +msgstr "" + +#: SynthLab/SynthLabConstants.py:166 msgid "Buzz" msgstr "" -#: Resources/tooltips_en.py:187 +#: SynthLab/SynthLabConstants.py:168 msgid "Number of harmonics" msgstr "" -#: Resources/tooltips_en.py:188 +#: SynthLab/SynthLabConstants.py:169 msgid "Filter Slope" msgstr "" -#: Resources/tooltips_en.py:191 +#: SynthLab/SynthLabConstants.py:177 msgid "VCO" msgstr "" -#: Resources/tooltips_en.py:194 +#: SynthLab/SynthLabConstants.py:180 msgid "Square" msgstr "" -#: Resources/tooltips_en.py:198 +#: SynthLab/SynthLabConstants.py:189 msgid "Pluck" msgstr "" -#: Resources/tooltips_en.py:200 Resources/tooltips_en.py:266 +#: SynthLab/SynthLabConstants.py:191 SynthLab/SynthLabConstants.py:307 msgid "Lowpass Filter" msgstr "" -#: Resources/tooltips_en.py:201 +#: SynthLab/SynthLabConstants.py:192 msgid "Vibrato" msgstr "" -#: Resources/tooltips_en.py:204 +#: SynthLab/SynthLabConstants.py:200 msgid "Noise" msgstr "" -#: Resources/tooltips_en.py:205 Resources/tooltips_en.py:253 +#: SynthLab/SynthLabConstants.py:201 SynthLab/SynthLabConstants.py:284 msgid "Type" msgstr "" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "White" msgstr "" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "Pink" msgstr "" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "Gauss" msgstr "" -#: Resources/tooltips_en.py:208 +#: SynthLab/SynthLabConstants.py:204 msgid "Bandwith" msgstr "" -#: Resources/tooltips_en.py:211 +#: SynthLab/SynthLabConstants.py:212 msgid "Sound Sample" msgstr "" -#: Resources/tooltips_en.py:213 +#: SynthLab/SynthLabConstants.py:214 msgid "Sample Number" msgstr "" -#: Resources/tooltips_en.py:214 +#: SynthLab/SynthLabConstants.py:215 msgid "Sample name" msgstr "" -#: Resources/tooltips_en.py:218 +#: SynthLab/SynthLabConstants.py:224 msgid "Voice" msgstr "" -#: Resources/tooltips_en.py:220 +#: SynthLab/SynthLabConstants.py:226 msgid "Vowel" msgstr "" -#: Resources/tooltips_en.py:225 +#: SynthLab/SynthLabConstants.py:236 msgid "Grain" msgstr "" -#: Resources/tooltips_en.py:231 +#: SynthLab/SynthLabConstants.py:247 msgid "Additive Synthesis" msgstr "" -#: Resources/tooltips_en.py:233 +#: SynthLab/SynthLabConstants.py:249 msgid "Spread" msgstr "" -#: Resources/tooltips_en.py:238 Resources/tooltips_en.py:285 +#: SynthLab/SynthLabConstants.py:259 SynthLab/SynthLabConstants.py:341 msgid "Delay" msgstr "" -#: Resources/tooltips_en.py:241 +#: SynthLab/SynthLabConstants.py:262 msgid "Feedback" msgstr "" -#: Resources/tooltips_en.py:244 +#: SynthLab/SynthLabConstants.py:270 msgid "Distortion" msgstr "" -#: Resources/tooltips_en.py:246 +#: SynthLab/SynthLabConstants.py:272 msgid "Resonance" msgstr "" -#: Resources/tooltips_en.py:247 +#: SynthLab/SynthLabConstants.py:273 msgid "Distotion Level" msgstr "" -#: Resources/tooltips_en.py:250 +#: SynthLab/SynthLabConstants.py:281 msgid "Filter" msgstr "" -#: Resources/tooltips_en.py:254 -msgid "Lowpass" -msgstr "" - -#: Resources/tooltips_en.py:254 -msgid "Highpass" -msgstr "" - -#: Resources/tooltips_en.py:254 -msgid "Bandpass" -msgstr "" - -#: Resources/tooltips_en.py:257 +#: SynthLab/SynthLabConstants.py:293 msgid "Ring Modulator" msgstr "" -#: Resources/tooltips_en.py:259 +#: SynthLab/SynthLabConstants.py:295 msgid "Mix" msgstr "" -#: Resources/tooltips_en.py:265 +#: SynthLab/SynthLabConstants.py:306 msgid "Length" msgstr "" -#: Resources/tooltips_en.py:267 +#: SynthLab/SynthLabConstants.py:308 msgid "Reverb Level" msgstr "" -#: Resources/tooltips_en.py:270 +#: SynthLab/SynthLabConstants.py:310 +msgid "" +"Reverberation is the persistence od sound in a particular space after the " +"original sound is removed." +msgstr "" + +#: SynthLab/SynthLabConstants.py:316 msgid "Harmonizer" msgstr "" -#: Resources/tooltips_en.py:272 +#: SynthLab/SynthLabConstants.py:318 msgid "Dry delay" msgstr "" -#: Resources/tooltips_en.py:276 +#: SynthLab/SynthLabConstants.py:327 msgid "Equalizer 4 bands" msgstr "" -#: Resources/tooltips_en.py:277 +#: SynthLab/SynthLabConstants.py:328 msgid "Band one gain" msgstr "" -#: Resources/tooltips_en.py:278 +#: SynthLab/SynthLabConstants.py:329 msgid "Band two gain" msgstr "" -#: Resources/tooltips_en.py:279 +#: SynthLab/SynthLabConstants.py:330 msgid "Band three gain" msgstr "" -#: Resources/tooltips_en.py:280 +#: SynthLab/SynthLabConstants.py:331 msgid "Band four gain" msgstr "" -#: Resources/tooltips_en.py:282 +#: SynthLab/SynthLabConstants.py:332 +msgid "" +"A 4 band equalizer is an effect that splits the spectrum into 4 bands and " +"allows the bands to be set at different levels." +msgstr "" + +#: SynthLab/SynthLabConstants.py:333 +msgid "The gain (volume) of band 1." +msgstr "" + +#: SynthLab/SynthLabConstants.py:334 +msgid "The gain (volume) of band 2." +msgstr "" + +#: SynthLab/SynthLabConstants.py:335 +msgid "The gain (volume) of band 3." +msgstr "" + +#: SynthLab/SynthLabConstants.py:336 +msgid "The gain (volume) of band 4." +msgstr "" + +#: SynthLab/SynthLabConstants.py:338 msgid "Chorus" msgstr "" -#: Resources/tooltips_en.py:283 +#: SynthLab/SynthLabConstants.py:339 msgid "LFO Depth" msgstr "" -#: Resources/tooltips_en.py:284 +#: SynthLab/SynthLabConstants.py:340 msgid "LFO Frequency" msgstr "" -#: Resources/tooltips_en.py:289 +#: SynthLab/SynthLabConstants.py:343 +msgid "" +"A chorus effect is a condition in the way people perceive similar sounds " +"coming from multiple sources." +msgstr "" + +#: SynthLab/SynthLabConstants.py:344 +msgid "LFO Depth: The amplitude of the LFO signal." +msgstr "" + +#: SynthLab/SynthLabConstants.py:345 +msgid "LFO Frequency: the frequency of the LFO signal." +msgstr "" + +#: SynthLab/SynthLabConstants.py:346 +msgid "Delay: The amount of delay between the two signals." +msgstr "" + +#: SynthLab/SynthLabConstants.py:353 msgid "lfo" msgstr "" -#: Resources/tooltips_en.py:290 +#: SynthLab/SynthLabConstants.py:354 msgid "rand" msgstr "" -#: Resources/tooltips_en.py:291 +#: SynthLab/SynthLabConstants.py:355 msgid "adsr" msgstr "" -#: Resources/tooltips_en.py:292 +#: SynthLab/SynthLabConstants.py:356 msgid "trackpadX" msgstr "" -#: Resources/tooltips_en.py:293 +#: SynthLab/SynthLabConstants.py:357 msgid "trackpadY" msgstr "" -#: Resources/tooltips_en.py:294 +#: SynthLab/SynthLabConstants.py:358 msgid "fm" msgstr "" -#: Resources/tooltips_en.py:295 +#: SynthLab/SynthLabConstants.py:359 msgid "buzz" msgstr "" -#: Resources/tooltips_en.py:296 +#: SynthLab/SynthLabConstants.py:360 msgid "vco" msgstr "" -#: Resources/tooltips_en.py:297 +#: SynthLab/SynthLabConstants.py:361 msgid "pluck" msgstr "" -#: Resources/tooltips_en.py:298 +#: SynthLab/SynthLabConstants.py:362 msgid "noise" msgstr "" -#: Resources/tooltips_en.py:299 +#: SynthLab/SynthLabConstants.py:363 msgid "sample" msgstr "" -#: Resources/tooltips_en.py:300 +#: SynthLab/SynthLabConstants.py:364 msgid "voice" msgstr "" -#: Resources/tooltips_en.py:301 +#: SynthLab/SynthLabConstants.py:365 msgid "grain" msgstr "" -#: Resources/tooltips_en.py:302 +#: SynthLab/SynthLabConstants.py:366 msgid "addSynth" msgstr "" -#: Resources/tooltips_en.py:303 +#: SynthLab/SynthLabConstants.py:367 msgid "wguide" msgstr "" -#: Resources/tooltips_en.py:304 +#: SynthLab/SynthLabConstants.py:368 msgid "distort" msgstr "" -#: Resources/tooltips_en.py:305 +#: SynthLab/SynthLabConstants.py:369 msgid "filter" msgstr "" -#: Resources/tooltips_en.py:306 +#: SynthLab/SynthLabConstants.py:370 msgid "ring" msgstr "" -#: Resources/tooltips_en.py:307 +#: SynthLab/SynthLabConstants.py:371 msgid "reverb" msgstr "" -#: Resources/tooltips_en.py:308 +#: SynthLab/SynthLabConstants.py:372 msgid "harmon" msgstr "" -#: Resources/tooltips_en.py:309 +#: SynthLab/SynthLabConstants.py:373 msgid "eq4band" msgstr "" -#: Resources/tooltips_en.py:310 +#: SynthLab/SynthLabConstants.py:374 msgid "chorus" msgstr "" @@ -899,92 +1139,108 @@ msgstr "" msgid "Duration: " msgstr "" -#: SynthLab/SynthLabToolbars.py:43 +#: SynthLab/SynthLabToolbars.py:30 +msgid " s." +msgstr "" + +#: SynthLab/SynthLabToolbars.py:50 msgid "Duration" msgstr "" -#: SynthLab/SynthLabToolbars.py:51 +#: SynthLab/SynthLabToolbars.py:58 msgid "Record Synth sound into slot 1" msgstr "" -#: SynthLab/SynthLabToolbars.py:57 +#: SynthLab/SynthLabToolbars.py:64 msgid "Record Synth sound into slot 2" msgstr "" -#: SynthLab/SynthLabToolbars.py:63 +#: SynthLab/SynthLabToolbars.py:70 msgid "Record Synth sound into slot 3" msgstr "" -#: SynthLab/SynthLabToolbars.py:69 +#: SynthLab/SynthLabToolbars.py:76 msgid "Record Synth sound into slot 4" msgstr "" -#: SynthLab/SynthLabToolbars.py:75 +#: SynthLab/SynthLabToolbars.py:82 msgid "Record Synth sound into slot 5" msgstr "" -#: SynthLab/SynthLabToolbars.py:81 +#: SynthLab/SynthLabToolbars.py:88 msgid "Record Synth sound into slot 6" msgstr "" -#: SynthLab/SynthLabToolbars.py:89 +#: SynthLab/SynthLabToolbars.py:96 msgid "Reset the worktable" msgstr "" -#: SynthLab/SynthLabToolbars.py:109 +#: SynthLab/SynthLabToolbars.py:116 msgid "Preset 1" msgstr "" -#: SynthLab/SynthLabToolbars.py:115 +#: SynthLab/SynthLabToolbars.py:122 msgid "Preset 2" msgstr "" -#: SynthLab/SynthLabToolbars.py:121 +#: SynthLab/SynthLabToolbars.py:128 msgid "Preset 3" msgstr "" -#: SynthLab/SynthLabToolbars.py:127 +#: SynthLab/SynthLabToolbars.py:134 msgid "Preset 4" msgstr "" -#: SynthLab/SynthLabToolbars.py:133 +#: SynthLab/SynthLabToolbars.py:140 msgid "Preset 5" msgstr "" -#: SynthLab/SynthLabToolbars.py:139 +#: SynthLab/SynthLabToolbars.py:146 msgid "Preset 6" msgstr "" -#: SynthLab/SynthLabToolbars.py:145 +#: SynthLab/SynthLabToolbars.py:152 msgid "Preset 7" msgstr "" -#: SynthLab/SynthLabToolbars.py:151 +#: SynthLab/SynthLabToolbars.py:158 msgid "Preset 8" msgstr "" -#: SynthLab/SynthLabToolbars.py:157 +#: SynthLab/SynthLabToolbars.py:164 msgid "Preset 9" msgstr "" -#: SynthLab/SynthLabToolbars.py:163 +#: SynthLab/SynthLabToolbars.py:170 msgid "Preset 10" msgstr "" -#: SynthLab/SynthLabWindow.py:66 +#: SynthLab/SynthLabWindow.py:65 msgid "Main" msgstr "" -#: SynthLab/SynthLabWindow.py:67 +#: SynthLab/SynthLabWindow.py:66 msgid "Presets" msgstr "" -#: Welcome.py:32 -msgid "Help" +#: SynthLab/SynthLabWindow.py:738 +msgid ": controller output" msgstr "" -#: miniTamTam/miniTamTamMain.py:150 -msgid "Record" +#: SynthLab/SynthLabWindow.py:750 +msgid ": sound output" +msgstr "" + +#: SynthLab/SynthLabWindow.py:753 +msgid ": sound input" +msgstr "" + +#: SynthLab/SynthLabWindow.py:755 +msgid "Send sound to the speakers" +msgstr "" + +#: Welcome.py:32 +msgid "Help" msgstr "" #: miniTamTam/miniToolbars.py:104 @@ -1,11 +1,40 @@ # This file is distributed under the same license as the PACKAGE package. # Fabian Affolter <fab@fedoraproject.org>, 2007. # +#: SynthLab/SynthLabConstants.py:114 SynthLab/SynthLabConstants.py:117 +#: SynthLab/SynthLabConstants.py:171 SynthLab/SynthLabConstants.py:172 +#: SynthLab/SynthLabConstants.py:173 SynthLab/SynthLabConstants.py:174 +#: SynthLab/SynthLabConstants.py:183 SynthLab/SynthLabConstants.py:184 +#: SynthLab/SynthLabConstants.py:185 SynthLab/SynthLabConstants.py:186 +#: SynthLab/SynthLabConstants.py:194 SynthLab/SynthLabConstants.py:195 +#: SynthLab/SynthLabConstants.py:196 SynthLab/SynthLabConstants.py:197 +#: SynthLab/SynthLabConstants.py:206 SynthLab/SynthLabConstants.py:207 +#: SynthLab/SynthLabConstants.py:208 SynthLab/SynthLabConstants.py:209 +#: SynthLab/SynthLabConstants.py:218 SynthLab/SynthLabConstants.py:219 +#: SynthLab/SynthLabConstants.py:220 SynthLab/SynthLabConstants.py:221 +#: SynthLab/SynthLabConstants.py:230 SynthLab/SynthLabConstants.py:231 +#: SynthLab/SynthLabConstants.py:232 SynthLab/SynthLabConstants.py:233 +#: SynthLab/SynthLabConstants.py:241 SynthLab/SynthLabConstants.py:242 +#: SynthLab/SynthLabConstants.py:243 SynthLab/SynthLabConstants.py:244 +#: SynthLab/SynthLabConstants.py:252 SynthLab/SynthLabConstants.py:253 +#: SynthLab/SynthLabConstants.py:254 SynthLab/SynthLabConstants.py:255 +#: SynthLab/SynthLabConstants.py:264 SynthLab/SynthLabConstants.py:265 +#: SynthLab/SynthLabConstants.py:266 SynthLab/SynthLabConstants.py:267 +#: SynthLab/SynthLabConstants.py:275 SynthLab/SynthLabConstants.py:276 +#: SynthLab/SynthLabConstants.py:277 SynthLab/SynthLabConstants.py:278 +#: SynthLab/SynthLabConstants.py:287 SynthLab/SynthLabConstants.py:288 +#: SynthLab/SynthLabConstants.py:289 SynthLab/SynthLabConstants.py:290 +#: SynthLab/SynthLabConstants.py:299 SynthLab/SynthLabConstants.py:300 +#: SynthLab/SynthLabConstants.py:301 SynthLab/SynthLabConstants.py:302 +#: SynthLab/SynthLabConstants.py:311 SynthLab/SynthLabConstants.py:312 +#: SynthLab/SynthLabConstants.py:313 SynthLab/SynthLabConstants.py:321 +#: SynthLab/SynthLabConstants.py:322 SynthLab/SynthLabConstants.py:323 +#: SynthLab/SynthLabConstants.py:324 msgid "" msgstr "" "Project-Id-Version: tamtam\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-07-31 11:45-0400\n" +"POT-Creation-Date: 2007-08-14 17:15-0400\n" "PO-Revision-Date: 2007-07-30 11:32+0100\n" "Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n" "Language-Team: German <fedora-trans-de@redhat.com>\n" @@ -14,117 +43,232 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" -#: Edit/EditToolbars.py:30 Resources/tooltips_en.py:114 +#: Edit/EditToolbars.py:41 Resources/tooltips_en.py:114 #: miniTamTam/miniToolbars.py:31 msgid "Play / Stop" msgstr "Abspielen / Stoppen" -#: Edit/EditToolbars.py:44 -#, fuzzy -msgid "Generation" -msgstr "Generieren" +#: Edit/EditToolbars.py:62 miniTamTam/miniTamTamMain.py:150 +msgid "Record" +msgstr "Aufnehmen" -#: Edit/EditToolbars.py:54 +#: Edit/EditToolbars.py:72 msgid "Draw Tool" msgstr "Zeichnungs-Werkzeuge" -#: Edit/EditToolbars.py:64 +#: Edit/EditToolbars.py:88 msgid "Volume / Tempo" msgstr "Lautstärke / Tempo" -#: Edit/EditToolbars.py:72 +#: Edit/EditToolbars.py:96 Edit/EditToolbars.py:534 +#, fuzzy +msgid "Generation" +msgstr "Generieren" + +#: Edit/EditToolbars.py:104 msgid "Properties" msgstr "Eigenschaften" -#: Edit/EditToolbars.py:93 +#: Edit/EditToolbars.py:169 #, fuzzy -msgid "Non-continuous" +msgid "Continuous" msgstr "Nicht fortlaufend" -#: Edit/EditToolbars.py:99 +#: Edit/EditToolbars.py:176 msgid "1/2" msgstr "1/2" -#: Edit/EditToolbars.py:100 +#: Edit/EditToolbars.py:176 msgid "1/4" msgstr "1/4" -#: Edit/EditToolbars.py:101 +#: Edit/EditToolbars.py:176 msgid "1/8" msgstr "1/8" -#: Edit/EditToolbars.py:102 +#: Edit/EditToolbars.py:176 msgid "1/16" msgstr "1/16" -#: Edit/EditToolbars.py:103 +#: Edit/EditToolbars.py:176 msgid "1/32" msgstr "1/32" -#: Edit/EditToolbars.py:124 Resources/tooltips_en.py:111 +#: Edit/EditToolbars.py:209 Resources/tooltips_en.py:111 msgid "Volume" msgstr "Volume" -#: Edit/EditToolbars.py:134 Resources/tooltips_en.py:49 +#: Edit/EditToolbars.py:220 Resources/tooltips_en.py:49 #: Resources/tooltips_en.py:120 msgid "Tempo" msgstr "Tempo" -#: Edit/EditToolbars.py:191 +#: Edit/EditToolbars.py:290 msgid "Scale: " msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:65 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:65 msgid "Major scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:66 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:66 msgid "Harmonic minor scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:67 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:67 msgid "Natural minor scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:68 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:68 msgid "Phrygian scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:69 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:69 msgid "Dorian scale" msgstr "" -#: Edit/EditToolbars.py:193 Resources/tooltips_en.py:70 +#: Edit/EditToolbars.py:292 Resources/tooltips_en.py:70 msgid "Lydian scale" msgstr "" -#: Edit/EditToolbars.py:193 +#: Edit/EditToolbars.py:292 msgid "Myxolidian scale" msgstr "" -#: Edit/EditToolbars.py:197 +#: Edit/EditToolbars.py:299 msgid "Mode: " msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:61 -#: Resources/tooltips_en.py:98 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:61 Resources/tooltips_en.py:98 msgid "Drunk" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:62 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:62 msgid "Drone and Jump" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:63 -#: Resources/tooltips_en.py:100 +#: Edit/EditToolbars.py:301 Edit/EditToolbars.py:392 +#: Resources/tooltips_en.py:63 Resources/tooltips_en.py:100 msgid "Repeater" msgstr "" -#: Edit/EditToolbars.py:199 Resources/tooltips_en.py:64 +#: Edit/EditToolbars.py:301 Resources/tooltips_en.py:64 #: Resources/tooltips_en.py:101 msgid "Loop segments" msgstr "Schlaufen-Segmente" +#: Edit/EditToolbars.py:391 +#, fuzzy +msgid "None" +msgstr "Geräusch" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Lowpass" +msgstr "" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Bandpass" +msgstr "" + +#: Edit/EditToolbars.py:391 SynthLab/SynthLabConstants.py:285 +msgid "Highpass" +msgstr "" + +#: Edit/EditToolbars.py:392 Resources/tooltips_en.py:97 +msgid "Line" +msgstr "Linie" + +#: Edit/EditToolbars.py:392 +#, fuzzy +msgid "Loop Segments" +msgstr "Schlaufen-Segmente" + +#: Edit/EditToolbars.py:393 +msgid "Purple" +msgstr "" + +#: Edit/EditToolbars.py:393 +#, fuzzy +msgid "Green" +msgstr "Hauptfenster" + +#: Edit/EditToolbars.py:393 +#, fuzzy +msgid "Blue" +msgstr "Volume" + +#: Edit/EditToolbars.py:393 +msgid "Yellow" +msgstr "" + +#: Edit/EditToolbars.py:406 +msgid "Grid division: " +msgstr "" + +#: Edit/EditToolbars.py:417 +msgid "Page color: " +msgstr "" + +#: Edit/EditToolbars.py:427 +#, fuzzy +msgid "Transposition: " +msgstr "Transponiere hinunter" + +#: Edit/EditToolbars.py:441 +#, fuzzy +msgid "Volume: " +msgstr "Volume" + +#: Edit/EditToolbars.py:455 +msgid "Pan: " +msgstr "" + +#: Edit/EditToolbars.py:469 +#, fuzzy +msgid "Reverb: " +msgstr "Hall" + +#: Edit/EditToolbars.py:483 +#, fuzzy +msgid "Attack duration: " +msgstr "Abkling-Dauer" + +#: Edit/EditToolbars.py:497 +#, fuzzy +msgid "Decay duration: " +msgstr "Abkling-Dauer" + +#: Edit/EditToolbars.py:511 +#, fuzzy +msgid "Filter Type: " +msgstr "Filter" + +#: Edit/EditToolbars.py:520 +msgid "Filter cutoff: " +msgstr "" + +#: Edit/EditToolbars.py:537 +#, fuzzy +msgid "Type: " +msgstr "Typ" + +#: Edit/EditToolbars.py:547 +#, fuzzy +msgid "Minimum: " +msgstr "Minimum" + +#: Edit/EditToolbars.py:556 +#, fuzzy +msgid "Maximum: " +msgstr "Maximum" + +#: Edit/EditToolbars.py:565 +#, fuzzy +msgid "Random: " +msgstr "Zufällig" + #: Edit/MainWindow.py:59 msgid "Compose" msgstr "Zusammenstellen" @@ -253,7 +397,7 @@ msgstr "Speichere als .ogg" msgid "Rewind" msgstr "Zurückspulen" -#: Resources/tooltips_en.py:46 Resources/tooltips_en.py:141 +#: Resources/tooltips_en.py:46 msgid "Save to journal and quit" msgstr "" @@ -320,7 +464,7 @@ msgid "Panoramisation" msgstr "" #: Resources/tooltips_en.py:83 Resources/tooltips_en.py:113 -#: Resources/tooltips_en.py:264 miniTamTam/miniToolbars.py:83 +#: SynthLab/SynthLabConstants.py:305 miniTamTam/miniToolbars.py:83 msgid "Reverb" msgstr "Hall" @@ -355,10 +499,6 @@ msgstr "" msgid "Open algorithmic generator" msgstr "Öffne algorhytmischen Generator" -#: Resources/tooltips_en.py:97 -msgid "Line" -msgstr "Linie" - #: Resources/tooltips_en.py:99 msgid "Drone and jump" msgstr "" @@ -443,456 +583,570 @@ msgstr "" msgid "Record mic into slot 4" msgstr "" -#: Resources/tooltips_en.py:132 +#: SynthLab/SynthLabConstants.py:90 msgid "Source" msgstr "Quelle" -#: Resources/tooltips_en.py:133 +#: SynthLab/SynthLabConstants.py:91 msgid "Effect" msgstr "Effekt" -#: Resources/tooltips_en.py:134 +#: SynthLab/SynthLabConstants.py:92 msgid "Control" msgstr "Kontrolle" -#: Resources/tooltips_en.py:135 +#: SynthLab/SynthLabConstants.py:93 msgid "Sound Output" msgstr "Sound-Ausgabe" -#: Resources/tooltips_en.py:136 -msgid "Sound Duration" -msgstr "Sound-Dauer" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 1" -msgstr "Aufnahmen in Slot 1" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 2" -msgstr "Aufnahmen in Slot 2" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 3" -msgstr "Aufnahmen in Slot 3" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 4" -msgstr "Aufnahmen in Slot 4" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 5" -msgstr "Aufnahmen in Slot 5" - -#: Resources/tooltips_en.py:137 -msgid "Record into slot 6" -msgstr "Aufnahmen in Slot 6" - -#: Resources/tooltips_en.py:138 -msgid "Save" -msgstr "Speichern" - -#: Resources/tooltips_en.py:139 -msgid "Load" -msgstr "Lade" - -#: Resources/tooltips_en.py:140 -msgid "Save to miniTamTam" -msgstr "Datei sichern nach miniTamTam" - -#: Resources/tooltips_en.py:142 -msgid "Reset" -msgstr "Zurücksetzen" - -#: Resources/tooltips_en.py:145 +#: SynthLab/SynthLabConstants.py:96 msgid "LFO" msgstr "LFO" -#: Resources/tooltips_en.py:146 +#: SynthLab/SynthLabConstants.py:97 msgid "Amplitude" msgstr "Amplitude" -#: Resources/tooltips_en.py:147 +#: SynthLab/SynthLabConstants.py:98 msgid "Frequency" msgstr "Frequenz" -#: Resources/tooltips_en.py:148 Resources/tooltips_en.py:234 +#: SynthLab/SynthLabConstants.py:99 SynthLab/SynthLabConstants.py:250 msgid "Waveform" msgstr "" -#: Resources/tooltips_en.py:149 +#: SynthLab/SynthLabConstants.py:100 msgid "Sine" msgstr "" -#: Resources/tooltips_en.py:149 Resources/tooltips_en.py:194 +#: SynthLab/SynthLabConstants.py:100 SynthLab/SynthLabConstants.py:180 msgid "Triangle" msgstr "" -#: Resources/tooltips_en.py:149 +#: SynthLab/SynthLabConstants.py:100 msgid "Bi-Square" msgstr "Bi-Quadrat" -#: Resources/tooltips_en.py:149 +#: SynthLab/SynthLabConstants.py:100 msgid "Uni-Square" msgstr "Uni-Quadrat" -#: Resources/tooltips_en.py:149 Resources/tooltips_en.py:194 +#: SynthLab/SynthLabConstants.py:100 SynthLab/SynthLabConstants.py:180 msgid "Sawtooth" msgstr "" -#: Resources/tooltips_en.py:149 +#: SynthLab/SynthLabConstants.py:100 msgid "Sawtooth-down" msgstr "" -#: Resources/tooltips_en.py:150 +#: SynthLab/SynthLabConstants.py:101 msgid "Offset" msgstr "" -#: Resources/tooltips_en.py:152 +#: SynthLab/SynthLabConstants.py:102 +msgid "" +"A low frequency oscillation (LFO) is a signal usually below 20 Hz which " +"creates a pulsating rythm rather than a audible tone. This signal is " +"commonly used to control sound parameters." +msgstr "" + +#: SynthLab/SynthLabConstants.py:103 +msgid "" +"The amplitude (volume) of the LFO signal. More amplitude means the effect " +"will be more noticeable." +msgstr "" + +#: SynthLab/SynthLabConstants.py:104 +msgid "The speed of the signal beteen 0 Hz and 20 hz." +msgstr "" + +#: SynthLab/SynthLabConstants.py:105 +msgid "The type of waveform that will be used for the LFO." +msgstr "" + +#: SynthLab/SynthLabConstants.py:106 +msgid "Offset: " +msgstr "" + +#: SynthLab/SynthLabConstants.py:108 msgid "Random" msgstr "Zufällig" -#: Resources/tooltips_en.py:153 +#: SynthLab/SynthLabConstants.py:109 msgid "Minimum" msgstr "Minimum" -#: Resources/tooltips_en.py:154 +#: SynthLab/SynthLabConstants.py:110 msgid "Maximum" msgstr "Maximum" -#: Resources/tooltips_en.py:156 +#: SynthLab/SynthLabConstants.py:112 msgid "Seed" msgstr "" -#: Resources/tooltips_en.py:158 +#: SynthLab/SynthLabConstants.py:113 +msgid "" +"A random number generator is a computational device designed to generate a " +"sequence of numbers that lack any pattern." +msgstr "" + +#: SynthLab/SynthLabConstants.py:115 +msgid "The minimum value that can be generated." +msgstr "" + +#: SynthLab/SynthLabConstants.py:116 +msgid "The maximum value that can be generated." +msgstr "" + +#: SynthLab/SynthLabConstants.py:119 msgid "Envelope" msgstr "Umhüllung" -#: Resources/tooltips_en.py:159 +#: SynthLab/SynthLabConstants.py:120 msgid "Attack" msgstr "Angriff" -#: Resources/tooltips_en.py:160 +#: SynthLab/SynthLabConstants.py:121 msgid "Decay" msgstr "" -#: Resources/tooltips_en.py:161 +#: SynthLab/SynthLabConstants.py:122 msgid "Sustain" msgstr "" -#: Resources/tooltips_en.py:162 +#: SynthLab/SynthLabConstants.py:123 msgid "Release" msgstr "Version" -#: Resources/tooltips_en.py:164 +#: SynthLab/SynthLabConstants.py:124 +msgid "" +"An ADSR envelope is a component of many sythesizers, samplers, and other " +"electronic musical instruments. Its function is to modulate some aspect of " +"the instrument's sound - often its volume - over time." +msgstr "" + +#: SynthLab/SynthLabConstants.py:125 +msgid "How quickly the sound reaches full volume after the sound is activated." +msgstr "" + +#: SynthLab/SynthLabConstants.py:126 +msgid "" +"How quickly the sound drops to the sustain level after the initial peak." +msgstr "" + +#: SynthLab/SynthLabConstants.py:127 +msgid "" +"The \"constant\" volume that the sound takes after decay until the note is " +"released." +msgstr "" + +#: SynthLab/SynthLabConstants.py:128 +msgid "How quickly the sound fades when a note ends." +msgstr "" + +#: SynthLab/SynthLabConstants.py:130 msgid "Trackpad X" msgstr "" -#: Resources/tooltips_en.py:167 +#: SynthLab/SynthLabConstants.py:133 msgid "Scaling" msgstr "Skalieren" -#: Resources/tooltips_en.py:168 +#: SynthLab/SynthLabConstants.py:134 msgid "Lin" msgstr "" -#: Resources/tooltips_en.py:168 +#: SynthLab/SynthLabConstants.py:134 msgid "Log" msgstr "Log" -#: Resources/tooltips_en.py:169 +#: SynthLab/SynthLabConstants.py:135 msgid "Poll time" msgstr "Sammelzeit" -#: Resources/tooltips_en.py:171 +#: SynthLab/SynthLabConstants.py:136 +msgid "" +"The XO trackpad can be used to control sound parameters. This is the x axis, " +"from left to right." +msgstr "" + +#: SynthLab/SynthLabConstants.py:137 SynthLab/SynthLabConstants.py:149 +msgid "The minimum value the trackpad will send." +msgstr "" + +#: SynthLab/SynthLabConstants.py:138 SynthLab/SynthLabConstants.py:150 +msgid "The maximum value de trackpad will send." +msgstr "" + +#: SynthLab/SynthLabConstants.py:139 SynthLab/SynthLabConstants.py:151 +msgid "The type of scaling, logarithmic or linear." +msgstr "" + +#: SynthLab/SynthLabConstants.py:140 SynthLab/SynthLabConstants.py:152 +msgid "The time interval between each event coming from the trackpad." +msgstr "" + +#: SynthLab/SynthLabConstants.py:142 msgid "Trackpad Y" msgstr "" -#: Resources/tooltips_en.py:179 +#: SynthLab/SynthLabConstants.py:148 +msgid "" +"The XO trackpad can be used to control sound parameters. This is the y axis, " +"from top to bottom." +msgstr "" + +#: SynthLab/SynthLabConstants.py:155 msgid "FM" msgstr "" -#: Resources/tooltips_en.py:180 +#: SynthLab/SynthLabConstants.py:156 msgid "Carrier Frequency" msgstr "Träger-Frequenz" -#: Resources/tooltips_en.py:181 +#: SynthLab/SynthLabConstants.py:157 msgid "Modulator Frequency" msgstr "Modulator-Frequenz" -#: Resources/tooltips_en.py:182 Resources/tooltips_en.py:228 +#: SynthLab/SynthLabConstants.py:158 SynthLab/SynthLabConstants.py:239 msgid "Index" msgstr "Index" -#: Resources/tooltips_en.py:183 +#: SynthLab/SynthLabConstants.py:159 msgid "Gain" msgstr "" -#: Resources/tooltips_en.py:185 +#: SynthLab/SynthLabConstants.py:160 +msgid "" +"Frequency modulation synthesis is a form of audio synthesis where the timbre " +"of a simple waveform is changed by frequency modulating it with a modulating " +"frequency that is also in the audio range, resulting in a more complex " +"waveform and a different-sounding tone." +msgstr "" + +#: SynthLab/SynthLabConstants.py:161 +msgid "The main waveform frequency." +msgstr "" + +#: SynthLab/SynthLabConstants.py:162 +msgid "The frequency of the waveform that will modulate the Carrier waveform." +msgstr "" + +#: SynthLab/SynthLabConstants.py:163 +msgid "The variation in frequency of the Carrier waveform." +msgstr "" + +#: SynthLab/SynthLabConstants.py:164 SynthLab/SynthLabConstants.py:175 +#: SynthLab/SynthLabConstants.py:187 SynthLab/SynthLabConstants.py:198 +#: SynthLab/SynthLabConstants.py:210 SynthLab/SynthLabConstants.py:222 +#: SynthLab/SynthLabConstants.py:234 SynthLab/SynthLabConstants.py:245 +#: SynthLab/SynthLabConstants.py:256 SynthLab/SynthLabConstants.py:268 +#: SynthLab/SynthLabConstants.py:279 SynthLab/SynthLabConstants.py:291 +#: SynthLab/SynthLabConstants.py:303 SynthLab/SynthLabConstants.py:314 +#: SynthLab/SynthLabConstants.py:325 SynthLab/SynthLabConstants.py:347 +msgid "The overall gain (volume) of the sound source." +msgstr "" + +#: SynthLab/SynthLabConstants.py:166 msgid "Buzz" msgstr "" -#: Resources/tooltips_en.py:187 +#: SynthLab/SynthLabConstants.py:168 msgid "Number of harmonics" msgstr "Anzahl der Harmonien" -#: Resources/tooltips_en.py:188 +#: SynthLab/SynthLabConstants.py:169 msgid "Filter Slope" msgstr "" -#: Resources/tooltips_en.py:191 +#: SynthLab/SynthLabConstants.py:177 msgid "VCO" msgstr "" -#: Resources/tooltips_en.py:194 +#: SynthLab/SynthLabConstants.py:180 msgid "Square" msgstr "Quadrat" -#: Resources/tooltips_en.py:198 +#: SynthLab/SynthLabConstants.py:189 msgid "Pluck" msgstr "" -#: Resources/tooltips_en.py:200 Resources/tooltips_en.py:266 +#: SynthLab/SynthLabConstants.py:191 SynthLab/SynthLabConstants.py:307 msgid "Lowpass Filter" msgstr "" -#: Resources/tooltips_en.py:201 +#: SynthLab/SynthLabConstants.py:192 msgid "Vibrato" msgstr "" -#: Resources/tooltips_en.py:204 +#: SynthLab/SynthLabConstants.py:200 msgid "Noise" msgstr "Geräusch" -#: Resources/tooltips_en.py:205 Resources/tooltips_en.py:253 +#: SynthLab/SynthLabConstants.py:201 SynthLab/SynthLabConstants.py:284 msgid "Type" msgstr "Typ" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "White" msgstr "Weiss" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "Pink" msgstr "Pink" -#: Resources/tooltips_en.py:206 +#: SynthLab/SynthLabConstants.py:202 msgid "Gauss" msgstr "Gauss" -#: Resources/tooltips_en.py:208 +#: SynthLab/SynthLabConstants.py:204 msgid "Bandwith" msgstr "Bandbreite" -#: Resources/tooltips_en.py:211 +#: SynthLab/SynthLabConstants.py:212 msgid "Sound Sample" msgstr "Abtastrate" -#: Resources/tooltips_en.py:213 +#: SynthLab/SynthLabConstants.py:214 msgid "Sample Number" msgstr "" -#: Resources/tooltips_en.py:214 +#: SynthLab/SynthLabConstants.py:215 msgid "Sample name" msgstr "" -#: Resources/tooltips_en.py:218 +#: SynthLab/SynthLabConstants.py:224 msgid "Voice" msgstr "" -#: Resources/tooltips_en.py:220 +#: SynthLab/SynthLabConstants.py:226 msgid "Vowel" msgstr "" -#: Resources/tooltips_en.py:225 +#: SynthLab/SynthLabConstants.py:236 #, fuzzy msgid "Grain" msgstr "Hauptfenster" -#: Resources/tooltips_en.py:231 +#: SynthLab/SynthLabConstants.py:247 msgid "Additive Synthesis" msgstr "" -#: Resources/tooltips_en.py:233 +#: SynthLab/SynthLabConstants.py:249 msgid "Spread" msgstr "" -#: Resources/tooltips_en.py:238 Resources/tooltips_en.py:285 +#: SynthLab/SynthLabConstants.py:259 SynthLab/SynthLabConstants.py:341 msgid "Delay" msgstr "Verzögerung" -#: Resources/tooltips_en.py:241 +#: SynthLab/SynthLabConstants.py:262 msgid "Feedback" msgstr "Rückmeldung" -#: Resources/tooltips_en.py:244 +#: SynthLab/SynthLabConstants.py:270 msgid "Distortion" msgstr "Verzerrung" -#: Resources/tooltips_en.py:246 +#: SynthLab/SynthLabConstants.py:272 msgid "Resonance" msgstr "" -#: Resources/tooltips_en.py:247 +#: SynthLab/SynthLabConstants.py:273 msgid "Distotion Level" msgstr "Verzerrungs-Stufe" -#: Resources/tooltips_en.py:250 +#: SynthLab/SynthLabConstants.py:281 msgid "Filter" msgstr "Filter" -#: Resources/tooltips_en.py:254 -msgid "Lowpass" -msgstr "" - -#: Resources/tooltips_en.py:254 -msgid "Highpass" -msgstr "" - -#: Resources/tooltips_en.py:254 -msgid "Bandpass" -msgstr "" - -#: Resources/tooltips_en.py:257 +#: SynthLab/SynthLabConstants.py:293 msgid "Ring Modulator" msgstr "" -#: Resources/tooltips_en.py:259 +#: SynthLab/SynthLabConstants.py:295 msgid "Mix" msgstr "Mix" -#: Resources/tooltips_en.py:265 +#: SynthLab/SynthLabConstants.py:306 msgid "Length" msgstr "Länge" -#: Resources/tooltips_en.py:267 +#: SynthLab/SynthLabConstants.py:308 msgid "Reverb Level" msgstr "" -#: Resources/tooltips_en.py:270 +#: SynthLab/SynthLabConstants.py:310 +msgid "" +"Reverberation is the persistence od sound in a particular space after the " +"original sound is removed." +msgstr "" + +#: SynthLab/SynthLabConstants.py:316 msgid "Harmonizer" msgstr "Harmonizer" -#: Resources/tooltips_en.py:272 +#: SynthLab/SynthLabConstants.py:318 msgid "Dry delay" msgstr "" -#: Resources/tooltips_en.py:276 +#: SynthLab/SynthLabConstants.py:327 msgid "Equalizer 4 bands" msgstr "" -#: Resources/tooltips_en.py:277 +#: SynthLab/SynthLabConstants.py:328 msgid "Band one gain" msgstr "" -#: Resources/tooltips_en.py:278 +#: SynthLab/SynthLabConstants.py:329 msgid "Band two gain" msgstr "" -#: Resources/tooltips_en.py:279 +#: SynthLab/SynthLabConstants.py:330 msgid "Band three gain" msgstr "" -#: Resources/tooltips_en.py:280 +#: SynthLab/SynthLabConstants.py:331 msgid "Band four gain" msgstr "" -#: Resources/tooltips_en.py:282 +#: SynthLab/SynthLabConstants.py:332 +msgid "" +"A 4 band equalizer is an effect that splits the spectrum into 4 bands and " +"allows the bands to be set at different levels." +msgstr "" + +#: SynthLab/SynthLabConstants.py:333 +msgid "The gain (volume) of band 1." +msgstr "" + +#: SynthLab/SynthLabConstants.py:334 +msgid "The gain (volume) of band 2." +msgstr "" + +#: SynthLab/SynthLabConstants.py:335 +msgid "The gain (volume) of band 3." +msgstr "" + +#: SynthLab/SynthLabConstants.py:336 +msgid "The gain (volume) of band 4." +msgstr "" + +#: SynthLab/SynthLabConstants.py:338 msgid "Chorus" msgstr "Chorus" -#: Resources/tooltips_en.py:283 +#: SynthLab/SynthLabConstants.py:339 msgid "LFO Depth" msgstr "" -#: Resources/tooltips_en.py:284 +#: SynthLab/SynthLabConstants.py:340 msgid "LFO Frequency" msgstr "LFO-Frequenz" -#: Resources/tooltips_en.py:289 +#: SynthLab/SynthLabConstants.py:343 +msgid "" +"A chorus effect is a condition in the way people perceive similar sounds " +"coming from multiple sources." +msgstr "" + +#: SynthLab/SynthLabConstants.py:344 +msgid "LFO Depth: The amplitude of the LFO signal." +msgstr "" + +#: SynthLab/SynthLabConstants.py:345 +msgid "LFO Frequency: the frequency of the LFO signal." +msgstr "" + +#: SynthLab/SynthLabConstants.py:346 +msgid "Delay: The amount of delay between the two signals." +msgstr "" + +#: SynthLab/SynthLabConstants.py:353 msgid "lfo" msgstr "" -#: Resources/tooltips_en.py:290 +#: SynthLab/SynthLabConstants.py:354 msgid "rand" msgstr "" -#: Resources/tooltips_en.py:291 +#: SynthLab/SynthLabConstants.py:355 msgid "adsr" msgstr "" -#: Resources/tooltips_en.py:292 +#: SynthLab/SynthLabConstants.py:356 msgid "trackpadX" msgstr "" -#: Resources/tooltips_en.py:293 +#: SynthLab/SynthLabConstants.py:357 msgid "trackpadY" msgstr "" -#: Resources/tooltips_en.py:294 +#: SynthLab/SynthLabConstants.py:358 msgid "fm" msgstr "fm" -#: Resources/tooltips_en.py:295 +#: SynthLab/SynthLabConstants.py:359 msgid "buzz" msgstr "" -#: Resources/tooltips_en.py:296 +#: SynthLab/SynthLabConstants.py:360 msgid "vco" msgstr "" -#: Resources/tooltips_en.py:297 +#: SynthLab/SynthLabConstants.py:361 msgid "pluck" msgstr "" -#: Resources/tooltips_en.py:298 +#: SynthLab/SynthLabConstants.py:362 msgid "noise" msgstr "Geräusch" -#: Resources/tooltips_en.py:299 +#: SynthLab/SynthLabConstants.py:363 msgid "sample" msgstr "Abtastrate" -#: Resources/tooltips_en.py:300 +#: SynthLab/SynthLabConstants.py:364 msgid "voice" msgstr "Stimme" -#: Resources/tooltips_en.py:301 +#: SynthLab/SynthLabConstants.py:365 msgid "grain" msgstr "" -#: Resources/tooltips_en.py:302 +#: SynthLab/SynthLabConstants.py:366 msgid "addSynth" msgstr "" -#: Resources/tooltips_en.py:303 +#: SynthLab/SynthLabConstants.py:367 msgid "wguide" msgstr "" -#: Resources/tooltips_en.py:304 +#: SynthLab/SynthLabConstants.py:368 msgid "distort" msgstr "verzerren" -#: Resources/tooltips_en.py:305 +#: SynthLab/SynthLabConstants.py:369 msgid "filter" msgstr "filtern" -#: Resources/tooltips_en.py:306 +#: SynthLab/SynthLabConstants.py:370 msgid "ring" msgstr "" -#: Resources/tooltips_en.py:307 +#: SynthLab/SynthLabConstants.py:371 msgid "reverb" msgstr "Hall" -#: Resources/tooltips_en.py:308 +#: SynthLab/SynthLabConstants.py:372 msgid "harmon" msgstr "" -#: Resources/tooltips_en.py:309 +#: SynthLab/SynthLabConstants.py:373 msgid "eq4band" msgstr "" -#: Resources/tooltips_en.py:310 +#: SynthLab/SynthLabConstants.py:374 msgid "chorus" msgstr "chorus" @@ -900,94 +1154,112 @@ msgstr "chorus" msgid "Duration: " msgstr "Dauer:" -#: SynthLab/SynthLabToolbars.py:43 +#: SynthLab/SynthLabToolbars.py:30 +msgid " s." +msgstr "" + +#: SynthLab/SynthLabToolbars.py:50 msgid "Duration" msgstr "Dauer" -#: SynthLab/SynthLabToolbars.py:51 +#: SynthLab/SynthLabToolbars.py:58 msgid "Record Synth sound into slot 1" msgstr "" -#: SynthLab/SynthLabToolbars.py:57 +#: SynthLab/SynthLabToolbars.py:64 msgid "Record Synth sound into slot 2" msgstr "" -#: SynthLab/SynthLabToolbars.py:63 +#: SynthLab/SynthLabToolbars.py:70 msgid "Record Synth sound into slot 3" msgstr "" -#: SynthLab/SynthLabToolbars.py:69 +#: SynthLab/SynthLabToolbars.py:76 msgid "Record Synth sound into slot 4" msgstr "" -#: SynthLab/SynthLabToolbars.py:75 +#: SynthLab/SynthLabToolbars.py:82 msgid "Record Synth sound into slot 5" msgstr "" -#: SynthLab/SynthLabToolbars.py:81 +#: SynthLab/SynthLabToolbars.py:88 msgid "Record Synth sound into slot 6" msgstr "" -#: SynthLab/SynthLabToolbars.py:89 +#: SynthLab/SynthLabToolbars.py:96 msgid "Reset the worktable" msgstr "Arbeitsbereich zurücksetzen" -#: SynthLab/SynthLabToolbars.py:109 +#: SynthLab/SynthLabToolbars.py:116 msgid "Preset 1" msgstr "Anwesend 1" -#: SynthLab/SynthLabToolbars.py:115 +#: SynthLab/SynthLabToolbars.py:122 msgid "Preset 2" msgstr "Anwesend 2" -#: SynthLab/SynthLabToolbars.py:121 +#: SynthLab/SynthLabToolbars.py:128 msgid "Preset 3" msgstr "Anwesend 3" -#: SynthLab/SynthLabToolbars.py:127 +#: SynthLab/SynthLabToolbars.py:134 msgid "Preset 4" msgstr "Anwesend 4" -#: SynthLab/SynthLabToolbars.py:133 +#: SynthLab/SynthLabToolbars.py:140 msgid "Preset 5" msgstr "Anwesend 5" -#: SynthLab/SynthLabToolbars.py:139 +#: SynthLab/SynthLabToolbars.py:146 msgid "Preset 6" msgstr "Anwesend 6" -#: SynthLab/SynthLabToolbars.py:145 +#: SynthLab/SynthLabToolbars.py:152 msgid "Preset 7" msgstr "Anwesend 7" -#: SynthLab/SynthLabToolbars.py:151 +#: SynthLab/SynthLabToolbars.py:158 msgid "Preset 8" msgstr "Anwesend 8" -#: SynthLab/SynthLabToolbars.py:157 +#: SynthLab/SynthLabToolbars.py:164 msgid "Preset 9" msgstr "Anwesend 9" -#: SynthLab/SynthLabToolbars.py:163 +#: SynthLab/SynthLabToolbars.py:170 msgid "Preset 10" msgstr "Anwesend 10" -#: SynthLab/SynthLabWindow.py:66 +#: SynthLab/SynthLabWindow.py:65 msgid "Main" msgstr "Hauptfenster" -#: SynthLab/SynthLabWindow.py:67 +#: SynthLab/SynthLabWindow.py:66 msgid "Presets" msgstr "" +#: SynthLab/SynthLabWindow.py:738 +msgid ": controller output" +msgstr "" + +#: SynthLab/SynthLabWindow.py:750 +#, fuzzy +msgid ": sound output" +msgstr "Sound-Ausgabe" + +#: SynthLab/SynthLabWindow.py:753 +#, fuzzy +msgid ": sound input" +msgstr "Sound-Ausgabe" + +#: SynthLab/SynthLabWindow.py:755 +msgid "Send sound to the speakers" +msgstr "" + #: Welcome.py:32 msgid "Help" msgstr "Hilfe" -#: miniTamTam/miniTamTamMain.py:150 -msgid "Record" -msgstr "Aufnehmen" - #: miniTamTam/miniToolbars.py:104 msgid "Record microphone into slot 1" msgstr "" @@ -1016,5 +1288,38 @@ msgstr "" msgid "Add new sound" msgstr "Hinzufügen neuer Sound" +#~ msgid "Sound Duration" +#~ msgstr "Sound-Dauer" + +#~ msgid "Record into slot 1" +#~ msgstr "Aufnahmen in Slot 1" + +#~ msgid "Record into slot 2" +#~ msgstr "Aufnahmen in Slot 2" + +#~ msgid "Record into slot 3" +#~ msgstr "Aufnahmen in Slot 3" + +#~ msgid "Record into slot 4" +#~ msgstr "Aufnahmen in Slot 4" + +#~ msgid "Record into slot 5" +#~ msgstr "Aufnahmen in Slot 5" + +#~ msgid "Record into slot 6" +#~ msgstr "Aufnahmen in Slot 6" + +#~ msgid "Save" +#~ msgstr "Speichern" + +#~ msgid "Load" +#~ msgstr "Lade" + +#~ msgid "Save to miniTamTam" +#~ msgstr "Datei sichern nach miniTamTam" + +#~ msgid "Reset" +#~ msgstr "Zurücksetzen" + #~ msgid "index" #~ msgstr "index" |