From 60e24424050c95781642e7f94c1cc94933b46c0b Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Mon, 29 May 2006 13:08:08 +0000 Subject: [PATCH] bugfixes and more git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@139 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 23 +- configure.in | 4 +- data/locale/ca.qm | Bin 0 -> 80890 bytes data/locale/ca.ts | 3184 +++++++++++++++++ include/oscillator.h | 50 +- include/sample_buffer.h | 19 + plugins/organic/organic.cpp | 14 +- .../triple_oscillator/triple_oscillator.cpp | 21 +- src/core/arp_and_chords_tab_widget.cpp | 2 +- src/core/envelope_and_lfo_widget.cpp | 9 +- src/lib/oscillator.cpp | 41 +- 11 files changed, 3297 insertions(+), 70 deletions(-) create mode 100644 data/locale/ca.qm create mode 100644 data/locale/ca.ts diff --git a/ChangeLog b/ChangeLog index 775fc49ca..ff1bc3b6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,22 @@ -2006-5-26 Javier Serrano Polo +2006-05-29 Javier Serrano Polo + + * src/core/arp_and_chords_tab_widget.cpp: + fixed integer-overflow + + * include/oscillator.h: + * include/sample_buffer.h: + * plugins/organic/organic.cpp: + * plugins/triple_oscillator/triple_oscillator.cpp: + * src/core/envelope_and_lfo_widget.cpp: + * src/lib/oscillator.cpp: + - several segfault-fixes when while playing note + - volume-knob-changes take effect immediately + + * data/locale/ca.ts: + added catalan translation + +2006-05-26 Javier Serrano Polo + * src/lib/sample_buffer.cpp: corrected the calculation of f1 in play to prevent it from shifting the start_frame out of bounds when resampling. @@ -7,7 +25,8 @@ * src/lib/mmp.cpp: changed the xml output to use UTF8 encoding instead of ascii. -2006-5-23 Danny McRae +2006-05-23 Danny McRae + * include/oscillator.h: FM mixing sometimes calculates a negative "time" for the sampling which causes bad things to happen when pulling the data out of diff --git a/configure.in b/configure.in index 66843cca2..141e9effd 100644 --- a/configure.in +++ b/configure.in @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.50) -AC_INIT(lmms, 0.1.4-cvs20060520, tobydox/at/users/dot/sourceforge/dot/net) -AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060520) +AC_INIT(lmms, 0.1.4-cvs20060529, tobydox/at/users/dot/sourceforge/dot/net) +AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060529) AM_CONFIG_HEADER(config.h) diff --git a/data/locale/ca.qm b/data/locale/ca.qm new file mode 100644 index 0000000000000000000000000000000000000000..908cf04c2050b0306cc0100d5db37a91b8bc0b8b GIT binary patch literal 80890 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 literal 0 HcmV?d00001 diff --git a/data/locale/ca.ts b/data/locale/ca.ts new file mode 100644 index 000000000..046e40fe7 --- /dev/null +++ b/data/locale/ca.ts @@ -0,0 +1,3184 @@ + + + aboutDialog + + About LMMS... + Quant a LMMS... + + + About + Quant a + + + Authors + Autors + + + License + Llicència + + + Close + Tancar + + + Translation + Traducció + + + Current language not translated. + +If you're interested in translating LMMS in another language or want to improve existing translations, you're welcome to help us! Just contact the maintainer! + Javier Serrano Polo + <jasp00@terra.es> + + + LMMS - A powerful synthesizer-studio + +Copyright (c) 2004-2006 LMMS-Developers + +http://lmms.sourceforge.net + LMMS - Un potent estudi-sintetitzador + +© 2004-2006 Desenvolupadors de LMMS + +http://lmms.sourceforge.net + + + Linux MultiMedia Studio %1 + Linux MultiMedia Studio %1 + + + + arpAndChordsTabWidget + + octave + octava + + + Major + Major + + + Majb5 + Major♭5 + + + minor + menor + + + minb5 + menor♭5 + + + sus2 + sus2 + + + sus4 + sus4 + + + aug + aug + + + augsus4 + augsus4 + + + tri + tri + + + 6 + 6 + + + 6sus4 + 6sus4 + + + 6add9 + 6add9 + + + m6 + m6 + + + m6add9 + m6més9 + + + 7 + 7 + + + 7sus4 + 7sus4 + + + 7#5 + 7♯5 + + + 7b5 + 7♭5 + + + 7#9 + 7♯9 + + + 7b9 + 7♭9 + + + 7#5#9 + 7♯5♯9 + + + 7#5b9 + 7♯5♭9 + + + 7b5b9 + 7♭5♭9 + + + 7add11 + 7més11 + + + 7add13 + 7més13 + + + 7#11 + 7♯11 + + + Maj7 + Maj7 + + + Maj7b5 + Maj7♭5 + + + Maj7#5 + Maj7♯5 + + + Maj7#11 + Maj7♯11 + + + Maj7add13 + Maj7més13 + + + m7 + m7 + + + m7b5 + m7♭5 + + + m7b9 + m7♭9 + + + m7add11 + m7més11 + + + m7add13 + m7més13 + + + m-Maj7 + m-Maj7 + + + m-Maj7add11 + m-Maj7més11 + + + m-Maj7add13 + m-Maj7més13 + + + 9 + 9 + + + 9sus4 + 9sus4 + + + add9 + més9 + + + 9#5 + 9♯5 + + + 9b5 + 9♭5 + + + 9#11 + 9♯11 + + + 9b13 + 9♭13 + + + Maj9 + Maj9 + + + Maj9sus4 + Maj9sus4 + + + Maj9#5 + Maj9♯5 + + + Maj9#11 + Maj9♯11 + + + m9 + m9 + + + madd9 + mmés9 + + + m9b5 + m9♭5 + + + m9-Maj7 + m9-Maj7 + + + 11 + 11 + + + 11b9 + 11♭9 + + + Maj11 + Maj11 + + + m11 + m11 + + + m-Maj11 + m-Maj11 + + + 13 + 13 + + + 13#9 + 13♯9 + + + 13b9 + 13♭9 + + + 13b5b9 + 13♭5♭9 + + + Maj13 + Maj13 + + + m13 + m13 + + + m-Maj13 + m-Maj13 + + + Chord range: + Rang d'acord: + + + octave(s) + octava(es) + + + Use this knob for setting the chord range in octaves. The selected chord will be played within specified amount of octaves. + Usa aquesta roda per a ajustar el rang d'acord en octaves. L'acord seleccionat serà reproduït amb la quantitat especificada d'octaves. + + + An arpeggio is a type of playing (especially plucked) instruments, which makes the music much livelier. The strings of such instruments (e.g. harps) are plucked like chords, the only difference is, that this is done in a sequential order, so the notes are not played at the same time. Typical arpeggios are major or minor triads. But there're a lot of other possible chords, you can select. + Un arpegi és una forma de tocar (especialment puntejada) els instruments, que fa la música més animada. Les cordes d'aquests instruments (p.e. l'arpa) són puntejades com els acords, l'única diferència és que això es fa en un ordre seqüencial, així les notes no sonen a la vegada. Arpegis típics són les tríades majors o menors. Però hi ha molts més acords que pots seleccionar. + + + Arpeggio range: + Rang d'arpegi: + + + Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified amount of octaves. + Usa aquesta roda per a ajustar el rang d'arpegi en octaves. L'arpegi seleccionat serà reproduït amb la quantitat especificada d'octaves. + + + Arpeggio time: + Temps d'arpegi: + + + ms + ms + + + Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. + Usa aquesta roda per a ajustar el temps d'arpegi en milisegons. El temps d'arpegi especifica la durada de cada nota de l'arpegi. + + + Arpeggio gate: + Porta d'arpegi: + + + % + % + + + Use this knob for setting the arpeggio gate. The arpeggio gate specifies the percent of a whole arpeggio-tone that should be played. With this you can make cool staccato-arpeggios. + Usa aquesta roda per a ajustar la porta d'arpegi. La porta d'arpegi especifica el percentatge de la nota de l'arpegi que serà reproduït. Amb això pots fer arpegis amb staccato genials. + + + arpeggio direction = up + direcció d'arpegi = amunt + + + arpeggio direction = down + direcció d'arpegi = abaix + + + arpeggio direction = up and down + direcció d'arpegi = amunt i abaix + + + arpeggio direction = random + direcció d'arpegi = aleatori + + + Chord range + Rang d'acord + + + Arpeggio range + Rang d'arpegi + + + Arpeggio time + Temps d'arpegi + + + Arpeggio gate + Porta d'arpegi + + + Harmonic minor + Harmònic menor + + + Melodic minor + Melòdic menor + + + Whole tone + To sencer + + + Major pentatonic + Pentatònic major + + + Minor pentatonic + Pentatònic menor + + + Jap in sen + Jap in sen + + + Major bebop + Bebop major + + + Dominant bebop + Bebop dominant + + + Blues + Blues + + + Arabic + Aràbic + + + Enigmatic + Enigmàtic + + + Neopolitan + Neopolità + + + Neopolitan minor + Neopolità menor + + + Hungarian minor + Hongarès menor + + + Dorian + Dòric + + + Phrygolydian + Frigolidi + + + Lydian + Lidi + + + Mixolydian + Mixolidi + + + Aeolian + Eoli + + + Locrian + Locri + + + Diminished + Disminuït + + + CHORDS + ACORDS + + + RANGE + RANG + + + ARPEGGIO + ARPEGI + + + TIME + TEMPS + + + GATE + PORTA + + + Direction: + Direcció: + + + Mode: + Mode: + + + Free + Lliure + + + Sort + Ordena + + + Sync + Sinc + + + + audioDevice + + DEVICE + DISPOSITIU + + + CHANNELS + CANALS + + + CLIENT-NAME + NOM-CLIENT + + + + audioFileProcessor + + Amplify: + Amplificar: + + + With this knob you can set the amplify-ratio. When you set a value of 100% your sample isn't changed. Otherwise it will be amplified up or down (your actual sample-file isn't touched!) + Amb aquesta roda pots ajustar el radi d'amplificació. Quan poses un valor de 100% la mostra no canvia. Altrament, serà amplificada o reduïda (el fitxer no es modifica en cap moment!) + + + Startpoint: + Punt inicial: + + + With this knob you can set the point where AudioFileProcessor should begin playing your sample. If you enable Looping-Mode, this is the point to which AudioFileProcessor returns if a note is longer than the sample between start- and end-point. + Amb aquesta roda pots ajustar el punt on el Processador de Fitxer d'Àudio començarà a reproduir la mostra. Si actives el Mode Bucle, aquest és el punt a on el Processador de Fitxer d'Àudio retorna si una nota és més llarga que la mostra entre els punts inicial i final. + + + Endpoint: + Punt final: + + + With this knob you can set the point where AudioFileProcessor should stop playing your sample. If you enable Looping-Mode, this is the point where AudioFileProcessor returns if a note is longer than the sample between start- and end-point. + Amb aquesta roda pots ajustar el punt on el Processador de Fitxer d'Àudio deixarà de reproduir la mostra. Si actives el Mode Bucle, aquest és el punt on el Processador de Fitxer d'Àudio retorna si una nota és més llarga que la mostra entre els punts inicial i final. + + + Click here, if you want to open another audio-file. After clicking on this button, a file-open-dialog appears and you can select your file. Settings like Looping-Mode, start- and end-point, amplify-value and so on are not reset, so please don't wonder if your sample doesn't sound like the original one... + Pica aquí si vols obrir un altre fitxer d'àudio. Després de picar en aquest botó, apareix un diàleg on pots seleccionar i obrir el teu fitxer. Els ajustaments com Mode Bucle, punts inicial i final, valor d'amplificació i la resta no són reiniciats, per tant no t'estranyis si la mostra no sona com l'original... + + + Here you can set, whether Looping-Mode is enabled. If enabled, AudioFileProcessor loops between start- and end-point of a sample until the whole note is played. This is useful for things like string- and choir-samples. + Aquí pots activar el Mode Bucle. Si està activat, el Processador de Fitxer d'Àudio farà un bucle entre els punts inicial i final de la mostra fins que la nota ha acabat de tocar-se. Això és útil amb mostres de corda i de cor. + + + Activate this button, if your sample should be drawn with connected lines. This doesn't change the sound itself. It just gives you another view to your sample. + Activa aquest botó si la mostra ha de dibuixar-se amb línies connectades. Això no canvia el so. Només et dóna una altra visió de la mostra. + + + Activate this button, if your sample should be drawn with dots. This doesn't change the sound itself. It just gives you another view to your sample. + Activa aquest botó si la mostra ha de dibuixar-se amb punts. Això no canvia el so. Només et dóna una altra visió de la mostra. + + + Amplify + Amplificar + + + Start of sample + Inici de la mostra + + + End of sample + Fi de la mostra + + + If you enable this button, the whole sample is reversed. This is useful for cool effects, e.g. a reversed crash. + Si actives aquest botó, la mostra sencera serà invertida. Això és útil per a efectes interessants, p.e. un xoc invertit. + + + Open other sample + Obre altra mostra + + + Reverse sample + Inverteix mostra + + + Loop sample at start- and end-point + Bucle entre punts inicial i final + + + AMP + AMP + + + START + INICI + + + END + FI + + + + bbEditor + + Play/pause current beat/bassline (Space) + Reprodueix/pausa el ritme base actual (Espai) + + + Stop playing of current beat/bassline (Space) + Atura el ritme base actual (Espai) + + + Click here, if you want to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. + Pica aquí si vols reproduir el ritme base actual. El ritme base és repetit automàticament quan arriba al final. + + + Click here, if you want to stop playing of current beat/bassline. + Pica aquí si vols aturar el ritme base actual. + + + Beat+Baseline Editor + Editor de Ritme Base + + + Add beat/bassline + Afegeix ritme de base + + + + bbTCO + + Change name + Canvia nom + + + Reset name + Reinicia nom + + + Change color + Canvia color + + + Open in Beat+Baseline-Editor + Obre a l'Editor de Ritme Base + + + + bbTrack + + Beat/Baseline %1 + Ritme base %1 + + + + bitInvader + + Samplelength + Longitud de mostra + + + Sample Length + Longitud de la Mostra + + + Draw your own waveform hereby dragging your mouse onto this graph + Dibuixa la teva pròpia forma d'ona aquí arrossegant el ratolí sobre aquest gràfic + + + Click here if you want a sine-wave for current oscillator. + Pica aquí si vols una ona sinusoïdal per a l'oscil·lador actual. + + + Click here if you want a triangle-wave for current oscillator. + Pica aquí si vols una ona triangular per a l'oscil·lador actual. + + + Click here if you want a saw-wave for current oscillator. + Pica aquí si vols una ona de serra per a l'oscil·lador actual. + + + Click here if you want a square-wave for current oscillator. + Pica aquí si vols una ona quadrada per a l'oscil·lador actual. + + + Click here if you want a white-noise for current oscillator. + Pica aquí si vols un soroll blanc per a l'oscil·lador actual. + + + Click here if you want a user-defined wave-shape for current oscillator. + Pica aquí si vols una forma d'ona arbitrària per a l'oscil·lador actual. + + + Click here to smooth waveform. + Pica aquí per a suavitzar la forma d'ona. + + + + configManager + + Setup LMMS + Configuració de LMMS + + + LMMS needs to be setup in order to run properly. This wizard will help you to setup your personal LMMS-installation. + +If you're unsure what to do at a step, just click on 'Next'. LMMS will automatically select the best options for you. + + +Now click on 'Next' to get to the next page. + LMMS necessita ser configurat per a funcionar correctament. Aquest asistent t'ajudarà a configurar la teva instal·lació. + +Si no estàs segur del que s'ha de fer en un pas, senzillament pica 'Següent'. LMMS seleccionarà automàticament les millors opcions disponibles. + +Ara pica 'Següent' per a anar a la següent pàgina. + + + When working with LMMS there needs to be a working-directory. +This directory is used for storing your projects, presets, samples etc. + + +Please select a directory: + Quan es treballa amb LMMS es necessita un directori de treball. +Aquest directori s'usarà per a emmagatzemar els teus projectes, plantilles, mostres, etc. + + +Per favor, selecciona un directori: + + + Welcome to LMMS + Benvingut a LMMS + + + Select working directory + Selecciona directori de treball + + + Directory not existing + El directori no existeix + + + Error in configuration-file + Error al fitxer de configuració + + + Error while parsing configuration-file %1. +The setup-wizard will be shown for reconfiguring LMMS. + Error analitzant el fitxer de configuració %1. +Es mostrarà l'assistent per a reconfigurar LMMS. + + + The directory you specified does not exist. Create it? + El directori especificat no existeix. Crear-lo? + + + < &Back + < &Enrera + + + &Finish + &Finalitza + + + Could not save config-file + No s'ha pogut desar el fitxer de configuració + + + Could not save configuration file %1. You probably are not permitted to write to this file. +Please make sure you have write-access to the file and try again. + No s'ha pogut desar el fitxer de configuració %1. +Per favor, comprova que tens permís d'escriptura per a aquest fitxer i torna-ho a provar. + + + Version mismatches + La versió no coincideix + + + Accordingly to the information in your LMMS-configuration-file you seem +to have run a different (probably older) version of LMMS before. +It is recommended to run the setup-wizard again to ensure that +the latest samples, presets, demo-projects etc. are installed in your +LMMS-working-directory. Run the setup-wizard now? + Segons la informació del fitxer de configuració de LMMS, sembla que abans +has executat una versió diferent (probablement més antiga) de LMMS. +Es recomana executar l'assistent de configuració un altre cop per a assegurar +que les darreres mostres, plantilles, projectes demo, etc. s'instal·lin al teu +directori de treball de LMMS. Executar ara l'assistent? + + + &Cancel + &Cancel·la + + + &Next > + &Següent > + + + Choose LMMS working directory + Escull el directori de treball de LMMS + + + + envelopeAndLFOWidget + + Predelay: + Preretard: + + + Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. + Usa aquesta roda per a ajustar el preretard de l'envoltant actual. Quan més gran aquest valor, major el temps abans de començar l'envoltant en sí. + + + Attack: + Atac: + + + Use this knob for setting attack-time of the current envelope. The bigger this value the longer the envelope needs to increase to attack-level. Choose a small value for instruments like pianos and a big value for strings. + Usa aquesta roda per a ajustar el temps d'atac de l'envoltant actual. Quan més gran aquest valor, més temps necessita l'envoltant per a augmentar cap al nivell d'atac. Escull un valor petit per a instruments com el piano i un valor gran per a corda. + + + Hold: + Manteniment: + + + Use this knob for setting hold-time of the current envelope. The bigger this value the longer the envelope holds attack-level before it begins to decrease to sustain-level. + Usa aquesta roda per a ajustar el temps de manteniment de l'envoltant actual. Quan més gran aquest valor, més temps manté l'envoltant el nivell d'atac abans de començar a reduir cap al nivell de sosteniment. + + + Decay: + Decaïment: + + + Use this knob for setting decay-time of the current envelope. The bigger this value the longer the envelope needs to decrease from attack-level to sustain-level. Choose a small value for instruments like pianos. + Usa aquesta roda per a ajustar el temps de decaïment de l'envoltant actual. Quan més gran aquest valor, més temps necessita l'envoltant per a reduir des del nivell d'atac fins al de sosteniment. Escull un valor petit per a instruments com el piano. + + + Sustain: + Sosteniment: + + + Use this knob for setting sustain-level of the current envelope. The bigger this value the higher the level on which the envelope stays before going down to zero. + Usa aquesta roda per a ajustar el nivell de sosteniment de l'envoltant actual. Quan més gran aquest valor, a major nivell roman l'envoltant abans de disminuir cap a zero. + + + Release: + Alliberament: + + + Modulation amount: + Quantitat de modulació: + + + LFO-predelay: + Preretard OBF: + + + Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. + Usa aquesta roda per a ajustar el temps de preretard de l'OBF actual. Quan més gran aquest valor, major el temps abans que l'OBF comenci a oscil·lar. + + + LFO-attack: + Atac OBF: + + + Use this knob for setting attack-time of the current LFO. The bigger this value the longer the LFO needs to increase its amplitude to maximum. + Usa aquesta roda per a ajustar el temps d'atac de l'OBF actual. Quan més gran aquest valor, més temps necessita l'OBF per a augmentar la seva amplitud al màxim. + + + LFO-speed: + Velocitat OBF: + + + Use this knob for setting speed of the current LFO. The bigger this value the faster the LFO oscillates and the faster will be your effect. + Usa aquesta roda per a ajustar la velocitat de l'OBF actual. Quan més gran aquest valor, més ràpid oscil·la l'OBF i més ràpid serà l'efecte. + + + Use this knob for setting modulation amount of the current LFO. The bigger this value the more the selected size (e.g. volume or cutoff-frequency) will be influenced by this LFO. + Usa aquesta roda per a ajustar la quantitat de modulació de l'OBF actual. Quan més gran aquest valor, més influirà l'OBF la magnitud seleccionada (p.e. volum o freqüència de tall). + + + Click here if you want a sine-wave for current oscillator. + Pica aquí si vols una ona sinusoïdal per a l'oscil·lador actual. + + + Click here if you want a triangle-wave for current oscillator. + Pica aquí si vols una ona triangular per a l'oscil·lador actual. + + + Click here if you want a saw-wave for current oscillator. + Pica aquí si vols una ona de serra per a l'oscil·lador actual. + + + Click here if you want a square-wave for current oscillator. + Pica aquí si vols una ona quadrada per a l'oscil·lador actual. + + + ms/LFO: + ms/OBF: + + + Predelay-time + Temps de preretard + + + Attack-time + Temps d'atac + + + Hold-time + Temps de manteniment + + + Decay-time + Temps de decaïment + + + Sustain-level + Temps de sosteniment + + + Release-time + Temps d'alliberament + + + Modulation amount + Quantitat de modulació + + + LFO-predelay-time + Temps de preretard de l'OBF + + + LFO-attack-time + Temps d'atac de l'OBF + + + LFO-speed + Velocitat de l'OBF + + + LFO-modulation-amount + Quantitat de modulació de l'OBF + + + Use this knob for setting release-time of the current envelope. The bigger this value the longer the envelope needs to decrease from sustain-level to zero. Choose a big value for soft instruments like strings. + Usa aquesta roda per a ajustar el temps d'alliberament de l'envoltant actual. Quan més gran aquest valor, més temps necessita l'envoltant per a disminuir des del nivell de sosteniment a zero. Escull un valor gran per a instruments suaus com els de corda. + + + Use this knob for setting modulation amount of the current envelope. The bigger this value the more the according size (e.g. volume or cutoff-frequency) will be influenced by this envelope. + Usa aquesta roda per a ajustar la quantitat de modulació de l'envoltant actual. Quan més gran aquest valor, més influirà l'envoltant la magnitud corresponent (p.e. volum o freqüència de tall). + + + Click here if the frequency of this LFO should be multiplied with 100. + Pica aquí si la freqüència d'aquest OBF ha de multiplicar-se per 100. + + + multiply LFO-frequency with 100 + multiplica freqüència d'OBF per 100 + + + Click here to make the envelope-amount controlled by this LFO. + Pica aquí per a que aquest OBF controli l'amplitud. + + + control envelope-amount by this LFO + amplitud controlada per aquest OBF + + + HOLD + MANT + + + DEL + RET + + + ATT + ATAC + + + DEC + DEC + + + SUST + SOST + + + REL + ALL + + + AMT + QUA + + + SPD + VEL + + + FREQ x 100 + FREQ x 100 + + + MODULATE ENV-AMOUNT + MODULA AMPLITUD + + + Click here if you want a user-defined wave for current oscillator. Afterwards drag an according sample-file into LFO-graph. + Pica aquí si vols una ona arbitrària per a l'oscil·lador actual. Després arrossega el fitxer de mostra corresponent al gràfic de l'OBF. + + + Hint + Consell + + + Drag a sample from somewhere and drop it in this window. + Arrossega una mostra d'on sigui i amolla-la en aquesta finestra. + + + + envelopeTabWidget + + LowPass + Passa-Baixa + + + HiPass + Passa-Alta + + + BandPass csg + Passa-Banda csg + + + BandPass czpg + Passa-Banda czpg + + + Notch + Osca + + + Allpass + Passa-Tot + + + Moog + Moog + + + Hz + Hz + + + Q/Resonance: + Q/Resonància: + + + Use this knob for setting Q/Resonance for the selected filter. Q/Resonance tells the filter, how much it should amplify frequencies near Cutoff-frequency. + Usa aquesta roda per a ajustar la Q/Resonància per al filtre seleccionat. Q/Resonància diu al filtre quant ha d'amplificar les freqüències a prop de la freqüència de tall. + + + Q/Resonance + Q/Resonància + + + 2x LowPass + 2x Passa-Baixa + + + These tabs contain envelopes. They're very important for modifying a sound, for not saying that they're almost always neccessary for substractive synthesis. For example if you have a volume-envelope, you can set when the sound should have which volume-level. Maybe you want to create some soft strings. Then your sound has to fade in and out very softly. This can be done by setting a large attack- and release-time. It's the same for other envelope-targets like panning, cutoff-frequency of used filter and so on. Just monkey around with it! You can really make cool sounds out of a saw-wave with just some envelopes...! + Aquestes pestanyes contenen envoltants. Aquestes són molt importants per a modificar el so, per no dir que són quasi sempre necessàries per a la síntesi sostractiva. Per exemple, si tens una envoltant de volum, pots ajustar quan el so ha de tenir cert nivell de volum. Potser vols crear algunes cordes suaus. Llavors el so ha d'aparèixer i desaparèixer molt suaument. Això es pot fer posant un temps d'atac i d'alliberament llargs. És el mateix per als altres tipus d'envoltants com panorama, freqüència de tall del filtre usat, etc. Tan sols juga-hi! Realment pots aconseguir sons molt bons partint d'una ona de serra amb només unes quantes envoltants...! + + + cutoff-frequency + freqüència de tall + + + cutoff-frequency: + freqüència de tall: + + + VOLUME + VOLUM + + + CUTOFF + FREQ TALL + + + Q/RESO + Q/RESO + + + FILTER + FILTRE + + + Use this knob for setting the cutoff-frequency for the selected filter. The cutoff-frequency specifies the frequency for cutting the signal by a filter. For example a lowpass-filter cuts all frequencies above the cutoff-frequency. A highpass-filter cuts all frequencies below cutoff-frequency and so on... + Usa aquesta roda per a ajustar la freqüència de tall per al filtre seleccionat. La freqüència de tall especifica la freqüència on el filtre talla el senyal. Per exemple, un filtre passa-baixa talla totes les freqüències per sobre de la freqüència de tall. Un filtre passa-alta talla totes les freqüències per sota de la freqüència de tall, etc... + + + TARGET + OBJECTIU + + + Here you can select the built-in filter you want to use for this instrument-track. Filters are very important for changing the characteristics of a sound. + Aquí pots seleccionar el filtre integrat que vols usar per a aquesta pista d'instrument. Els filtres són molt importants per a canviar les característiques d'un so. + + + + exportProjectDialog + + Could not open file + No es pot obrir el fitxer + + + Could not open file %1 for writing. +Please make sure you have write-permission to the file and the directory containing the file and try again! + No es pot obrir el fitxer %1 per a escriure. +Per favor, assegura't que tens permís d'escriptura per al fitxer i el directori que el conté i torna-ho a provar! + + + Uncompressed Wave-File (*.wav) + Fitxer WAV Descomprimit (*.wav) + + + Compressed OGG-File (*.ogg) + Fitxer OGG Comprimit (*.ogg) + + + Type: + Tipus: + + + kbps: + kbps: + + + variable bitrate + taxa de bit variable + + + use high-quality-mode (recommened) + usa mode d'alta qualitat (recomanat) + + + Export + Exporta + + + Cancel + Cancel·la + + + Export failed + L'exportació ha fallat + + + Rendering: + Representant: + + + Export project to %1 + Exporta projecte a %1 + + + The project-export failed, because the output-file/-device could not be opened. +Make sure, you have write access to the selected file/device! + L'exportació del projecte ha fallat perquè el fitxer/dispositiu de sortida no s'ha pogut obrir. +Assegura't que tens permís d'escriptura per al fitxer/dispositiu seleccionat! + + + Exporting project to %1 + Exportant projecte a %1 + + + + fileBrowser + + Browser + Navegador + + + Reload (F5) + Recarrega (F5) + + + Send to active instrument-track + Envia a la pista d'instrument activa + + + Open in new instrument-track/Song-Editor + Obre en una nova pista d'instrument/Editor de Cançó + + + Open in new instrument-track/B+B Editor + Obre en una nova pista d'instrument/Editor R+B + + + + impulseEditor + + Draw your own waveform here by dragging your mouse onto this graph + Dibuixa la teva pròpia forma d'ona aquí arrossegant el ratolí sobre aquest gràfic + + + Click here if you want a sine-wave for current oscillator. + Pica aquí si vols una ona sinusoïdal per a l'oscil·lador actual. + + + Click here if you want a triangle-wave for current oscillator. + Pica aquí si vols una ona triangular per a l'oscil·lador actual. + + + Click here if you want a saw-wave for current oscillator. + Pica aquí si vols una ona de serra per a l'oscil·lador actual. + + + Click here if you want a square-wave for current oscillator. + Pica aquí si vols una ona quadrada per a l'oscil·lador actual. + + + Click here if you want a white-noise for current oscillator. + Pica aquí si vols un soroll blanc per a l'oscil·lador actual. + + + Click here if you want a user-defined wave-shape for current oscillator. + Pica aquí si vols una forma d'ona arbitrària per a l'oscil·lador actual. + + + Click here to smooth waveform. + Pica aquí per a suavitzar la forma d'ona. + + + Click here to normalize waveform. + Pica aquí per a normalitzar la forma d'ona. + + + Click here to enable/disable waveform. + Pica aquí per a activar/desactivar la forma d'ona. + + + &Help + &Ajuda + + + + instrumentTrack + + With this knob you can set the volume of the opened channel. + Amb aquesta roda pots ajustar el volum del canal obert. + + + Within this rectangle you can set the position where the channel should be audible. You should have a soundcard supporting at least surround 4.0 for enjoying this feature. + Amb aquest rectangle pots ajustar la posició on el canal ha de ser audible. Necessites una targeta de so que suporti almenys l'envoltant 4.0 per a gaudir d'aquesta característica. + + + unnamed_channel + canal_sense_nom + + + Channel volume + Volum del canal + + + Channel volume: + Volum del canal: + + + VOL + VOL + + + MIDI input/output + Entrada/sortida MIDI + + + GENERAL SETTINGS + CONFIGURACIÓ GENERAL + + + VOLUME + VOLUM + + + FX CHNL + CANAL FX + + + Save current channel settings in a preset-file + Desa la configuració del canal actual en una plantilla + + + Click here, if you want to save current channel settings in a preset-file. Later you can load this preset by double-clicking it in the preset-browser. + Pica aquí si vols desar la configuració del canal actual en una plantilla. Més tard podràs carregar aquesta plantilla picant-la dos cops al navegador de plantilles. + + + Default + Defecte + + + ENV/LFO/FILTER + ENV/OBF/FILTRE + + + ARP/CHORD + ARP/ACORD + + + MIDI + MIDI + + + MIDI input + Entrada MIDI + + + MIDI output + Sortida MIDI + + + Save channel-settings in file + Desa configuració de canal en fitxer + + + Channel-Settings-File (*.cs.xml) + Fitxer de Configuració de Canal (*.cs.xml) + + + PLUGIN + CONNECTOR + + + + knob + + &Help + &Ajuda + + + &Reset (%1%2) + &Restaura (%1%2) + + + &Copy value (%1%2) + &Copia valor (%1%2) + + + &Paste value (%1%2) + &Enganxa valor (%1%2) + + + Connect to MIDI-device + Connecta a dispositiu MIDI + + + Please enter a new value between %1 and %2: + Per favor, introdueix un nou valor entre %1 i %2: + + + + listView + + Files + Fitxers + + + Loading sample + Carregant mostra + + + Please wait, loading sample for preview... + Per favor espera, carregant mostra per a previsualitzar... + + + --- Factory files --- + --- Fitxers de fàbrica --- + + + + mainWindow + + Setting up main-window and workspace... + Preparant finestra principal i espai de treball... + + + Creating new song... + Creant nova cançó... + + + Creating GUI... + Creant interfície... + + + &New + &Nou + + + &Open... + &Obre... + + + &Save + &Desa + + + Save &As... + &Anomena i desa... + + + E&xport + E&xporta + + + &Quit + &Surt + + + Help + Ajuda + + + About + Quant a + + + &Help + &Ajuda + + + What's this? + Què és això? + + + My samples + Les meves mostres + + + My presets + Les meves plantilles + + + My projects + Els meus projectes + + + Loading song... + Carregant cançó... + + + &Settings + &Configuració + + + Show setup wizard + Mostra l'assistent de configuració + + + By pressing this button, you can show or hide the project notes window. In this window you can put down your project notes. + Pitjant aquest botó, pots mostrar o amagar la finestra de notes del projecte. En aquesta finestra pots escriure les teves notes del projecte. + + + LMMS %1 + LMMS %1 + + + Create new project + Crea nou projecte + + + Open existing project + Obre projecte existent + + + Save current project + Desa projecte actual + + + Export current project + Exporta projecte actual + + + By pressing this button, you can show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melody-patterns in an easy way. + Pitjant aquest botó pots mostrar o amagar el Rotlle de Piano. Amb l'ajuda del Rotlle de Piano pots editar patrons de melodia fàcilment. + + + &Project + &Projecte + + + Open project + Obre projecte + + + Save project + Desa projecte + + + Import file + Importa fitxer + + + My home + El meu cau + + + Root directory + Directori arrel + + + Show/hide Beat+Baseline Editor + Mostra/amaga Editor de Ritme Base + + + By pressing this button, you can show or hide the Beat+Baseline Editor. The Beat+Baseline Editor is needed for creating beats, opening, adding and removing channels, cutting, copying and pasting beat- and baseline-patterns and other things like that. + Pitjant aquest botó pots mostrar o amagar l'Editor de Ritme Base. L'Editor de Ritme Base és necessari per a crear ritmes; obrir, afegir i eliminar canals; tallar, copiar i enganxar patrons de ritme; i altres funcions similars. + + + Show/hide Piano-Roll + Mostra/amaga Rotlle de Piano + + + Show/hide Song-Editor + Mostra/amaga Editor de Cançó + + + By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap-samples) directly into the playlist. + Pitjant aquest botó pots mostrar o amagar l'Editor de Cançó. Amb l'ajuda de l'Editor de Cançó pots editar la llista de reproducció de la cançó i especificar quan ha de tocar-se cada pista. També pots inserir i moure mostres (p.e. mostres de rap) directament a la llista de reproducció. + + + Show/hide project notes + Mostra/amaga les notes del projecte + + + &Edit + &Edita + + + Undo + Desfés + + + Redo + Refés + + + Show settings dialog + Mostra el diàleg de configuració + + + MultiMedia Project (*.mmp *.xml) + Projecte MultiMèdia (*.mmp *.xml) + + + MultiMedia Project (*.mmp);;MultiMedia Project Template (*.mpt) + Projecte MultiMèdia (*.mmp);;Plantilla de Projecte MultiMèdia (*.mpt) + + + Help not available + Ajuda no disponible + + + Currently there's no help available in LMMS. +Please visit http://wiki.mindrules.net for documentation on LMMS. + Actualment no hi ha ajuda diponible a LMMS. +Per favor, visita http://wiki.mindrules.net per a documentació sobre LMMS. + + + + midiClient + + DEVICE + DISPOSITIU + + + + midiClientRaw + + DEVICE + DISPOSITIU + + + + midiTabWidget + + MIDI-SETUP FOR THIS CHANNEL + CONFIGURACIÓ MIDI PER A AQUEST CANAL + + + CHANNEL + CANAL + + + Receive MIDI-events + Rep esdeveniments MIDI + + + Default velocity for all input-events + Velocitat per defecte per a tots els esdeveniments d'entrada + + + Send MIDI-events + Envia esdeveniments MIDI + + + Default velocity for all output-events + Velocitat per defecte per a tots els esdeveniments de sortida + + + MIDI-devices to receive MIDI-events from + Dispositius MIDI des d'on rebre esdeveniments MIDI + + + MIDI-devices to send MIDI-events to + Dispositius MIDI a on enviar esdeveniments MIDI + + + + mixer + + Plugin not found + Connector no trobat + + + The %1-plugin wasn't found! + No s'ha trobat el connector %1! + + + Error while loading plugin + Error en carregar el connector + + + Failed loading plugin "%1"! + Ha fallat la càrrega del connector "%1"! + + + + nameLabel + + Select icon + Selecciona icona + + + All images (*.png *.jpg *.jpeg *.gif *.bmp) + Totes les imatges (*.png *.jpg *.jpeg *.gif *.bmp) + + + + nineButtonSelector + + &Help + &Ajuda + + + + organicInstrument + + Osc %1 waveform + Forma d'ona d'osc %1 + + + Osc %1 waveform: + Forma d'ona d'osc %1: + + + Osc %1 volume + Volum d'osc %1 + + + Osc %1 volume: + Volum d'osc %1: + + + Osc %1 panning + Panorama d'osc %1 + + + Osc %1 panning: + Panorama d'osc %1: + + + Osc %1 fine detuning left + Desafinament fi esquerre d'osc %1 + + + Osc %1 fine detuning left: + Desafinament fi esquerre d'osc %1: + + + cents + cents + + + FX1 + FX1 + + + + pattern + + Change name + Canvia nom + + + Reset name + Restaura nom + + + Freeze + Congela + + + Unfreeze + Descongela + + + Clear all notes + Esborra totes les notes + + + Cannot freeze pattern + No es pot congelar el patró + + + The pattern currently cannot be freezed because you're in play-mode. Please stop and try again! + El patró no es pot congelar ara mateix perquè estàs en mode de reproducció. Per favor, atura i torna-ho a provar! + + + Open in piano-roll + Obre al rotlle de piano + + + Refreeze + Recongela + + + double-click to open this pattern in piano-roll +use mouse wheel to set volume of a step + pica dos cops per a obrir aquest patró al rotlle de piano +usa la roda del ratolí per a ajustar el volum d'un pas + + + Pattern muted + Patró apagat + + + The track this pattern belongs to or the pattern itself is currently muted therefore freezing makes no sense! Do you still want to continue? + La pista a la que pertany aquest patró o el patró mateix està apagat actualment, per tant congelar no té sentit! Encara vols continuar? + + + Add steps + Afegeix passos + + + Remove steps + Elimina passos + + + 1 step + 1 pas + + + %1 steps + %1 passos + + + + patternFreezeStatusDialog + + Freezing pattern... + Congelant patró... + + + Cancel + Cancel·la + + + + pianoRoll + + If you click here, erase-mode will be activated. In this mode you can erase single notes. You can also press 'E' on your keyboard to activate this mode. + Si piques aqui, s'activarà el mode esborrar. En aquest mode pots esborrar notas soltes. També pots pitjar 'E' al teclat per a activar aquest mode. + + + Cut selected notes (Ctrl+X) + Talla les notes seleccionades (Ctrl+X) + + + Copy selected notes (Ctrl+C) + Copia les notes seleccionades (Ctrl+C) + + + If you click here, selected notes will be cut into the clipboard. You can paste them anywhere in any pattern by clicking on the paste-button. + Si piques aqui, les notes seleccionades seran tallades cap al portapapers. Pots enganxar-les a qualsevol banda de qualsevol patró picant el botó enganxar. + + + If you click here, selected notes will be copied into the clipboard. You can paste them anywhere in any pattern by clicking on the paste-button. + Si piques aquí, les notes seleccionades seran copiades al portapapers. Pots enganxar-les a qualsevol banda de qualsevol patró picant el botó enganxar. + + + If you click here, the notes from the clipboard will be pasted at the first visible tact. + Si piques aqui, les notes del portapapers seran enganxades al primer compàs visible. + + + Paste notes from clipboard (Ctrl+V) + Enganxa notes des del portapapers (Ctrl+V) + + + Play/pause current pattern (Space) + Reprodueix/pausa el patró actual (Espai) + + + Stop playing of current pattern (Space) + Atura la reproducció del patró actual (Espai) + + + Click here, if you want to play the current pattern. This is useful while editing it. The pattern is automatically looped when its end is reached. + Pica aquí si vols reproduir el patró actual. Això és útil mentre s'edita. El patró es repeteix automàticament quan arriba al final. + + + Click here, if you want to stop playing of current pattern. + Pica aquí si vols aturar la reproducció del patró actual. + + + If you click here, draw-mode will be activated. In this mode you can add, resize and move single notes. This is the default-mode which is used most of the time. You can also press 'D' on your keyboard to activate this mode. + Si piques aquí, el mode dibuixar serà activat. En aquest mode pots afegir, redimensionar i moure notes soltes. Aquest és el mode per defecte que s'utilitza més temps. També pots pitjar 'D' al teclat per a activar aquest mode. + + + Piano-Roll - no pattern + Rotlle de Piano - sense patró + + + Please open a pattern by double-clicking on it! + Per favor, obre un patró picant-lo dos cops! + + + If you click here, select-mode will be activated. In this mode you can select notes. This is neccessary if you want to cut, copy, paste, delete or move notes. You can also press 'S' on your keyboard to activate this mode. + Si piques aquí, el mode seleccionar serà activat. En aquest mode pots seleccionar notes. Això és necessari si vols tallar, copiar, enganxar, esborrar o moure notes. També pots pitjar 'S' al teclat per a activar aquest mode. + + + If you click here, move-mode will be activated. In this mode you can move the notes you selected in select-mode. You can also press 'M' on your keyboard to activate this mode. + Si piques aqui, el mode moure serà activat. En aquest mode pots moure les notes que has seleccionat en el mode seleccionar. També pots pitjar 'M' al teclat per a activar aquest mode. + + + Piano-Roll - %1 + Rotlle de Piano - %1 + + + Record notes from MIDI-device/channel-piano + Enregistra notes des d'un dispositiu MIDI o piano de canal + + + Click here, if you want to record notes from a MIDI-device or the virtual test-piano of the according channel-window to the current pattern. When recording all notes you play will be written to this pattern and you can play and edit them afterwards. + Pica aquí si vols enregistrar notes des d'un dispositiu MIDI o el piano virtual de prova de la finestra de canal corresponent al patró actual. Mentre s'enregistra, totes les notes que toquis seran escrites en aquest patró i les podràs reproduir i editar després. + + + Draw mode (D) + Mode dibuixar (D) + + + Erase mode (E) + Mode esborrar (E) + + + Select mode (S) + Mode seleccionar (S) + + + Move selection mode (M) + Mode moure selecció (M) + + + Last note + Darrera nota + + + Notes copied + Notes copiades + + + All selected notes were copied to the clipboard. + Totes les notes seleccionades s'han copiat al portapapers. + + + + pluckedStringSynth + + Pick position + Posició per a tocar + + + Pick position: + Posició per a tocar: + + + Pickup position + Posició per a recollir + + + Pickup position: + Posició per a recollir: + + + + pluginBrowser + + no description + sense descripció + + + Instrument plugins + Connectors d'instrument + + + Plugin browser + Navegador de connectors + + + You can drag an instrument-plugin into either the Song-Editor, the Beat+Baseline Editor or just into a channel-window or on the corresponding channel-button. + Pots arrossegar un connector d'instrument a l'Editor de Cançó, a l'Editor de Ritme Base o simplement a una finestra de canal o al botó de canal corresponent. + + + Vibrating string modeler + Modelador de corda vibrant + + + cheap synthesis of guitar/harp-like sounds + síntesi barata de sons com de guitarra/arpa + + + Filter for importing MIDI-files into LMMS + Filtre per a importar fitxers MIDI a LMMS + + + three powerful oscillators you can modulate in several ways + tres potents oscil·ladors que pots modular de vàries maneres + + + VST-host for using VST(i)-plugins within LMMS + hoste VST per a usar connectors VST(i) amb LMMS + + + Filter for importing FL Studio projects into LMMS + Filtre per a importar projectes FL Studio a LMMS + + + Rough & Dirty Wavetable Synthesizer. + Sintetitzador de Taula d'ones Bast & Brut. + + + Additive Synthesizer for organ-like sounds + Sintetitzador Additiu per a sons com d'orgue + + + simple sampler with various settings for using samples (e.g. drums) in an instrument-track + mostrejador simple amb diferents paràmetres per a usar mostres (p.e. bateria) en una pista d'instrument + + + + projectNotes + + Put down your project notes here. + Escriu aquí les teves notes del projecte. + + + Project notes + Notes del projecte + + + Edit Actions + Accions d'Editar + + + &Undo + &Desfés + + + Ctrl+Z + Ctrl+Z + + + &Redo + &Refés + + + Ctrl+Y + Ctrl+Y + + + &Copy + &Copia + + + Ctrl+C + Ctrl+C + + + Cu&t + &Talla + + + Ctrl+X + Ctrl+X + + + &Paste + &Enganxa + + + Ctrl+V + Ctrl+V + + + Format Actions + Accions de Format + + + &Bold + &Negreta + + + Ctrl+B + Ctrl+B + + + &Italic + Curs&iva + + + Ctrl+I + Ctrl+I + + + &Underline + &Subratllat + + + Ctrl+U + Ctrl+U + + + &Left + &Esquerra + + + Ctrl+L + Ctrl+L + + + C&enter + Cen&tre + + + Ctrl+E + Ctrl+E + + + &Right + &Dreta + + + Ctrl+R + Ctrl+R + + + &Justify + &Justifica + + + Ctrl+J + Ctrl+J + + + &Color... + &Color... + + + + renameDialog + + Rename... + Canvia el nom... + + + + sampleBuffer + + Wave-Files (*.wav) + Fitxers WAV (*.wav) + + + OGG-Files (*.ogg) + Fitxers OGG (*.ogg) + + + VOC-Files (*.voc) + Fitxers VOC (*.voc) + + + AIFF-Files (*.aif *.aiff) + Fitxers AIFF (*.aif *.aiff) + + + AU-Files (*.au) + Fitxers AU (*.au) + + + RAW-Files (*.raw) + Fitxers RAW (*.raw) + + + Open audio file + Obre fitxer d'àudio + + + All Audio-Files (*.wav *.ogg *.flac *.voc *.aif *.aiff *.au *.raw) + Tots els Fitxers d'Àudio (*.wav *.ogg *.flac *.voc *.aif *.aiff *.au *.raw) + + + FLAC-Files (*.flac) + Fitxers FLAC (*.flac) + + + + sampleTCO + + double-click to select sample + pica dos cops per a seleccionar la mostra + + + + sampleTrack + + Sample track + Pista de mostra + + + Channel volume + Volum del canal + + + Channel volume: + Volum del canal: + + + VOL + VOL + + + With this knob you can set the volume of the opened channel. + Amb aquesta roda pots ajustar el volum del canal obert. + + + + setupDialog + + Setup LMMS + Configuració de LMMS + + + General settings + Configuració general + + + BUFFER SIZE + TAMANY DE MEMÒRIA INTERMÈDIA + + + Reset to default-value + Restaura al valor per defecte + + + MISC + MISC + + + Disable tooltips (no spurious interrupts while playing) + Desactiva els avisos d'eina (sense interrupcions espúries mentre es reprodueix) + + + Classical knob usability (move cursor around knob to change value) + Usabilitat de roda clàssica (mou el cursor al voltant de la roda per a canviar el valor) + + + GIMP-like windows (no MDI) + Finestres com al GIMP (sense MDI) + + + Do not show wizard after up-/downgrade + No mostris l'assistent després d'actualitzar/desactualitzar + + + Do not show message after closing this dialog + No mostris el missatge que surt en tancar aquest diàleg + + + Display volume as dbV + Mostra el volum en dbV + + + Directories + Directoris + + + LMMS working directory + Directori de treball de LMMS + + + VST-plugin directory + Directori de connectors VST + + + Artwork directory + Directori de material gràfic + + + FL Studio installation directory + Directori d'instal·lació de FL Studio + + + Performance settings + Configuració de rendiment + + + UI effects vs. performance + Efectes UI vs. rendiment + + + Disable channel activity indicators + Desactiva els indicadors d'activitat de canal + + + Only press keys on channel-piano manually + Pitja les tecles del piano de canal només manualment + + + Audio settings + Configuració d'àudio + + + AUDIO INTERFACE + INTERFÍCIE D'ÀUDIO + + + MIDI settings + Configuració MIDI + + + MIDI INTERFACE + INTERFÍCIE MIDI + + + OK + D'acord + + + Cancel + Cancel·la + + + Restart LMMS + Reinicia LMMS + + + Please note that most changes won't take effect until you restart LMMS! + Per favor, tingues en compte que la majoria de canvis no s'aplicaran fins que reiniciïs LMMS! + + + Frames: %1 +Latency: %2 ms + Marcs: %1 +Latència: %2 ms + + + Here you can setup the internal buffer-size used by LMMS. Smaller values result in a lower latency but also may cause unusable sound or bad performance, especially on older computers or systems with a non-realtime kernel. + Aquí pots configurar el tamany de la memòria intermèdia interna usada per LMMS. Els valors més petits donen menor latència però també poden causar so inservible o baix rendiment, especialment a ordinadors antics o sistemes amb un nucli sense temps real. + + + Choose LMMS working directory + Escull el directori de treball de LMMS + + + Choose your VST-plugin directory + Escull el teu directori de connectors VST + + + Choose artwork-theme directory + Escull el directori de material gràfic + + + Choose FL Studio installation directory + Escull el directori d'instal·lació de FL Studio + + + Here you can select your preferred audio-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, JACK, OSS and more. Below you see a box which offers controls to setup the selected audio-interface. + Aquí pots seleccionar la teva interfície d'àudio preferida. Depenent de la configuració del teu sistema durant el temps de compilació, pots escollir entre ALSA, JACK, OSS i altres. Abaix pots veure una caixa amb controls per a configurar la interfície d'àudio seleccionada. + + + Here you can select your preferred MIDI-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, OSS and more. Below you see a box which offers controls to setup the selected MIDI-interface. + Aquí pots seleccionar la teva interfície MIDI preferida. Depenent de la configuració del teu sistema durant el temps de compilació, pots escollir entre ALSA, OSS i més. Abaix pots veure una caixa amb controls per a configurar la interfície MIDI seleccionada. + + + + setupWidget + + ALSA (Advanced Linux Sound Architecture) + ALSA (Advanced Linux Sound Architecture) + + + Dummy (no sound output) + Maniquí (sense sortida de so) + + + JACK (JACK Audio Connection Kit) + JACK (JACK Audio Connection Kit) + + + OSS (Open Sound System) + OSS (Open Sound System) + + + SDL (Simple DirectMedia Layer) + SDL (Simple DirectMedia Layer) + + + ALSA Raw-MIDI (Advanced Linux Sound Architecture) + MIDI cru ALSA (Advanced Linux Sound Architecture) + + + OSS Raw-MIDI (Open Sound System) + MIDI cru OSS (Open Sound System) + + + Dummy (no MIDI support) + Maniquí (sense suport MIDI) + + + ALSA-Sequencer (Advanced Linux Sound Architecture) + Seqüenciador ALSA (Advanced Linux Sound Architecture) + + + + songEditor + + Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song. + Pica aquí si vols aturar la reproducció de la cançó. El marcador de posició de cançó serà col·locat a l'inici de la cançó. + + + untitled + sense títol + + + File already exists + El fitxer ja existeix + + + Could not open file + No es pot obrir el fitxer + + + Error in multimedia-project + Error al projecte multimèdia + + + The multimedia-project %1 seems to contain errors. LMMS will try its best to recover as much as possible data from this file. + El projecte multimèdia %1 sembla contenir errors. LMMS farà el que pot per a recuperar el màxim possible de dades d'aquest fitxer. + + + Could not write file + No es pot escriure el fitxer + + + Song-Editor + Editor de Cançó + + + The file "%1" already exists. Do you want to overwrite it? + El fitxer "%1" ja existeix. Vols sobreescriure'l? + + + Click here, if you want to play your whole song. Playing will be started at the song-position-marker (green). You can also move it while playing. + Pica aquí si vols reproduir la cançó sencera. La reproducció començarà al marcador de posició de cançó (verd). També pots moure'l mentre es reprodueix. + + + Play song (Space) + Reprodueix cançó (Espai) + + + Stop song (Space) + Atura cançó (Espai) + + + The tempo of a song is specified in beats per minute (BPM). If you want to change the tempo of your song, change this value. Every tact has four beats, so the tempo in BPM specifies, how many tacts / 4 should be played within a minute (or how many tacts should be played within four minutes). + El tempo d'una cançó s'especifica en batecs per minut (BPM). Si vols canviar el tempo de la cançó, canvia aquest valor. Cada compàs té quatre batecs, llavors el tempo en BPM especifica quants compassos / 4 s'han de tocar en un minut (o quants compassos s'han de tocar en quatre minuts). + + + master pitch + to mestre + + + tempo of song + tempo de cançó + + + Add beat/bassline + Afegeix ritme base + + + Add sample-track + Afegeix pista de mostra + + + Project NOT saved. + Projecte NO desat. + + + The file %1 already exists. +Do you want to overwrite it? + El fitxer %1 ja existeix. +Vols sobreescriure'l? + + + Select file for project-export... + Selecciona fitxer per a exportar projecte... + + + Project not saved + Projecte no desat + + + The current project was modified since last saving. Do you want to save it now? + El projecte actual ha estat modificat des del darrer desament. Vols desar-lo ara? + + + Import file + Importa fitxer + + + TEMPO/BPM + TEMPO/BPM + + + Could not open file %1. You probably have no rights to read this file. +Please make sure you have at least read-access to the file and try again. + No es pot obrir el fitxer %1. Probablement no tens permís per a llegir aquest fitxer. +Per favor, assegura't que tens permís de lectura per al fitxer i torna-ho a provar. + + + High quality mode + Mode alta qualitat + + + Auto limiter + Autolimitador + + + master volume + volum mestre + + + Master volume + Volum mestre + + + Master pitch + To mestre + + + Draw mode + Mode dibuixar + + + Edit mode (select and move) + Mode editar (selecciona i mou) + + + Value: %1% + Valor: %1% + + + Value: %1 semitones + Valor: %1 semitons + + + Project saved + Projecte desat + + + The project %1 is now saved. + El projecte %1 està desat. + + + The project %1 was not saved! + El projecte %1 no està desat! + + + Could not write file %1. You probably are not permitted to write to this file. +Please make sure you have write-access to the file and try again. + No es pot escriure el fitxer %1. Probablement no tens permís per a escriure aquest fitxer. +Per favor, assegura't que tens permís d'escriptura per a aquest fitxer i torna-ho a provar. + + + + surroundArea + + click to where this channel should be audible + pica a on aquest canal ha de ser audible + + + + tabWidget + + Settings for %1 + Configuració per a %1 + + + + tempoSyncKnob + + Tempo Sync + Sinc Tempo + + + &Reset (%1%2) + &Restaura (%1%2) + + + &Copy value (%1%2) + &Copia valor (%1%2) + + + &Paste value (%1%2) + &Enganxa valor (%1%2) + + + No Sync + Sense Sinc + + + Eight beats + Vuit batecs + + + Whole note + Nota sencera + + + Half note + Mitja nota + + + Quarter note + Quart de nota + + + 8th note + 8è de nota + + + 16th note + 16è de nota + + + 32nd note + 32è de nota + + + Connect to MIDI-device + Connecta a dispositiu MIDI + + + &Help + &Ajuda + + + Synced to Eight Beats + Sincronitzat a Vuit Batecs + + + Synced to Whole Note + Sincronitzat a Nota Sencera + + + Synced to Half Note + Sincronitzat a Mitja Nota + + + Synced to Quarter Note + Sincronitzat a Quart de Nota + + + Synced to 8th Note + Sincronitzat a 8è de Nota + + + Synced to 16th Note + Sincronitzat a 16è de Nota + + + Synced to 32nd Note + Sincronitzat a 32è de Nota + + + + timeLine + + Enable/disable auto-scrolling + Activa/desactiva autodesplaçament + + + Enable/disable loop-points + Activa/desactiva punts de bucle + + + After stopping go back to begin + Després d'aturar torna al començament + + + After stopping go back to position at which playing was started + Després d'aturar torna a la posició on va començar la reproducció + + + After stopping keep position + Després d'aturar manté la posició + + + Hint + Consell + + + Press <Ctrl> to disable magnetic loop-points. + Pitja <Ctrl> per a desactivar punts de bucle magnètics. + + + + trackContainer + + Loading project... + Carregant projecte... + + + Cancel + Cancel·la + + + Please wait... + Per favor, espera... + + + Importing MIDI-file... + Important fitxer MIDI... + + + Couldn't import file + No es pot importar el fitxer + + + Couldn't find a filter for importing file %1. +You should convert this file into a format supported by LMMS using another software. + No es pot trobar un filtre per a importar el fitxer %1. +Hauries de convertir aquest fitxer a un format suportat per LMMS utilitzant altre programari. + + + Couldn't open file + No es pot obrir el fitxer + + + Couldn't open file %1 for reading. +Please make sure you have read-permission to the file and the directory containing the file and try again! + No es pot llegir el fitxer %1. +Per favor, assegura't que tens permís de lectura per al fitxer i el directori que el conté i torna-ho a provar! + + + Importing FLP-file... + Important fitxer FLP... + + + + trackContentObject + + Cut + Talla + + + Copy + Copia + + + Paste + Enganxa + + + Current position + Posició actual + + + Hint + Consell + + + Press <Ctrl> for free positioning. + Pitja <Ctrl> per a col·locar lliurement. + + + Current length + Longitud actual + + + Press <Ctrl> for free resizing. + Pitja <Ctrl> per a redimensionar lliurement. + + + %1:%2 (%3:%4 to %5:%6) + %1:%2 (%3:%4 a %5:%6) + + + Delete (middle mousebutton) + Esborra (botó del mig del ratolí) + + + Mute/unmute (<Ctrl> + middle click) + Apaga/encén (<Ctrl> + clic del mig) + + + + trackOperationsWidget + + Press <Ctrl> while clicking on move-grip to begin a new drag'n'drop-action. + Pitja <Ctrl> quan piquis el control de moviment per a iniciar una nova acció d'arrossegar i amollar. + + + Clone this track + Clona aquesta pista + + + Remove this track + Elimina aquesta pista + + + Actions for this track + Accions per a aquesta pista + + + With this switch you can either mute this track or mute all other tracks. +By clicking left, this track is muted. This is useful, if you only want to listen to the other tracks without changing this track and loosing information. +When you click right on this switch, all other tracks will be muted. This is useful, if you only want to listen to this track. + Amb aquest interruptor pots tant apagar aquesta pista com apagar totes les altres pistes. +Amb un clic esquerre, aquesta pista s'apaga. Això és útil si només vols escoltar les altres pistes sense canviar aquesta i perdre informació. +Amb un clic dret a l'interruptor, totes les altres pistes s'apagaran. Això és útil si només vols escoltar aquesta pista. + + + left click = mute this track +right click = mute all other tracks (solo) + clic esquerre = apaga aquesta pista +clic dret = apaga totes les altres pistes (solo) + + + + tripleOscillator + + semitones + semitons + + + degrees + graus + + + Click here if you want a sine-wave for current oscillator. + Pica aquí si vols una ona sinusoïdal per a l'oscil·lador actual. + + + Click here if you want a triangle-wave for current oscillator. + Pica aquí si vols una ona triangular per a l'oscil·lador actual. + + + Click here if you want a saw-wave for current oscillator. + Pica aquí si vols una ona de serra per a l'oscil·lador actual. + + + Click here if you want a square-wave for current oscillator. + Pica aquí si vols una ona quadrada per a l'oscil·lador actual. + + + Click here if you want a white-noise for current oscillator. + Pica aquí si vols un soroll blanc per a l'oscil·lador actual. + + + Click here if you want a user-defined wave-shape for current oscillator. + Pica aquí si vols una forma d'ona arbitrària per a l'oscil·lador actual. + + + Click here if you want a moog-saw-wave for current oscillator. + Pica aquí si vols una ona de serra Moog per a l'oscil·lador actual. + + + Click here if you want an exponential wave for current oscillator. + Pica aquí si vols una ona exponencial per a l'oscil·lador actual. + + + use frequency modulation for modulating oscillator 2 with oscillator 1 + usa modulació de freqüència per a modular l'oscil·lador 2 amb l'oscil·lador 1 + + + use amplitude modulation for modulating oscillator 2 with oscillator 1 + usa modulació d'amplitud per a modular l'oscil·lador 2 amb l'oscil·lador 1 + + + mix output of oscillator 1 & 2 + mescla la sortida dels oscil·ladors 1 & 2 + + + synchronize oscillator 1 with oscillator 2 + sincronitza l'oscil·lador 1 amb l'oscil·lador 2 + + + use frequency modulation for modulating oscillator 3 with oscillator 2 + usa modulació de freqüència per a modular l'oscil·lador 3 amb l'oscil·lador 2 + + + use amplitude modulation for modulating oscillator 3 with oscillator 2 + usa modulació d'amplitud per a modular l'oscil·lador 3 amb l'oscil·lador 2 + + + mix output of oscillator 2 & 3 + mescla la sortida dels oscil·ladors 2 & 3 + + + synchronize oscillator 2 with oscillator 3 + sincronitza l'oscil·lador 2 amb l'oscil·lador 3 + + + Osc %1 volume + Volum d'osc %1 + + + Osc %1 volume: + Volum d'osc %1: + + + With this knob you can set the volume of oscillator %1. When setting a value of 0 the oscillator is turned off. Otherwise you can hear the oscillator as loud as you set it here. + Amb aquesta roda pots ajustar el volum de l'oscil·lador %1. Quan poses un valor de 0 l'oscil·lador s'apaga. Altrament, pots sentir l'oscil·lador tan alt com l'ajustis aquí. + + + Osc %1 panning + Panorama d'osc %1 + + + Osc %1 panning: + Panorama d'osc %1: + + + With this knob you can set the panning of the oscillator %1. A value of -100 means 100% left and a value of 100 moves oscillator-output right. + Amb aquesta roda pots ajustar el panorama de l'oscil·lador %1. Un valor de -100 significa 100% a l'esquerra i un valor de 100 mou la sortida de l'oscil·lador a la dreta. + + + Osc %1 coarse detuning: + Desafinament gruixut d'osc %1: + + + With this knob you can set the fine detuning of oscillator %1 for the right channel. The fine-detuning is ranged between -100 cents and +100 cents. This is useful for creating "fat" sounds. + Amb aquesta roda pots ajustar el desafinament fi de l'oscil·lador %1 per al canal dret. El desafinament fi està graduat entre -100 cents i +100 cents. Això és útil per a crear sons "gruixuts". + + + Osc %1 phase-offset + Desfasament d'osc %1 + + + Osc %1 phase-offset: + Desfasament d'osc %1: + + + With this knob you can set the phase-offset of oscillator %1. That means you can move the point within an oscillation where the oscillator begins to oscillate. For example if you have a sine-wave and have a phase-offset of 180 degrees the wave will first go down. It's the same with a square-wave. + Amb aquesta roda pots ajustar el desfasament de l'oscil·lador %1. Això significa que pots moure el punt d'una oscil·lació on l'oscil·lador comença a oscil·lar. Per exemple, si tens una ona sinusoïdal amb un desfasament de 180 graus, l'ona anirà primer cap a abaix. És el mateix amb una ona quadrada. + + + Osc %1 stereo phase-detuning + Desfasament estèreo d'osc %1 + + + Osc %1 coarse detuning + Desafinament gruixut d'osc %1 + + + With this knob you can set the coarse detuning of oscillator %1. You can detune the oscillator 12 semitones (1 octave) up and down. This is useful for creating sounds with a chord. + Amb aquesta roda pots ajustar el desafinament gruixut de l'oscil·lador %1. Pots desafinar l'oscil·lador 12 semitons (1 octava) cap a amunt i abaix. Això és útil per a crear sons amb un acord. + + + Osc %1 fine detuning left + Desafinament fi esquerre d'osc %1 + + + Osc %1 fine detuning left: + Desafinament fi esquerre d'osc %1: + + + cents + cents + + + With this knob you can set the fine detuning of oscillator %1 for the left channel. The fine-detuning is ranged between -100 cents and +100 cents. This is useful for creating "fat" sounds. + Amb aquesta roda pots ajustar el desafinament fi de l'oscil·lador %1 per al canal esquerre. El desafinament fi està graduat entre -100 cents i +100 cents. Això és útil per a crear sons "gruixuts". + + + Osc %1 fine detuning right + Desafinament fi dret d'osc %1 + + + Osc %1 fine detuning right: + Desafinament fi dret d'osc %1: + + + Osc %1 stereo phase-detuning: + Desfasament estèreo d'osc %1: + + + With this knob you can set the stereo phase-detuning of oscillator %1. The stereo phase-detuning specifies the size of the difference between the phase-offset of left and right channel. This is very good for creating wide stereo-sounds. + Amb aquesta roda pots ajustar el desfasament estèreo de l'oscil·lador %1. El desfasament estèreo especifica el tamany de la diferència entre el desfasament del canal esquerre i el dret. Això és molt bo per a crear sons estèreo amples. + + + + vestigeInstrument + + Open other VST-plugin + Obre altre connector VST + + + Click here, if you want to open another VST-plugin. After clicking on this button, a file-open-dialog appears and you can select your file. + Pica aquí si vols obrir un altre connector VST. Després de picar aquest botó, apareix un diàleg d'obrir fitxers i pots seleccionar el teu fitxer. + + + Show/hide VST-GUI + Mostra/amaga GUI VST + + + Click here to show or hide the graphical user interface (GUI) of your VST-plugin. + Pica aquí per a mostrar o amagar la interfície gràfica d'usuari (GUI) del connector VST. + + + Turn off all notes + Apaga totes les notes + + + Loading plugin + Carregant connector + + + Please wait while loading VST-plugin... + Per favor, espera mentre es carrega el connector VST... + + + Failed loading VST-plugin + Ha fallat la càrrega del connector VST + + + The VST-plugin %1 could not be loaded for some reason. +If it runs with other VST-software under Linux, please contact an LMMS-developer! + El connector VST %1 no s'ha pogut carregar per alguna raó. +Si funciona amb altre programari VST sota Linux, per favor contacta amb un desenvolupador de LMMS! + + + Open VST-plugin + Obre connector VST + + + DLL-files (*.dll) + Fitxers DLL (*.dll) + + + EXE-files (*.exe) + Fitxers EXE (*.exe) + + + No VST-plugin loaded + Cap connector VST carregat + + + by + per + + + + vibed + + The waveform editor provides control over the initial state or impulse that is used to start the string vibrating. The buttons to the right of the graph will initialize the waveform to the selected type. The '?' button will load a waveform from a file--only the first 128 samples will be loaded. + +The waveform can also be drawn in the graph. + +The 'S' button will smooth the waveform. + +The 'N' button will normalize the waveform. + L'editor de forma d'ona dóna control sobre l'estat inicial o impuls que s'utilitza per a iniciar la corda vibrant. Els botons de la dreta del gràfic inicialitzaran la forma d'ona al tipus seleccionat. El botó '?' carregarà la forma d'ona des d'un fitxer; només es carregaran les primeres 128 mostres. + +La forma d'ona també pot dibuixar-se al gràfic. + +El botó 'S' suavitzarà la forma d'ona. + +El botó 'N' normalitzarà la forma d'ona. + + + Volume + Volum + + + Volume: + Volum: + + + The 'V' knob sets the volume of the selected string. + La roda 'V' ajusta el volum de la corda seleccionada. + + + String stiffness + Rigidesa de corda + + + String stiffness: + Rigidesa de corda: + + + The 'S' knob sets the stiffness of the selected string. The stiffness of the string affects how long the string will ring out. The lower the setting, the longer the string will ring. + La roda 'S' ajusta la rigidesa de la corda seleccionada. La rigidesa de la corda afecta el temps que la corda resonarà. Quan més baix el valor, més temps sonarà la corda. + + + Pick position + Posició per a tocar + + + Pick position: + Posició per a tocar: + + + The 'P' knob sets the position where the selected string will be 'picked'. The lower the setting the closer the pick is to the bridge. + La roda 'P' ajusta la posició on serà tocada la corda seleccionada. Quan més baix el valor, es toca més a prop del pont. + + + Pickup position + Posició per a recollir + + + Pickup position: + Posició per a recollir: + + + The 'PU' knob sets the position where the vibrations will be monitored for the selected string. The lower the setting, the closer the pickup is to the bridge. + La roda 'PU' ajusta la posició on les vibracions seran monitoritzades per a la corda seleccionada. Quan més baix aquest valor, la recollida és més a prop del pont. + + + Pan + Panorama + + + Pan: + Panorama: + + + The Pan knob determines the location of the selected string in the stereo field. + La roda Panorama determina la localització de la corda seleccionada al camp estèreo. + + + Detune + Desafinament + + + Detune: + Desafinament: + + + The Detune knob modifies the pitch of the selected string. Settings less than zero will cause the string to sound flat. Settings greater than zero will cause the string to sound sharp. + La roda Desafinament modifica el to de la corda seleccionada. Valors menors que zero faran que la corda soni amb bemoll. Valors majors que zero faran que la corda soni amb sostingut. + + + Fuzziness + Arrissada + + + Fuzziness: + Arrissada: + + + The Slap knob adds a bit of fuzz to the selected string which is most apparent during the attack, though it can also be used to make the string sound more 'metallic'. + La roda Palmada afegeix una mica d'arrissada a la corda seleccionada que és més notable durant l'atac, encara que també pot usar-se per a que la corda soni més 'metàl·lica'. + + + Length + Longitud + + + Length: + Longitud: + + + The Length knob sets the length of the selected string. Longer strings will both ring longer and sound brighter, however, they will also eat up more CPU cycles. + La roda Longitud ajusta la longitud de la corda seleccionada. Les cordes més llargues sonaran a la vegada més temps i més brillants, emperò també es menjaran més cicles de CPU. + + + Impulse or initial state + Impuls o estat inicial + + + The 'Imp' selector determines whether the waveform in the graph is to be treated as an impulse imparted to the string by the pick or the initial state of the string. + El selector 'Imp' determina si la forma d'ona del gràfic s'ha de tractar com un impuls impartit a la corda quan es toca o l'estat inicial de la corda. + + + The Octave selector is used to choose which harmonic of the note the string will ring at. For example, '-2' means the string will ring two octaves below the fundamental, 'F' means the string will ring at the fundamental, and '6' means the string will ring six octaves above the fundamental. + El selector Octava s'usa per a escollir a quin harmònic de la nota la corda sonarà. Per exemple, '-2' significa que la corda sonarà dues octaves per sota de la fonamental, 'F' significa que la corda sonarà a la fonamental, i '6' significa que la corda sonarà sis octaves per sobre de la fonamental. + + + The String selector is used to choose which string the controls are editting. A Vibed instrument can contain up to nine independently vibrating strings. The LED in the lower right corner of the waveform editor indicates whether the selected string is active. + El selector Corda s'usa per a escollir quina corda estan editant els controls. Un instrument Vibed pot tenir fins a nou cordes vibrants independents. El LED a la cantonada dreta baixa de l'editor de forma d'ona indica si la corda seleccionada està activa. + + + Vibed models up to nine independently vibrating strings. The 'String' selector allows you to choose which string is being edited. The 'Imp' selector chooses whether the graph represents an impulse or the initial state of the string. The 'Octave' selector chooses which harmonic the string should vibrate at. + +The graph allows you to control the initial state or impulse used to set the string in motion. + +The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. + +'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. + +The 'Length' knob controls the length of the string. + +The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. + Vibed modela fins a nou cordes vibrants independents. El selector 'Corda' et permet escollir quina corda s'està editant. El selector 'Imp' escull si el gràfic representa un impuls o l'estat inicial de la corda. El selector 'Octava' escull a quin harmònic la corda ha de vibrar. + +El gràfic et permet controlar l'estat inicial o impuls usat per a posar la corda en marxa. + +La roda 'V' controla el volum. La roda 'S' controla la rigidesa de la corda. La roda 'P' controla la posició per a tocar. La roda 'PU' controla la posició per a recollir. + +Probablement no cal explicar 'Panorama' i 'Desafinament'. La roda 'Palmada' afegeix una mica d'arrissada al so de la corda. + +La roda 'Longitud' controla la longitud de la corda. + +El LED a la cantonada dreta baixa de l'editor de forma d'ona determina si la corda està activa a l'instrument actual. + + + &Help + &Ajuda + + + + visualizationWidget + + click to enable/disable visualization of master-output + pica per a activar/desactivar la visualització de la sortida mestra + + + + volumeKnob + + Please enter a new value between -96.0 dbV and 6.0 dbV: + Per favor, introdueix un nou valor entre -96,0 dbV i 6,0 dbV: + + + Please enter a new value between %1 and %2: + Per favor, introdueix un nou valor entre %1 i %2: + + + diff --git a/include/oscillator.h b/include/oscillator.h index fd91f9767..94c213f0f 100644 --- a/include/oscillator.h +++ b/include/oscillator.h @@ -35,8 +35,9 @@ #endif #include "mixer.h" -#include "interpolation.h" +#include "sample_buffer.h" #include "lmms_constants.h" +#include "volume_knob.h" // fwd-decl because we need it for the typedef below... @@ -47,9 +48,6 @@ typedef void ( oscillator:: * oscFuncPtr ) const ch_cnt_t _chnl ); -const sampleFrame ZERO_FRAME = { 0.0f, 0.0f } ; - - class oscillator { public: @@ -72,6 +70,7 @@ public: oscillator( const modulationAlgos _modulation_algo, const float _freq, const Sint16 _phase_offset, const float _volume_factor, + const volumeKnob * _volume_knob, const sample_rate_t _sample_rate, oscillator * _m_subOsc ) FASTCALL; virtual ~oscillator() @@ -79,19 +78,9 @@ public: delete m_subOsc; } - inline void setUserWave( const sampleFrame * _data, - const f_cnt_t _frames ) + inline void setUserWave( sampleBuffer * _wave ) { - if( m_userWaveFrames > 0 ) - { - m_userWaveData = _data; - m_userWaveFrames = _frames; - } - else - { - m_userWaveData = &ZERO_FRAME; - m_userWaveFrames = 1; - } + m_userWave = _wave; } inline void update( sampleFrame * _ab, const fpab_t _frames, @@ -114,6 +103,7 @@ public: const float _freq, const Sint16 _phase_offset, const float _volume_factor, + const volumeKnob * _volume_knob, const sample_rate_t _sample_rate, oscillator * _m_subOsc = NULL ); inline bool syncOk( void ) @@ -192,38 +182,34 @@ public: RAND_MAX ) ) ); } - static inline sample_t userWaveSample( const float _sample, - const sampleFrame * _user_wave, - const f_cnt_t _user_wave_frames ) - { - const float frame = fraction( fabs( _sample ) ) * _user_wave_frames; - const f_cnt_t f1 = static_cast( frame ); - const f_cnt_t f2 = ( f1 + 1 ) % _user_wave_frames; - return( linearInterpolate( _user_wave[f1][0], - _user_wave[f2][0], - fraction( frame ) ) ); - } - inline sample_t userWaveSample( const float _sample ) { - return( userWaveSample( _sample, m_userWaveData, - m_userWaveFrames ) ); + if( m_userWave->frames() > 0 ) + { + return( m_userWave->userWaveSample( _sample ) ); + } + else + { + return( 0.0f ); + } } protected: float m_freq; float m_volumeFactor; + const volumeKnob * m_volumeKnob; Sint16 m_phaseOffset; const sample_rate_t m_sampleRate; oscillator * m_subOsc; f_cnt_t m_sample; float m_oscCoeff; - sampleFrame const * m_userWaveData; - f_cnt_t m_userWaveFrames; + sampleBuffer * m_userWave; oscFuncPtr m_callUpdate; + float volumeFactor( void ); + virtual void FASTCALL updateNoSub( sampleFrame * _ab, const fpab_t _frames, const ch_cnt_t _chnl ) = 0; diff --git a/include/sample_buffer.h b/include/sample_buffer.h index f8f8b9eac..e313a5284 100644 --- a/include/sample_buffer.h +++ b/include/sample_buffer.h @@ -51,6 +51,7 @@ #include "mixer.h" +#include "interpolation.h" #include "types.h" @@ -149,6 +150,24 @@ public: _dst_sr, _buf->eng() ) ); } + static inline float fraction( const float _sample ) + { + return( _sample - static_cast( _sample ) ); + } + + inline sample_t userWaveSample( const float _sample ) + { + m_dataMutex.lock(); + const float frame = fraction( fabs( _sample ) ) * m_frames; + const f_cnt_t f1 = static_cast( frame ); + const f_cnt_t f2 = ( f1 + 1 ) % m_frames; + sample_t waveSample = linearInterpolate( m_data[f1][0], + m_data[f2][0], + fraction( frame ) ); + m_dataMutex.unlock(); + return( waveSample ); + } + public slots: void setAudioFile( const QString & _audio_file ); diff --git a/plugins/organic/organic.cpp b/plugins/organic/organic.cpp index b67fe9ab4..80f92f4aa 100644 --- a/plugins/organic/organic.cpp +++ b/plugins/organic/organic.cpp @@ -298,7 +298,7 @@ void organicInstrument::playNote( notePlayHandle * _n ) { // volume - float volume = m_osc[i].volKnob->value() / 100.0 / m_num_oscillators ; + float volume = 1.0 / m_num_oscillators ; float volume_l = volume * ( m_osc[i].panKnob->value() + PANNING_RIGHT ) / 100.0f; float volume_r = volume * ( PANNING_RIGHT - @@ -334,7 +334,8 @@ void organicInstrument::playNote( notePlayHandle * _n ) oscillator::MIX, freq_l, phase_l, - volume_l, + volume_l, + m_osc[i].volKnob, eng()->getMixer()->sampleRate() ); // create right oscillator oscs_r[i] = oscillator::createOsc( @@ -342,7 +343,8 @@ void organicInstrument::playNote( notePlayHandle * _n ) oscillator::MIX, freq_r, phase_r, - volume_r, + volume_r, + m_osc[i].volKnob, eng()->getMixer()->sampleRate() ); } else { @@ -352,7 +354,8 @@ void organicInstrument::playNote( notePlayHandle * _n ) oscillator::MIX, freq_l, phase_l, - volume_l, + volume_l, + m_osc[i].volKnob, eng()->getMixer()->sampleRate(), oscs_l[i + 1] ); // create right oscillator @@ -361,7 +364,8 @@ void organicInstrument::playNote( notePlayHandle * _n ) oscillator::MIX, freq_r, phase_r, - volume_r, + volume_r, + m_osc[i].volKnob, eng()->getMixer()->sampleRate(), oscs_r[i + 1] ); diff --git a/plugins/triple_oscillator/triple_oscillator.cpp b/plugins/triple_oscillator/triple_oscillator.cpp index 3580d5ad2..856fe7c3c 100644 --- a/plugins/triple_oscillator/triple_oscillator.cpp +++ b/plugins/triple_oscillator/triple_oscillator.cpp @@ -633,9 +633,6 @@ void tripleOscillator::playNote( notePlayHandle * _n ) vol_fac_r = 1.0f; } - vol_fac_l *= m_osc[i].volKnob->value() / 100.0f; - vol_fac_r *= m_osc[i].volKnob->value() / 100.0f; - // the third oscs needs no sub-oscs... if( i == 2 ) { @@ -646,7 +643,8 @@ void tripleOscillator::playNote( notePlayHandle * _n ) static_cast( m_osc[i].phaseOffsetKnob->value() + m_osc[i].stereoPhaseDetuningKnob->value() ), - vol_fac_l, + vol_fac_l, + m_osc[i].volKnob, eng()->getMixer()->sampleRate() ); oscs_r[i] = oscillator::createOsc( m_osc[i].waveShape, @@ -654,7 +652,8 @@ void tripleOscillator::playNote( notePlayHandle * _n ) freq*osc_detuning_r, static_cast( m_osc[i].phaseOffsetKnob->value() ), - vol_fac_r, + vol_fac_r, + m_osc[i].volKnob, eng()->getMixer()->sampleRate() ); } else @@ -666,7 +665,8 @@ void tripleOscillator::playNote( notePlayHandle * _n ) static_cast( m_osc[i].phaseOffsetKnob->value() + m_osc[i].stereoPhaseDetuningKnob->value() ), - vol_fac_l, + vol_fac_l, + m_osc[i].volKnob, eng()->getMixer()->sampleRate(), oscs_l[i + 1] ); oscs_r[i] = oscillator::createOsc( @@ -675,7 +675,8 @@ void tripleOscillator::playNote( notePlayHandle * _n ) freq*osc_detuning_r, static_cast( m_osc[i].phaseOffsetKnob->value() ), - vol_fac_r, + vol_fac_r, + m_osc[i].volKnob, eng()->getMixer()->sampleRate(), oscs_r[i + 1] ); } @@ -683,11 +684,9 @@ void tripleOscillator::playNote( notePlayHandle * _n ) if( m_osc[i].waveShape == oscillator::USER_DEF_WAVE ) { oscs_l[i]->setUserWave( - m_osc[i].m_sampleBuffer->data(), - m_osc[i].m_sampleBuffer->frames() ); + m_osc[i].m_sampleBuffer ); oscs_r[i]->setUserWave( - m_osc[i].m_sampleBuffer->data(), - m_osc[i].m_sampleBuffer->frames() ); + m_osc[i].m_sampleBuffer ); } } diff --git a/src/core/arp_and_chords_tab_widget.cpp b/src/core/arp_and_chords_tab_widget.cpp index 1d63ac960..2958ebf22 100644 --- a/src/core/arp_and_chords_tab_widget.cpp +++ b/src/core/arp_and_chords_tab_widget.cpp @@ -516,7 +516,7 @@ void arpAndChordsTabWidget::processNote( notePlayHandle * _n ) cnphv.first()->totalFramesPlayed() : _n->totalFramesPlayed() ) + arp_frames - 1; // used for loop - fpab_t frames_processed = 0; + f_cnt_t frames_processed = 0; while( frames_processed < eng()->getMixer()->framesPerAudioBuffer() ) { diff --git a/src/core/envelope_and_lfo_widget.cpp b/src/core/envelope_and_lfo_widget.cpp index 213e8f6ff..0083d4ff8 100644 --- a/src/core/envelope_and_lfo_widget.cpp +++ b/src/core/envelope_and_lfo_widget.cpp @@ -858,9 +858,8 @@ void envelopeAndLFOWidget::paintEvent( QPaintEvent * ) val = oscillator::squareSample( phase ); break; case USER: - val = oscillator::userWaveSample( phase, - m_userWave.data(), - m_userWave.frames() ); + val = m_userWave.userWaveSample( + phase ); } if( static_cast( cur_sample ) <= m_lfoAttackFrames ) @@ -1058,9 +1057,7 @@ void envelopeAndLFOWidget::updateSampleVars( void ) break; case USER: m_lfoShapeData[frame] = - oscillator::userWaveSample( phase, - m_userWave.data(), - m_userWave.frames() ); + m_userWave.userWaveSample( phase ); break; case SIN: default: diff --git a/src/lib/oscillator.cpp b/src/lib/oscillator.cpp index 786de0732..b17e23cca 100644 --- a/src/lib/oscillator.cpp +++ b/src/lib/oscillator.cpp @@ -31,16 +31,16 @@ oscillator::oscillator( const modulationAlgos _modulation_algo, const float _freq, const Sint16 _phase_offset, - const float _volume_factor, + const float _volume_factor, const volumeKnob * _volume_knob, const sample_rate_t _sample_rate, oscillator * _sub_osc ) : m_freq( _freq ), m_volumeFactor( _volume_factor ), + m_volumeKnob( _volume_knob ), m_phaseOffset( _phase_offset ), m_sampleRate( _sample_rate ), m_subOsc( _sub_osc ), - m_userWaveData( &ZERO_FRAME ), - m_userWaveFrames( 1 ) + m_userWave( NULL ) { if( m_subOsc != NULL ) { @@ -72,6 +72,13 @@ oscillator::oscillator( const modulationAlgos _modulation_algo, +float oscillator::volumeFactor( void ) +{ + return( m_volumeFactor * m_volumeKnob->value() / 100.0f ); +} + + + // if we have no sub-osc, we can't do any modulation... just get our samples #define defineNoSubUpdateFor(x,getSampleFunction) \ void x::updateNoSub( sampleFrame * _ab, const fpab_t _frames, \ @@ -80,7 +87,7 @@ void x::updateNoSub( sampleFrame * _ab, const fpab_t _frames, \ for( fpab_t frame = 0; frame < _frames; ++frame ) \ { \ _ab[frame][_chnl] = getSampleFunction( ++m_sample * \ - m_oscCoeff ) * m_volumeFactor; \ + m_oscCoeff ) * volumeFactor(); \ } \ } @@ -96,13 +103,13 @@ void x::updateFM( sampleFrame * _ab, const fpab_t _frames, \ _ab[frame][_chnl] = getSampleFunction( ++m_sample * \ m_oscCoeff + \ _ab[frame][_chnl] ) * \ - m_volumeFactor; \ + volumeFactor(); \ /* following line is REAL FM */ \ /* float new_freq = powf( 2.0, _ab[frame][_chnl] ); \ _ab[frame][_chnl] = getSampleFunction( ++m_sample*((m_freq * \ - new_freq )/mixer::inst()->sampleRate() )) * m_volumeFactor; \ + new_freq )/mixer::inst()->sampleRate() )) * volumeFactor(); \ _ab[frame][_chnl] = getSampleFunction( ++m_sample*(m_oscCoeff *\ - _ab[frame][_chnl] )) * m_volumeFactor;*/ \ + _ab[frame][_chnl] )) * volumeFactor();*/ \ } \ } @@ -116,7 +123,7 @@ void x::updateAM( sampleFrame * _ab, const fpab_t _frames, \ for( fpab_t frame = 0; frame < _frames; ++frame ) \ { \ _ab[frame][_chnl] *= getSampleFunction( ++m_sample * \ - m_oscCoeff ) * m_volumeFactor; \ + m_oscCoeff ) * volumeFactor(); \ } \ } @@ -130,7 +137,7 @@ void x::updateMix( sampleFrame * _ab, const fpab_t _frames, \ for( fpab_t frame = 0; frame < _frames; ++frame ) \ { \ _ab[frame][_chnl] += getSampleFunction( ++m_sample * \ - m_oscCoeff ) * m_volumeFactor; \ + m_oscCoeff ) * volumeFactor(); \ } \ } @@ -148,7 +155,7 @@ void x::updateSync( sampleFrame * _ab, const fpab_t _frames, \ sync(); \ } \ _ab[frame][_chnl] = getSampleFunction( ++m_sample * \ - m_oscCoeff ) * m_volumeFactor; \ + m_oscCoeff ) * volumeFactor(); \ } \ } @@ -161,10 +168,12 @@ public: \ inline x( const modulationAlgos modulation_algo, \ const float _freq, \ const Sint16 _phase_offset, const float _volume_factor, \ + const volumeKnob * _volume_knob, \ const sample_rate_t _sample_rate, \ oscillator * _sub_osc ) : \ oscillator( modulation_algo, _freq, _phase_offset, \ - _volume_factor, _sample_rate, _sub_osc ) \ + _volume_factor, _volume_knob, \ + _sample_rate, _sub_osc ) \ { \ } \ virtual ~x() \ @@ -208,6 +217,7 @@ oscillator * oscillator::createOsc( const waveShapes _wave_shape, const float _freq, const Sint16 _phase_offset, const float _volume_factor, + const volumeKnob * _volume_knob, const sample_rate_t _sample_rate, oscillator * _sub_osc ) { @@ -216,38 +226,47 @@ oscillator * oscillator::createOsc( const waveShapes _wave_shape, case SIN_WAVE: return( new sinWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case TRIANGLE_WAVE: return( new triangleWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case SAW_WAVE: return( new sawWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case SQUARE_WAVE: return( new squareWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case MOOG_SAW_WAVE: return( new moogSawWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case EXP_WAVE: return( new expWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case WHITE_NOISE_WAVE: return( new noiseWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); case USER_DEF_WAVE: return( new userWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); default: return( new sinWaveOsc( _modulation_algo, _freq, _phase_offset, _volume_factor, + _volume_knob, _sample_rate, _sub_osc ) ); }