From d66a8fac6027d118c645d094758cad635e367327 Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Fri, 5 Jun 2020 20:05:21 +0100 Subject: [PATCH 01/14] Expand $TARGET in jamulus.desktop. --- .gitignore | 1 + Jamulus.pro | 9 ++++----- distributions/{jamulus.desktop => jamulus.desktop.in} | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename distributions/{jamulus.desktop => jamulus.desktop.in} (95%) diff --git a/.gitignore b/.gitignore index 1b84bcee..7f034c10 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ distributions/opus* distributions/jack2 distributions/claudio_piano.sf2 distributions/fluidsynth* +distributions/jamulus.desktop diff --git a/Jamulus.pro b/Jamulus.pro index d626af4e..42c2777f 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -301,18 +301,16 @@ win32 { } BINDIR = $$absolute_path($$BINDIR, $$PREFIX) target.path = $$BINDIR - INSTALLS += target isEmpty(APPSDIR) { APPSDIR = share/applications } APPSDIR = $$absolute_path($$APPSDIR, $$PREFIX) desktop.path = $$APPSDIR + QMAKE_SUBSTITUTES += distributions/jamulus.desktop.in desktop.files = distributions/jamulus.desktop - # the .desktop file assumes the binary is called jamulus - contains(CONFIG, "noupcasename") { - INSTALLS += desktop - } + + INSTALLS += target desktop } RCC_DIR = src/res @@ -617,6 +615,7 @@ DISTFILES += ChangeLog \ COPYING \ INSTALL.md \ README.md \ + distributions/jamulus.desktop.in \ src/res/translation/translation_de_DE.qm \ src/res/translation/translation_fr_FR.qm \ src/res/translation/translation_pt_PT.qm \ diff --git a/distributions/jamulus.desktop b/distributions/jamulus.desktop.in similarity index 95% rename from distributions/jamulus.desktop rename to distributions/jamulus.desktop.in index e12447c6..2acd1025 100644 --- a/distributions/jamulus.desktop +++ b/distributions/jamulus.desktop.in @@ -4,7 +4,7 @@ Comment=Jam Session Comment[fr]=Séance de bœuf GenericName=Internet Jam Session Software GenericName[fr]=Logiciel de séance de bœuf sur Internet -Exec=jamulus +Exec=$$TARGET Icon=jamulus Terminal=false Type=Application From 69e3286057a94574ba7b61e7f93ec812251775d2 Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Fri, 5 Jun 2020 20:11:13 +0100 Subject: [PATCH 02/14] Install the 512x512 icon, used by the .desktop file. --- Jamulus.pro | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Jamulus.pro b/Jamulus.pro index 42c2777f..7d540fea 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -310,7 +310,14 @@ win32 { QMAKE_SUBSTITUTES += distributions/jamulus.desktop.in desktop.files = distributions/jamulus.desktop - INSTALLS += target desktop + isEmpty(ICONSDIR) { + ICONSDIR = share/icons/hicolor/512x512/apps + } + ICONSDIR = $$absolute_path($$ICONSDIR, $$PREFIX) + icons.path = $$ICONSDIR + icons.files = distributions/jamulus.png + + INSTALLS += target desktop icons } RCC_DIR = src/res @@ -616,6 +623,7 @@ DISTFILES += ChangeLog \ INSTALL.md \ README.md \ distributions/jamulus.desktop.in \ + distributions/jamulus.png \ src/res/translation/translation_de_DE.qm \ src/res/translation/translation_fr_FR.qm \ src/res/translation/translation_pt_PT.qm \ From 2827b7689c0d0236982f788757762539a6def714 Mon Sep 17 00:00:00 2001 From: Martyna27 Date: Fri, 5 Jun 2020 22:02:16 +0200 Subject: [PATCH 03/14] Initial polish translation --- Jamulus.pro | 1 + src/res/translation/translation_pl_PL.qm | Bin 0 -> 209 bytes src/res/translation/translation_pl_PL.ts | 2444 ++++++++++++++++++++++ src/resources.qrc | 4 + 4 files changed, 2449 insertions(+) create mode 100755 src/res/translation/translation_pl_PL.qm create mode 100644 src/res/translation/translation_pl_PL.ts diff --git a/Jamulus.pro b/Jamulus.pro index d626af4e..c0e973e2 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -19,6 +19,7 @@ TRANSLATIONS = src/res/translation/translation_de_DE.ts \ src/res/translation/translation_pt_PT.ts \ src/res/translation/translation_es_ES.ts \ src/res/translation/translation_nl_NL.ts \ + src/res/translation/translation_pl_PL.ts\ src/res/translation/translation_it_IT.ts INCLUDEPATH += src diff --git a/src/res/translation/translation_pl_PL.qm b/src/res/translation/translation_pl_PL.qm new file mode 100755 index 0000000000000000000000000000000000000000..384db547550e5992c79c4c3aae075714333985c4 GIT binary patch literal 209 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZf + + + + CAboutDlg + + + The + + + + + software enables musicians to perform real-time jam sessions over the internet. + + + + + There is a + + + + + server which collects the audio data from each + + + + + client, mixes the audio data and sends the mix back to each client. + + + + + uses the following libraries, resources or code snippets: + + + + + Qt cross-platform application framework + + + + + Audio reverberation code by Perry R. Cook and Gary P. Scavone + + + + + Some pixmaps are from the + + + + + Country flag icons from Mark James + + + + + For details on the contributions check out the + + + + + Github Contributors list + + + + + Spanish + + + + + French + + + + + Portuguese + + + + + Dutch + + + + + Italian + + + + + German + + + + + About + + + + + , Version + + + + + Internet Jam Session Software + + + + + Under the GNU General Public License (GPL) + + + + + CAboutDlgBase + + + About + + + + + TextLabelVersion + + + + + Copyright (C) 2005-2020 Volker Fischer and others + + + + + A&bout + + + + + &Libraries + + + + + &Contributors + + + + + &Translation + + + + + &OK + + + + + CAnalyzerConsole + + + Analyzer Console + + + + + Error Rate of Each Buffer Size + + + + + CAudioMixerBoard + + + Server + + + + + T R Y I N G T O C O N N E C T + + + + + Personal Mix at the Server: + + + + + CChannelFader + + + + Pan + + + + + + + Mute + + + + + + + Solo + + + + + Channel Level + + + + + Displays the pre-fader audio level of this channel. All connected clients at the server will be assigned an audio level, the same value for each client. + + + + + Input level of the current audio channel at the server + + + + + Mixer Fader + + + + + Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix. + + + + + Local mix level setting of the current audio channel at the server + + + + + Status Indicator + + + + + Shows a status indication about the client which is assigned to this channel. Supported indicators are: + + + + + Speaker with cancellation stroke: Indicates that the other client has muted you. + + + + + Status indicator label + + + + + Panning + + + + + Sets the panning position from Left to Right of the channel. Works only in stereo or preferably mono in/stereo out mode. + + + + + Local panning position of the current audio channel at the server + + + + + With the Mute checkbox, the audio channel can be muted. + + + + + Mute button + + + + + With the Solo checkbox, the audio channel can be set to solo which means that all other channels except of the current channel are muted. It is possible to set more than one channel to solo. + + + + + Solo button + + + + + Fader Tag + + + + + The fader tag identifies the connected client. The tag name, the picture of your instrument and a flag of your country can be set in the main window. + + + + + Mixer channel instrument picture + + + + + Mixer channel label (fader tag) + + + + + Mixer channel country flag + + + + + PAN + + + + + MUTE + + + + + SOLO + + + + + Alias/Name + + + + + Instrument + + + + + Location + + + + + + + Skill Level + + + + + Beginner + + + + + Intermediate + + + + + Expert + + + + + Musician Profile + + + + + CChatDlg + + + Chat Window + + + + + The chat window shows a history of all chat messages. + + + + + Chat history + + + + + Input Message Text + + + + + Enter the chat message text in the edit box and press enter to send the message to the server which distributes the message to all connected clients. Your message will then show up in the chat window. + + + + + New chat text edit box + + + + + CChatDlgBase + + + Chat + + + + + Cl&ear + + + + + &Close + + + + + CClientDlg + + + Input Level Meter + + + + + The input level indicators show the input level of the two stereo channels of the current selected audio input. + + + + + Make sure not to clip the input signal to avoid distortions of the audio signal. + + + + + If the + + + + + software is connected and you play your instrument/sing in the microphone, the LED level meter should flicker. If this is not the case, you have probably selected the wrong input channel (e.g. line in instead of the microphone input) or set the input gain too low in the (Windows) audio mixer. + + + + + For a proper usage of the + + + + + software, you should not hear your singing/instrument in the loudspeaker or your headphone when the + + + + + software is not connected. This can be achieved by muting your input audio channel in the Playback mixer (not the Recording mixer!). + + + + + Input level meter + + + + + Simulates an analog LED level meter. + + + + + Connect/Disconnect Button + + + + + Connect and disconnect toggle button + + + + + Clicking on this button changes the caption of the button from Connect to Disconnect, i.e., it implements a toggle functionality for connecting and disconnecting the + + + + + + software. + + + + + Local Audio Input Fader + + + + + With the audio fader, the relative levels of the left and right local audio channels can be changed. For a mono signal it acts like a panning between the two channels. If, e.g., a microphone is connected to the right input channel and an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader in a direction where the label above the fader shows + + + + + + L + + + + + , where + + + + + is the current attenuation indicator. + + + + + Local audio input fader (left/right) + + + + + Reverberation Level + + + + + A reverberation effect can be applied to one local mono audio channel or to both channels in stereo mode. The mono channel selection and the reverberation level can be modified. If, e.g., the microphone signal is fed into the right audio channel of the sound card and a reverberation effect shall be applied, set the channel selector to right and move the fader upwards until the desired reverberation level is reached. + + + + + Reverberation effect level setting + + + + + Reverberation Channel Selection + + + + + With these radio buttons the audio input channel on which the reverberation effect is applied can be chosen. Either the left or right input channel can be selected. + + + + + Left channel selection for reverberation + + + + + Right channel selection for reverberation + + + + + Delay Status LED + + + + + The delay status LED indicator shows the current audio delay status. If the light is green, the delay is perfect for a jam session. If the light is yellow, a session is still possible but it may be harder to play. If the light is red, the delay is too large for jamming. + + + + + If this LED indicator turns red, you will not have much fun using the + + + + + Delay status LED indicator + + + + + Buffers Status LED + + + + + The buffers status LED indicator shows the current audio/streaming status. If the light is green, there are no buffer overruns/underruns and the audio stream is not interrupted. If the light is red, the audio stream is interrupted caused by one of the following problems: + + + + + The network jitter buffer is not large enough for the current network/audio interface jitter. + + + + + Push this button to connect to a server. A dialog where you can select a server will open. If you are connected, pressing this button will end the session. + + + + + The reverberation effect requires significant CPU so it should only be used on fast PCs. If the reverberation level fader is set to minimum (which is the default setting), the reverberation effect is switched off and does not cause any additional CPU usage. + + + + + The sound card buffer delay (buffer size) is set to too small a value. + + + + + The upload or download stream rate is too high for the current available internet bandwidth. + + + + + The CPU of the client or server is at 100%. + + + + + Buffers status LED indicator + + + + + + C&onnect + + + + + &View + + + + + &Connection Setup... + + + + + My &Profile... + + + + + C&hat... + + + + + &Settings... + + + + + &Analyzer Console... + + + + + E&xit + + + + + None + + + + + Center + + + + + R + + + + + Central Server + + + + + user + + + + + users + + + + + D&isconnect + + + + + CClientDlgBase + + + Delay + + + + + Buffers + + + + + Input + + + + + L + + + + + R + + + + + Settings + + + + + Chat + + + + + Mute Myself + + + + + C&onnect + + + + + Pan + + + + + Center + + + + + Reverb + + + + + Left + + + + + Right + + + + + CClientSettingsDlg + + + Jitter Buffer Size + + + + + The jitter buffer compensates for network and sound card timing jitters. The size of this jitter buffer has therefore influence on the quality of the audio stream (how many dropouts occur) and the overall delay (the longer the buffer, the higher the delay). + + + + + The jitter buffer setting is therefore a trade-off between audio quality and overall delay. + + + + + An auto setting of the jitter buffer size setting is available. If the check Auto is enabled, the jitter buffers of the local client and the remote server are set automatically based on measurements of the network and sound card timing jitter. If the Auto check is enabled, the jitter buffer size faders are disabled (they cannot be moved with the mouse). + + + + + Local jitter buffer slider control + + + + + Server jitter buffer slider control + + + + + Auto jitter buffer switch + + + + + Jitter buffer status LED indicator + + + + + Sound Card Device + + + + + The ASIO driver (sound card) can be selected using + + + + + under the Windows operating system. Under MacOS/Linux, no sound card selection is possible. If the selected ASIO driver is not valid an error message is shown and the previous valid driver is selected. + + + + + If the driver is selected during an active connection, the connection is stopped, the driver is changed and the connection is started again automatically. + + + + + Sound card device selector combo box + + + + + If you are using the kX ASIO driver, make sure to connect the ASIO inputs in the kX DSP settings panel. + + + + + Sound Card Channel Mapping + + + + + For each + + + + + input/output channel (Left and Right channel) a different actual sound card channel can be selected. + + + + + Left input channel selection combo box + + + + + Right input channel selection combo box + + + + + Left output channel selection combo box + + + + + Right output channel selection combo box + + + + + Enable Small Network Buffers + + + + + If enabled, the support for very small network audio packets is activated. Very small network packets are only actually used if the sound card buffer delay is smaller than + + + + + Enable small network buffers check box + + + + + Sound Card Buffer Delay + + + + + The buffer delay setting is a fundamental setting of the + + + + + software. This setting has influence on many connection properties. + + + + + Three buffer sizes are supported + + + + + 256 samples: This setting should only be used if only a very slow computer or a slow internet connection is available. + + + + + software. In this case the buffer delay setting is disabled. To change the actual buffer delay, this setting has to be changed in the sound card driver. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. + + + + + If no buffer size is selected and all settings are disabled, an unsupported buffer size is used by the driver. The + + + + + software will still work with this setting but with restricted performance. + + + + + The buffer setting is therefore a trade-off between audio quality and overall delay. + + + + + If the buffer delay settings are disabled, it is prohibited by the audio driver to modify this setting from within the + + + + + software. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. + + + + + 128 samples setting radio button + + + + + 256 samples setting radio button + + + + + ASIO setup push button + + + + + Fancy Skin + + + + + If enabled, a fancy skin will be applied to the main window. + + + + + Fancy skin check box + + + + + Display Channel Levels + + + + + If enabled, each client channel will display a pre-fader level bar. + + + + + Display channel levels check box + + + + + Audio Channels + + + + + Enabling the stereo streaming mode will increase the stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. + + + + + Audio channels combo box + + + + + Audio Quality + + + + + Select the desired audio quality. A low, normal or high audio quality can be selected. The higher the audio quality, the higher the audio stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. + + + + + Audio quality combo box + + + + + New Client Level + + + + + The new client level setting defines the fader level of a new connected client in percent. I.e. if a new client connects to the current server, it will get the specified initial fader level if no other fader level of a previous connection of that client was already stored. + + + + + New client level edit box + + + + + Central server address line edit + + + + + Current Connection Status Parameter + + + + + The jitter buffer size can be manually chosen for the local client and the remote server. For the local jitter buffer, dropouts in the audio stream are indicated by the light below the jitter buffer size faders. If the light turns to red, a buffer overrun/underrun took place and the audio stream is interrupted. + + + + + If the auto setting of the jitter buffer is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the auto setting functionality and to lower the jitter buffer size manually by using the sliders until your personal acceptable limit of the amount of dropouts is reached. The LED indicator will visualize the audio dropouts of the local jitter buffer with a red light. + + + + + If the ASIO4ALL driver is used, please note that this driver usually introduces approx. 10-30 ms of additional audio delay. Using a sound card with a native ASIO driver is therefore recommended. + + + + + If the selected sound card device offers more than one input or output channel, the Input Channel Mapping and Output Channel Mapping settings are visible. + + + + + samples. The smaller the network buffers, the lower the audio latency. But at the same time the network load increases and the probability of audio dropouts also increases. + + + + + 64 samples: This is the preferred setting since it provides the lowest latency but does not work with all sound cards. + + + + + 128 samples: This setting should work for most available sound cards. + + + + + Some sound card drivers do not allow the buffer delay to be changed from within the + + + + + The actual buffer delay has influence on the connection status, the current upload rate and the overall delay. The lower the buffer size, the higher the probability of a red light in the status indicator (drop outs) and the higher the upload rate and the lower the overall delay. + + + + + 64 samples setting radio button + + + + + Select the number of audio channels to be used. There are three modes available. The mono and stereo modes use one and two audio channels respectively. In mono-in/stereo-out mode the audio signal which is sent to the server is mono but the return signal is stereo. This is useful if the sound card has the instrument on one input channel and the microphone on the other channel. In that case the two input signals can be mixed to one mono channel but the server mix can be heard in stereo. + + + + + In stereo streaming mode, no audio channel selection for the reverberation effect will be available on the main window since the effect is applied on both channels in this case. + + + + + Custom Central Server Address + + + + + The custom central server address is the IP address or URL of the central server at which the server list of the connection dialog is managed. This address is only used if the custom server list is selected in the connection dialog. + + + + + The ping time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network. This delay should be as low as 20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to the server is too large or your internet connection is not sufficient. + + + + + The overall delay is calculated from the current ping time and the delay which is introduced by the current buffer settings. + + + + + The upstream rate depends on the current audio packet size and the audio compression setting. Make sure that the upstream rate is not higher than the available rate (check the upstream capabilities of your internet connection by, e.g., using speedtest.net). + + + + + If this LED indicator turns red, you will not have much fun using the + + + + + software. + + + + + ASIO Setup + + + + + Mono + + + + + Mono-in/Stereo-out + + + + + Stereo + + + + + Low + + + + + Normal + + + + + High + + + + + Custom + + + + + All Genres + + + + + Genre Rock + + + + + Genre Jazz + + + + + Genre Classical/Folk/Choir + + + + + Default + + + + + preferred + + + + + + Size: + + + + + Buffer Delay + + + + + Buffer Delay: + + + + + The selected audio device could not be used because of the following error: + + + + + The previous driver will be selected. + + + + + Ok + + + + + CClientSettingsDlgBase + + + Settings + + + + + Soundcard + + + + + Device + + + + + Input Channel Mapping + + + + + + L + + + + + + R + + + + + Output Channel Mapping + + + + + Enable Small Network Buffers + + + + + Buffer Delay + + + + + (preferred) + + + + + (default) + + + + + (safe) + + + + + Driver Setup + + + + + Jitter Buffer + + + + + Auto + + + + + Local + + + + + Server + + + + + + Size + + + + + Misc + + + + + Audio Channels + + + + + Audio Quality + + + + + New Client Level + + + + + % + + + + + Fancy Skin + + + + + Display Channel Levels + + + + + Custom Central Server Address: + + + + + Audio Stream Rate + + + + + + + val + + + + + Ping Time + + + + + Overall Delay + + + + + CConnectDlg + + + Server List + + + + + The server list shows a list of available servers which are registered at the central server. Select a server from the list and press the connect button to connect to this server. Alternatively, double click a server from the list to connect to it. If a server is occupied, a list of the connected musicians is available by expanding the list item. Permanent servers are shown in bold font. + + + + + Note that it may take some time to retrieve the server list from the central server. If no valid central server address is specified in the settings, no server list will be available. + + + + + Server list view + + + + + Server Address + + + + + The IP address or URL of the server running the + + + + + server software must be set here. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: + + + + + . A list of the most recent used server IP addresses or URLs is available for selection. + + + + + Server address edit box + + + + + Holds the current server IP address or URL. It also stores old URLs in the combo box list. + + + + + Server List Selection + + + + + Selects the server list to be shown. + + + + + Server list selection combo box + + + + + Filter + + + + + The server list is filtered by the given text. Note that the filter is case insensitive. + + + + + Filter edit box + + + + + Show All Musicians + + + + + If you check this check box, the musicians of all servers are shown. If you uncheck the check box, all list view items are collapsed. + + + + + Show all musicians check box + + + + + CConnectDlgBase + + + Connection Setup + + + + + List + + + + + Filter + + + + + Show All Musicians + + + + + Server Name + + + + + Ping Time + + + + + Musicians + + + + + Location + + + + + Server Name/Address + + + + + C&ancel + + + + + &Connect + + + + + CHelpMenu + + + &Help + &Pomoc + + + + + Getting &Started... + + + + + Software &Manual... + + + + + What's &This + + + + + &About... + + + + + CLicenceDlg + + + I &agree to the above licence terms + + + + + Accept + + + + + Decline + + + + + By connecting to this server and agreeing to this notice, you agree to the following: + + + + + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see + + + + + You are free to: + + + + + Share + + + + + copy and redistribute the material in any medium or format + + + + + Adapt + + + + + remix, transform, and build upon the material + + + + + The licensor cannot revoke these freedoms as long as you follow the license terms. + + + + + Under the following terms: + + + + + Attribution + + + + + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. + + + + + NonCommercial + + + + + You may not use the material for commercial purposes. + + + + + ShareAlike + + + + + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. + + + + + No additional restrictions + + + + + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. + + + + + CMusProfDlg + + + + Musician Profile + + + + + Alias/Name + + + + + Instrument + + + + + Country + Kraj + + + + City + + + + + Skill + + + + + &Close + + + + + + + None + + + + + Beginner + + + + + Intermediate + + + + + Expert + + + + + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living in. The city you live in and the skill level playing your instrument may also be added. + + + + + What you set here will appear at your fader on the mixer board when you are connected to a + + + + + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + + + + + Alias or name edit box + + + + + Instrument picture button + + + + + Country flag button + + + + + City edit box + + + + + Skill level combo box + + + + + Drum Set + + + + + Djembe + + + + + Electric Guitar + + + + + Acoustic Guitar + + + + + Bass Guitar + + + + + Keyboard + + + + + Synthesizer + + + + + Grand Piano + + + + + Accordion + + + + + Vocal + + + + + Microphone + + + + + Harmonica + + + + + Trumpet + + + + + Trombone + + + + + French Horn + + + + + Tuba + + + + + Saxophone + + + + + Clarinet + + + + + Flute + + + + + Violin + + + + + Cello + + + + + Double Bass + + + + + Recorder + + + + + Streamer + + + + + Listener + + + + + Guitar+Vocal + + + + + Keyboard+Vocal + + + + + Bodhran + + + + + Bassoon + + + + + Oboe + + + + + Harp + + + + + Viola + + + + + Congas + + + + + Bongo + + + + + Vocal Bass + + + + + Vocal Tenor + + + + + Vocal Alto + + + + + Vocal Soprano + + + + + Banjo + + + + + Mandolin + + + + + CServerDlg + + + Client List + + + + + The client list shows all clients which are currently connected to this server. Some information about the clients like the IP address and name are given for each connected client. + + + + + Connected clients list view + + + + + Start Minimized on Operating System Start + + + + + If the start minimized on operating system start check box is checked, the + + + + + server will be started when the operating system starts up and is automatically minimized to a system task bar icon. + + + + + Show Creative Commons Licence Dialog + + + + + If enabled, a Creative Commons BY-NC-SA 4.0 Licence dialog is shown each time a new user connects the server. + + + + + Make My Server Public + + + + + If the Make My Server Public check box is checked, this server registers itself at the central server so that all + + + + + Register Server Status + + + + + users can see the server in the connect dialog server list and connect to it. The registration of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. + + + + + If the Make My Server Public check box is checked, this will show whether registration with the central server is successful. If the registration failed, please choose another server list. + + + + + Custom Central Server Address + + + + + The custom central server address is the IP address or URL of the central server at which the server list of the connection dialog is managed. + + + + + Central server address line edit + + + + + Server List Selection + + + + + Selects the server list (i.e. central server address) in which your server will be added. + + + + + Server list selection combo box + + + + + Server Name + + + + + The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. + + + + + Server name line edit + + + + + Location City + + + + + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. + + + + + City where the server is located line edit + + + + + Location country + + + + + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. + + + + + Country where the server is located combo box + + + + + Checkbox to turn on or off server recording + + + + + Enable Recorder + + + + + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. + + + + + Current session directory text box (read-only) + + + + + Current Session Directory + + + + + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. + + + + + Recorder status label + + + + + Recorder Status + + + + + Displays the current status of the recorder. + + + + + Request new recording button + + + + + New Recording + + + + + During a recording session, the button can be used to start a new recording. + + + + + + E&xit + + + + + &Hide + + + + + + + server + + + + + &Open + + + + + server + + + + + Predefined Address + + + + + Recording + + + + + Not recording + + + + + Not enabled + + + + + Server + + + + + &Window + + + + + Unregistered + + + + + Bad address + + + + + Registration requested + + + + + Registration failed + + + + + Check server version + + + + + Registered + + + + + Central Server full + + + + + Unknown value + + + + + CServerDlgBase + + + Client IP:Port + + + + + + Name + + + + + Jitter Buffer Size + + + + + Start Minimized on Windows Start + + + + + Show Creative Commons BY-NC-SA 4.0 Licence Dialog + + + + + Make My Server Public (Register My Server in the Server List) + + + + + + STATUS + + + + + Custom Central Server Address: + + + + + My Server Info + + + + + Location: City + + + + + Location: Country + + + + + Enable jam recorder + + + + + New recording + + + + + Recordings folder + + + + + TextLabelNameVersion + + + + + CSoundBase + + + Invalid device selection. + + + + + The audio driver properties have changed to a state which is incompatible with this software. The selected audio device could not be used because of the following error: + + + + + Please restart the software. + + + + + Close + zamknij + + + + No usable + + + + + audio device (driver) found. + + + + + In the following there is a list of all available drivers with the associated error message: + + + + + Do you want to open the ASIO driver setups? + + + + + could not be started because of audio interface issues. + + + + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + + + + diff --git a/src/resources.qrc b/src/resources.qrc index 15370a8a..a4c04137 100755 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -16,7 +16,11 @@ res/translation/translation_it_IT.qm + + + res/translation/translation_pl_PL.qm + res/CLEDDisabledSmall.png res/CLEDGreenArrow.png From 81d000b773dfd2a510f74b3375332fdc3414a42c Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Fri, 5 Jun 2020 22:43:14 +0200 Subject: [PATCH 04/14] merge fixes --- src/resources.qrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/resources.qrc b/src/resources.qrc index a4c04137..bc735b5b 100755 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -16,11 +16,11 @@ res/translation/translation_it_IT.qm - - + + res/translation/translation_pl_PL.qm - + res/CLEDDisabledSmall.png res/CLEDGreenArrow.png From 67a34bdff77cd410a562d484fe4a2830912c476d Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 5 Jun 2020 21:44:37 +0100 Subject: [PATCH 05/14] Add mute icon --- src/res/homepage/faders.png | Bin 44503 -> 62108 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/res/homepage/faders.png b/src/res/homepage/faders.png index ed04579d0b89cfe8e2716e599a49b5efb3928ea3..7d54fce94d65e775cd77944be3893d771236a173 100644 GIT binary patch literal 62108 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 QYybcN07*qoM6N<$f{M_#G5`Po literal 44503 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ВKZUKPA_aCEm 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 Date: Fri, 5 Jun 2020 22:01:36 +0100 Subject: [PATCH 06/14] Added mute icon description --- src/res/homepage/manual.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/res/homepage/manual.md b/src/res/homepage/manual.md index ac76c0d6..2f33314a 100644 --- a/src/res/homepage/manual.md +++ b/src/res/homepage/manual.md @@ -94,11 +94,18 @@ In the audio mixer frame, a fader is shown for each connected client at the serv The faders allow you to adjust the level of what you hear without affecting what others hear. The VU meter shows the input level at the server - that is, the sound you are sending. -If you have set your Audio Channel to Stereo or Stereo Out in your Settings, you will also see a pan control. -Using the Mute button prevents the indicated channel being heard in your local mix. Be aware that when you mute a musician, they will see a "muted" icon above your fader to indicate that you cannot hear them. Note also that you will continue to see their VU meters moving if sound from the muted musician is reaching the server. Your fader position for them is also unaffected. +If you have set your Audio Channel to Stereo or Stereo Out in your Settings, you will also see a pan control. + +If you see a "mute" icon above a channel, it means that musician cannot hear you. Either they have muted you, soloed one or more channels not including yours, or have set your fader in their mix to zero. + +Using the **Mute button** prevents the indicated channel being heard in your local mix. Be aware that when you mute a musician, they will see a "muted" icon above your fader to indicate that you cannot hear them. Note also that you will continue to see their VU meters moving if sound from the muted musician is reaching the server. Your fader position for them is also unaffected. + +The **Solo button** allows you to hear one or more musicians on their own. Those not soloed will be muted. Note also that those musicians who are not soloed will see a "muted" icon above your fader. + + + -The Solo button allows you to hear one or more musicians on their own. Those not soloed will be muted. Note also that those musicians who are not soloed will see a "muted" icon above your fader. Settings Window From 40cf36eb878b6826420c3197893c39de6f21a9a2 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 10:24:22 +0200 Subject: [PATCH 07/14] small fix --- src/client.cpp | 10 ++-------- src/client.h | 3 --- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index a6dd8e7a..e1b3c419 100755 --- a/src/client.cpp +++ b/src/client.cpp @@ -206,7 +206,7 @@ CClient::CClient ( const quint16 iPortNumber, QObject::connect ( &ConnLessProtocol, SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector ) ), - this, SLOT ( OnCLChannelLevelListReceived ( CHostAddress, CVector ) ) ); + SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector ) ) ); // other QObject::connect ( &Sound, SIGNAL ( ReinitRequest ( int ) ), @@ -673,12 +673,6 @@ void CClient::OnSndCrdReinitRequest ( int iSndCrdResetType ) } } -void CClient::OnCLChannelLevelListReceived ( CHostAddress InetAddr, - CVector vecLevelList ) -{ - emit CLChannelLevelListReceived ( InetAddr, vecLevelList ); -} - void CClient::OnHandledSignal ( int sigNum ) { #ifdef _WIN32 @@ -690,7 +684,7 @@ void CClient::OnHandledSignal ( int sigNum ) { case SIGINT: case SIGTERM: - // This should trigger OnAboutToQuit + // this should trigger OnAboutToQuit QCoreApplication::instance()->exit(); break; diff --git a/src/client.h b/src/client.h index bc6a1da4..1852d77b 100755 --- a/src/client.h +++ b/src/client.h @@ -418,9 +418,6 @@ public slots: void OnSndCrdReinitRequest ( int iSndCrdResetType ); - void OnCLChannelLevelListReceived ( CHostAddress InetAddr, - CVector vecLevelList ); - signals: void ConClientListMesReceived ( CVector vecChanInfo ); void ChatTextReceived ( QString strChatText ); From 09fe7d566cc337425ef2e6af54c5c24204eb1669 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 11:02:31 +0200 Subject: [PATCH 08/14] small updates --- src/audiomixerboard.cpp | 6 +- src/clientdlg.cpp | 2 +- src/res/translation/translation_de_DE.qm | Bin 64161 -> 68172 bytes src/res/translation/translation_de_DE.ts | 123 ++- src/res/translation/translation_es_ES.qm | Bin 96172 -> 94821 bytes src/res/translation/translation_es_ES.ts | 95 +- src/res/translation/translation_fr_FR.qm | Bin 63237 -> 62706 bytes src/res/translation/translation_fr_FR.ts | 91 +- src/res/translation/translation_it_IT.qm | Bin 60528 -> 60039 bytes src/res/translation/translation_it_IT.ts | 91 +- src/res/translation/translation_nl_NL.qm | Bin 55955 -> 55412 bytes src/res/translation/translation_nl_NL.ts | 91 +- src/res/translation/translation_pl_PL.ts | 1276 ++++++++++++---------- src/res/translation/translation_pt_PT.qm | Bin 61101 -> 60616 bytes src/res/translation/translation_pt_PT.ts | 91 +- 15 files changed, 1029 insertions(+), 837 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index d3c30bd4..4e28eef4 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -40,7 +40,7 @@ CChannelFader::CChannelFader ( QWidget* pNW, plbrChannelLevel = new CMultiColorLEDBar ( pLevelsBox ); pFader = new QSlider ( Qt::Vertical, pLevelsBox ); pPan = new QDial ( pLevelsBox ); - pPanLabel = new QLabel ( tr ( "Pan" ) , pLevelsBox ); + pPanLabel = new QLabel ( tr ( "Pan" ), pLevelsBox ); pInfoLabel = new QLabel ( "", pLevelsBox ); pMuteSoloBox = new QWidget ( pFrame ); @@ -674,10 +674,10 @@ inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots() this, pPanValueChanged ); connectFaderSignalsToMixerBoardSlots(); -}; +} template<> -inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots<0>() {}; +inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots<0>() {} void CAudioMixerBoard::SetServerName ( const QString& strNewServerName ) { diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index e99e7c59..2fbefba7 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -142,7 +142,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP, tr ( "Shows the current audio delay status:" ) + "
    " "
  • " "" + tr ( "Green" ) + ": " + tr ( "The delay is perfect for a jam " - "session " ) + "
  • " + "session." ) + "" "
  • " "" + tr ( "Yellow" ) + ": " + tr ( "A session is still possible " "but it may be harder to play." ) + "
  • " "
  • " "" + tr ( "Red" ) + ": " + tr ( "The delay is too large for " diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm index 9d2de8220ee9c1639e95a51cfc16fbff022a9195..f4b6a5fef6255efb604ea05170c9b1c1cf6e18a9 100644 GIT binary patch delta 7145 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 btkW&F|1UhVzcc7$E9ae~ipq`GxAgiK4?f|A diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts index 18a1e4ca..8b611b3b 100644 --- a/src/res/translation/translation_de_DE.ts +++ b/src/res/translation/translation_de_DE.ts @@ -587,42 +587,42 @@ Controls the relative levels of the left and right local audio channels. For a mono signal it acts as a pan between the two channels.For example, if a microphone is connected to the right input channel and an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader in a direction where the label above the fader shows - + Mit diesem Einstellregler kann der relative Pegel vom linken und rechten Eingangskanal verändert werden. Für ein Mono-Signal verhält sich der Regler wie ein Pan-Regler. Wenn, z.B., ein Mikrofon am rechten Kanal angeschlossen ist und das Instrument am linken Eingangskanal ist viel lauter als das Mikrofon, dann kann man den Lautstärkeunterschied mit diesem Regler kompensieren indem man den Regler in eine Richtung verschiebt, so dass über dem Regler Reverb effect - + Halleffektregler Reverb can be applied to one local mono audio channel or to both channels in stereo mode. The mono channel selection and the reverb level can be modified. For example, if a microphone signal is fed in to the right audio channel of the sound card and a reverb effect needs to be applied, set the channel selector to right and move the fader upwards until the desired reverb level is reached. - + Der Halleffekt kann auf einen selektierten Mono-Audiokanal oder auf beide Stereoaudiokanäle angewendet werden. Die Mono-Kanalselektion und die Hallstärke können eingestellt werden. Wenn z.B. ein Mikrofonsignal auf dem rechten Kanal anliegt und ein Halleffekt soll auf das Mikrofonsignal angewendet werden, dann muss die Hallkanalselektion auf rechts eingestellt werden und der Hallregler muss erhöht werden, bis die gewünschte Stärke des Halleffekts erreicht ist. Reverb effect level setting - + Halleffekt Pegelregler Reverb Channel Selection - + Halleffekt Kanalselektion With these radio buttons the audio input channel on which the reverb effect is applied can be chosen. Either the left or right input channel can be selected. - + Mit diesen Knöpfen kann ausgewählt werden, auf welches Eingangssignal der Halleffekt angewendet werden soll. Entweder der rechte oder linke Eingangskanal kann ausgewählt werden. Left channel selection for reverb - + Auswahl linker Kanal für Halleffekt Right channel selection for reverb - + Auswahl rechter Kanal für Halleffekt The @@ -631,17 +631,22 @@ Green + Grün + + + + The delay is perfect for a jam session. Yellow - + Gelb Red - + Rot @@ -651,27 +656,26 @@ Opens a dialog where you can select a server to connect to. If you are connected, pressing this button will end the session. - + Wenn man diesen Knopf drückt, dann wird die Beschriftung des Knopfes von Verbinden zu Trennen geändert, das heißt, dass er eine Umschaltfunktion hat zum Verbinden und Trennen der Software. Shows the current audio delay status: - + Die Status-LED für die Verzögerung zeigt eine Bewertung der Gesamtverzögerung des Audiosignals: - The delay is perfect for a jam session - + Die Verzögerung ist gering genug für das Jammen. A session is still possible but it may be harder to play. - + Man kann noch spielen aber es wird schwieriger Lieder mit hohem Tempo zu spielen. The delay is too large for jamming. - + Die Verzögerung ist zu hoch zum Jammen. @@ -2093,9 +2097,13 @@ Schreibe den Namen oder Alias hier rein so dass die anderen Musikern mit denen du spielst wissen wer du bist. Zusätzlich kannst du dein Instrument auswählen und eine Flagge des Landes auswählen in dem du dich befindest. Deine Stadt und deine Spielstärke des Instruments kannst du ebenso angeben. - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. - Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem Server verbunden bist. Dieses Schild wird auch bei allen anderen Musikern, die mit dem gleichen Server verbunden sind, angezeigt. + Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem Server verbunden bist. Dieses Schild wird auch bei allen anderen Musikern, die mit dem gleichen Server verbunden sind, angezeigt. + + + + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. + @@ -2307,6 +2315,11 @@ Bass Ukulele + + + No Name + + CServerDlg @@ -2437,150 +2450,154 @@ Servername - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - Der Servername identifiziert deinen Server in der Serverliste. Falls kein Name angegeben wurde, dann wird die IP-Adresse stattdessen angezeigt. + Der Servername identifiziert deinen Server in der Serverliste. Falls kein Name angegeben wurde, dann wird die IP-Adresse stattdessen angezeigt. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Servername Eingabefeld - + Location City Standort Stadt - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. Hier kann man die Stadt angeben, in der sich der Server befindet. Falls eine Stadt angegeben wurde, dann wird die in der Serverliste angezeigt. - + City where the server is located line edit Stadt in der sich der Server befindet Eingabefeld - + Location country Standort Land - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. Hier kann man das Land eingeben, in dem sich der Server befindet. Falls ein Land angegeben wurde, dann wird das in der Serverliste angezeigt. - + Country where the server is located combo box Land in dem sich der Server befindet Auswahlbox - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit &Beenden - + &Hide &Ausblenden vom - - - + + + server Server - + &Open Ö&ffne den - + server Server - + Predefined Address Vordefinierte Adresse - + Recording - + Not recording - + Not enabled @@ -2597,12 +2614,12 @@ Standard (Nordamerika) - + Server - + &Window &Fenster diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm index c0529b97293613872db7a4b820f97f6faadbaa5e..379a6b9ab4a97733be51b5de6c3a74df167994df 100644 GIT binary patch delta 4024 zcmY*bdt6QF8h*aD*V=2ZeObG4G=*+%2T7ufaVw2M7eb{Qo5;12A~Vd;&WwgIk=!*L z4aTH$oyl1X?_XLE=z}8%#?@&O!4G5Y8Yz_m0rvjZV zfsiD^5oQdn0K$&bKCQsAWx(a{z^^+5L=-ItziTDXXQCNHGQt1jcfd3r{NoM4dk*{y zI((rI1jiJ>Di}iFDj?JV!DTN{{SOEuGJvulA&eeR1+0PK;|}KfH2p6tV+w@uNx+AE z2rKDkowFe95rFbm2>bg3b__yZJlN=!5KgTCW93lx2>_0}Lb);$I6nYl>3Lw%56}(x z1(-d@jD@9eeC7hw{Dr=i#eic8#%#F=XhvepfkfcJ2#mSM14j49?Z2>3?!hO83V5>| zzBBIuEf3*)feJ8ngrCP|uqom2JD*BaU4nlZQOW8tZrDEH?QI0CEdU1lU_vMz5Xuk~ zPV|*UA?$r4Q5uf$$HYp#ga`*GFa*P(>WLXqr@j^z*xb zrTwt`E7~~RfW7NSQDLv~bMNbPgJn3--x=T?k$tWKXiLYTk-=cyy5nk^FA(Ez#-ii6 z){~eDt3cJMG}^xe)kFkJg7Gl4H?SZMk6tV^f(;mrx@{xC#(jqurXfJF*pAHQ7@GRj z0=4B#cttl;3}?D~baRuD4W6F`*at8lx5r?*Y8GC01<*}rh8zcAmV!m4E(HGeo-GOa zl}=1#X=5#@upKNTunla|Dz-a_*1Ke~J*SLzV0~7x10A9PNn}MEgMrg0Ska+8u)a0y zX7fcbZ7RDT^bUBJ!XD1Z175ylbwLGS;bYjV)e>M`%uM!gNO+ey^~9;bbX!iNCl&jK za~4gc_)CL1%aSob=~Aw7X~hy zG=n}iW^A_Pva{@f)z7#*{XoFdpUZ0{QH$Sm#@}K|OJXH=rY}*IwSqh6JP*vSnJYat z3(#KUY6B00^)KU^5=m5BcABy5HrGtff#O%rv}`F*=+2ogc>+g!ajm_d1HZ3PC=Z8| z|D6=d!WSgoR7ICl&ScSV6t-`vkiarU*AvlT23H@2+f+|5o2iPx8@ouQNs7b}H^9Az zBIRTh@OXkE)vtmm-KN-ba0i&*YQ>SogTbbkD;obK1~#8oG~T84TbwdZ^LEC)Df|@w zQm}y{Z`k`BZ1^@l#_cSSAn;3LBS{Lw_@$YNik@3yI~rNfulbyV1|YVP z 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 Verde + + + The delay is perfect for a jam session. + + Yellow @@ -671,9 +676,8 @@ Muestra el estado actual del retardo de audio: - The delay is perfect for a jam session - El retardo es perfecto para una jam session + El retardo es perfecto para una jam session @@ -2113,9 +2117,13 @@ Escribe tu nombre o alias aquí para que otros músicos con quien quieras tocar te reconozcan. Puedes además añadir una imagen del instrumento que tocas y la bandera del país donde vives. La ciudad donde vives y tu nivel de habilidad con el instrumento también pueden añadirse. - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. - Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor. Esta etiqueta también se mostrará en cada cliente conectado al mismo servidor que tú. Si se deja el nombre vacío, se muestra la dirección IP en su lugar. + Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor. Esta etiqueta también se mostrará en cada cliente conectado al mismo servidor que tú. Si se deja el nombre vacío, se muestra la dirección IP en su lugar. + + + + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. + @@ -2327,6 +2335,11 @@ Bass Ukulele Ukulele Barítono + + + No Name + + CServerDlg @@ -2453,150 +2466,154 @@ Nombre Servidor - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - El nombre del servidor identifica a tu servidor en la lista de conexión de servidores de los clientes. Si no se especifica un nombre, se muestra la dirección IP en su lugar. + El nombre del servidor identifica a tu servidor en la lista de conexión de servidores de los clientes. Si no se especifica un nombre, se muestra la dirección IP en su lugar. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Nombre del servidor - + Location City Ubicación Ciudad - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. Aquí se puede especificar la ciudad en donde se ubica el servidor. Si se introduce una ciudad, se mostrará en la lista de conexión de servidores de los clientes. - + City where the server is located line edit Ciudad en donde se encuentra en servidor - + Location country Ubicación país - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. Aquí se puede especificar el país en donde se ubica el servidor. Si se introduce un país, se mostrará en la lista de conexión de servidores de los clientes. - + Country where the server is located combo box País en donde se encuentra el servidor - + Checkbox to turn on or off server recording Campo para activar/desactivar la grabación desde el servidor - + Enable Recorder Habilitar Grabación - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. Activado cuando la grabación está habilitada. La grabación se ejecutará cuando una sesión esté en marcha, si está habilitada (y correctamente configurada). - + Current session directory text box (read-only) Campo para directorio sesión actual (solo lectura) - + Current Session Directory Directorio Sesión Actual - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. Habilitado durante la grabación y guarda el directorio actual de grabación, Deshabilitado tras la grabación o cuando la grabación no está habilitada. - + Recorder status label Etiqueta estado grabación - + Recorder Status Estado Grabación - + Displays the current status of the recorder. Muestra el estado actual de la grabación. - + Request new recording button Botón Solicitar nueva grabación - + New Recording Nueva Grabación - + During a recording session, the button can be used to start a new recording. Durante una sesión de grabación, el botón puede utilizarse para comenzar una nueva grabación. - - + + E&xit S&alir - + &Hide &Ocultar servidor - - - + + + server - + &Open &Abrir servidor - + server - + Predefined Address Dirección Preestablecida - + Recording Grabando - + Not recording No grabando - + Not enabled No habilitado @@ -2613,12 +2630,12 @@ Por defecto (Norteamérica) - + Server : Servidor - + &Window &Ventana diff --git a/src/res/translation/translation_fr_FR.qm b/src/res/translation/translation_fr_FR.qm index 04215a189f72759e4be59a754a65df53492f4bfd..9674878990486bc62f0a2a6bb0c723e9d3078a3d 100644 GIT binary patch delta 628 zcmXAlT}V@59L68tbIy*QvvUknEOnaJMs%?xoi?jgh$*B77Q-9Eundi~4-F%;c`-`C z$X+Uq5F;h2C}Nvmv1wLX25O{a27Z5(^8+M_B&rv@dM^Hd9)8cyzQnEk;BE!_)Kmxc zk(R3J84Kx+q<7HDLL70+2Jeo=!VGMXY2bpSnpL8I7W=3i(F1(FV5Ox%MzN4xz@VlRgfpfvAh2F2OgsiSehDSZlYqr3 z+{k+bw6xPkp^fHh^rUx^R%xu#`)*N}!Wvr)bWvj@o>Hn4!vor^V$GNbC@B5Md^^_3Q^*`&w=54bf0Xw z)>E!DB{G_bQl(>sRqi~$p6*fQO=lmFIiU39GUW{yl>SXj<`ttd=VgB%PAK!)>>l%2 z75@e>Yj!obe+fvLRYOl-XPdohnC}z7W>B{;JODP@)aamaplgR3Z#&BRhE=m%3A!em p$=D1vX$ykC?(+Y9vk5r&(0?#!6u4ZG2Yfd>+O;nnj-syW*#F{8+MfUb delta 835 zcmXX?YfKbZ7(IJuhgoKMD1{KI;H4Hc4Q$o!`mAU}d8KLzwbcH=xY-?KTA8)XE=pnz ze~8jhBK@L)(hyoTA+3sabz!w2_F;l02BOu7QYmyrpcP|6Nt-tIM*Q*Re2;rh&OJ{i zrMgGbkwi;-Q_^)7Zf=U?uz@Vfuo!H786CCsCfw-6%-`z)&%`{2j*!Mm*}VYuu+?ld zn`T)x>wij>(l&OXi+ZHY_2chJFJ5v0o2I1n?hk<97fL0+v;hZ)C4Z?C;0~$oq6hf+ z6Y1DDp96yp(zk(iz{AIsYE4tS8mwg}9s%FCQJ(c`O4qn`ba*M?T4bHLG6)2ib=r9l zi0q&Y*->)!zPus!H9+1Xzg~78xOh#@`R8q*WwTuHZw6p(mrLmYP!f=L8N$?qJo!V{ zVj!_y_T_E|LQLL2GX~_Gmk;a5f$&dsQVuJv@23I5Q&bj}$p-$Ux~Nk1+K`f3D3rr1 zDH7#a)ptlS%WeW|cg$mJrxI8$=I8|FXv=2cl3QuM-wW*bDJ?PEfbT$gib&T(bxMeh zoTZJnka|T`y|d!4W5x8J&A}e@Qg(FtOWhmnHt8+lU9m5CS$OVCu&>!_0={~C!5g)} zomc2W^iDQ3M@ed%db>X6vvG((Zc&e#$wIjlQS;TVjM&xFXMo|a$Ysw->2HYb$Q5pu z9EiRAL`c5+(L7$Bq)+W>?B_jn+MbpY{wr>=?Q5VmGj91GUjQ%E#;r&aLHy{Vh&`YE z_L#C`jO4o;<8L%}0DHfTznSzaP*bl1Q*Q>(#dHR(mYvu_=^>r~4jo=-FyI$mIdmEc zrc>b$PMYa{*D22Lh&6{B0eD0iqBr0}k8y1Cz+2#*SpE2*osaDm8CZ z-1Z1I$KGe?5e$b-WbE!< x-0(erX7b&7wPs{-zYr)Y=5DXIN;6Hao7}AM?K8M;n10ReCCiz_pu4Zh`9E)v6d(Wq diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index b782bb76..2ff66b58 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -645,6 +645,11 @@ Green + + + The delay is perfect for a jam session. + + Yellow @@ -670,11 +675,6 @@ Shows the current audio delay status: - - - The delay is perfect for a jam session - - A session is still possible but it may be harder to play. @@ -2114,7 +2114,7 @@ - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. @@ -2327,6 +2327,11 @@ Bass Ukulele + + + No Name + + CServerDlg @@ -2453,150 +2458,154 @@ Nom du serveur - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - Le nom du serveur identifie votre serveur dans la liste des serveurs du dialogue de connexion chez les clients. Si aucun nom n'est donné, l'adresse IP est affichée à la place. + Le nom du serveur identifie votre serveur dans la liste des serveurs du dialogue de connexion chez les clients. Si aucun nom n'est donné, l'adresse IP est affichée à la place. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Ligne d'édition pour le nom du serveur - + Location City Ville de localisation - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. La ville dans laquelle ce serveur est situé peut être définie ici. Si un nom de ville est saisi, il sera affiché dans la liste des serveurs du dialogue de connexion chez les clients. - + City where the server is located line edit Ligne d'édition pour la ville où est situé le serveur - + Location country Pays de localisation - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. Le pays dans lequel ce serveur est situé peut être défini ici. Si un pays est saisi, il sera affiché dans la liste des serveurs du dialogue de connexion chez les clients. - + Country where the server is located combo box Choix déroulant du pays où le serveur est situé - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit &Quitter - + &Hide Cac&hé - - - + + + server serveur - + &Open &Ouvrir - + server serveur - + Predefined Address Adresse prédéfinie - + Recording - + Not recording - + Not enabled @@ -2613,12 +2622,12 @@ Défaut (Amérique du nord) - + Server serveur - + &Window &Fenêtre diff --git a/src/res/translation/translation_it_IT.qm b/src/res/translation/translation_it_IT.qm index 58b2a56cdd1885a6c9e4bb8ecf5aa05e92adf0d8..4c02decab9f29f76da9a7a2d9559597737b89028 100644 GIT binary patch delta 635 zcmXAlZAepb6viL_cXxAlyH{Ba!e1%ZSY$>D&rJ>S<%$Gn)f-np! zJsK5Gq70OE)57Wo<8zy|$5#70P8+Hl9fRERs$9pjB4NTs?G}OJNQr z^>d+nCl7D|eI{Uk9JlRJ0WdkkrFj~G^1Iwws~OlTahD#S0LtRH8;;w+^ChmmBpUc& zqacMrXqi)FH7x@@vlOow_HQ*SW~a9U5oL<`p>d!nL9u8)4@@yK@}{)DDSn?A0VqcK zn5<5q&4;)ANd;WLI^wH+6K>yIbha5KgYjAH6e^UTtF2NffWn3vR8}cyosUZcgJH zB9nC;*F+^30|jbL;=xMb)o*&O&St}hDNJY-UfQ*_Um)|Bl1B(-jytq2BnT}PV&tL| zaA#1m#&W?GCpO2*G=>au;HO+^+O?5g5#qB!H;~>WzQ~i!H#o(yEwa;+5OID{z8l;r zF67AjaHFL9r<3I!ll;b(frMZw;8c|?B~}XbegK>sk#;OK0J^8rZoL8M&6T1mj{tUm wDOytv6136GGfweZo1goa&&1VcpfJGat^N~GT%Qkobajks)sBwN-Y4Pz0f3Lzz5oCK delta 874 zcmZ8dYe-XJ7=HZD&dzqWS(rnzny1UeAXb?fT1sJA5~Xyp`k^H5SSRx=cD7m2^+(h% zySy#BM>mK}omyInrHi5>MJh=v>_!9?Wx;+F5q)J8^yA~wQ2m7GfQTs7hGO zF21F9AvL>S5k|FnfSkF)*emOR{tjVD?+IYzX(3RY0i?tWJFk@k)pLb|wMT&4T|#3p z3m7P*F(#K>A2pSn{Rmv`q$qi1^iznlOY1O8;ojrgr-}F9XEAZqsxkb;C_G{uy z$27onPn=b931}P?bH5b=`xC_Z-`$)~6^m&zP?#jH*7;CRBVy(B(ZGmzqAzb5P?s%k z{PYT#WfymAXMo6OIw$I^X&X7stE8i=TtKavs?4eEW(|eS#d7C*Y0LuNAW}{-vnRc^ zMKVer0hvWZcwn0pOyhscJt=&6HqbO69eREp@b8fh+ZO}PL0T^HBmbbV)WRMHX_2Kx zzLF(-V|?X4CpoMh_G}{MSS!XgRN5@ULO^(F8$N-L-kM{ZvB&_{S#9&@YzMmg>6W#W z-AO06d_wNpYTy4Fe8CmeC8x5w9Tb!E<@ypw=KFe}CyVCUa+5pUj`MkZ8rMq4jW4{U zXYvrXCem@6i$xvOZgV9!PKY0Exd3ds6QB0s7?2Q+pW@_)Xv?RVEuTGZq#V1R)YCWY zVa<7 zg-%8CO1X6@7l#5m#}GICGXLTXY~Wb_FUCvwI3MKt-xiqkUrOU@=yy(~4WT4~XJ~s< z%2bbqp9yCEYL=~46+`uhRKKE^RjG>RRrP>Yp{a(l$rtqh(P+!%^h~9oLeYJHY=*K% s3#s}fCBO?56e(q1uU|C`MKcs*t*=^FG~EcOWnK?WJ(bvezqKv>Cu}1arvLx| diff --git a/src/res/translation/translation_it_IT.ts b/src/res/translation/translation_it_IT.ts index 7134bdd7..77e82dad 100644 --- a/src/res/translation/translation_it_IT.ts +++ b/src/res/translation/translation_it_IT.ts @@ -705,6 +705,11 @@ Green + + + The delay is perfect for a jam session. + + Yellow @@ -725,11 +730,6 @@ Shows the current audio delay status: - - - The delay is perfect for a jam session - - A session is still possible but it may be harder to play. @@ -2053,7 +2053,7 @@ - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. @@ -2291,6 +2291,11 @@ Bass Ukulele + + + No Name + + CServerDlg @@ -2417,160 +2422,164 @@ Nome del server - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - Il nome del server identifica il tuo server nell'elenco dei server sul client. Se non viene specificato un nome, viene invece visualizzato l'indirizzo IP. + Il nome del server identifica il tuo server nell'elenco dei server sul client. Se non viene specificato un nome, viene invece visualizzato l'indirizzo IP. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Nome del server - + Location City Ubicazione Città - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. Qui è possibile specificare la città in cui si trova il server. Se viene inserita una città, verrà visualizzata nell'elenco dei server sul client. - + City where the server is located line edit Citta del Server - + Location country Ubicazione Paese - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. Qui è possibile specificare il paese in cui si trova il server. Se viene inserito un paese, verrà visualizzato nell'elenco dei server sul client. - + Country where the server is located combo box Box del Paese dove si trova il server - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit &Esci - + &Hide &Nascondi - - - + + + server server - + &Open &Apri - + server server - + Server Server - + &Window &Finestra - + Predefined Address Indirizzo Predefinito - + Recording - + Not recording - + Not enabled diff --git a/src/res/translation/translation_nl_NL.qm b/src/res/translation/translation_nl_NL.qm index de32b09441efd9e9ea1ee338d5ccab56a8ffd34b..947037daaa409a5a5aa0965ad69cee904e629c83 100644 GIT binary patch delta 587 zcmXAmT}V@L7{;Id&pF#X$8(h7m}yQd6}@O=*}^i>#E%dsiAYonVX0_1=|iu=f?8T& zxLycr^8?fxNpq$4f$0oC(o7A^i@LB-O3IKDg)R&_(AC4s^YHR}--iad%>dUDq4Bwm zBdk5uy_mrQab(mu*<=#AG|$*`8y#V}EZ9meW@TgHG|cLmpV0x%#yk<^;t~y$C%Nb$ z3t+v^#l5HoCO2r9Gw&O)b5H8hfSH@z=29wcpO4gRTt3ipah|Ub*xacaGbsg2`uo5WNoSF|Dub@F9O=WQjONa zdP=BGYc_Nq)wO;e0ji^P_d;zzXOL!9H;_wzwGY_nBK7F}V$Xtjc1tCmC?vby!ltvS zSzo%#`&-g;1prqsg~zKT-5;fcg%<%wrj(a;6?o+)A><4jtf%sj8{&{5^v()Y-bUIA zNo1a<6eDJcUX5&B^8>>(R4!VtJod=GY?WrmOF6iqu1s$Duic&U*ytQkq?O-PIDnRI zc|LMCP{YZqYih3Vn*5_o_4oWzO!MnNW`+`7*{D9FRoSV31f1_vl74!DuwrGe(G2*O zl{D!VP`9jPU2jsW`mW@-RzOiwG8+$4j^s3rIKvih`_yYD!af+6fOGLxz`Nf5x01=z J|HtP^`3I0 delta 872 zcmXX?Yivwu7=HSlb7rPzI#X#nDYd$XP#R3M7P}iTiV~NEmGuJ&5s6z6vRNVV&Q!j<-}By{_j|tgeUC&Z zq`xv#dKv=#qNSwapF+_)n*u48xH^yGDJR7lgXW4w;$k<&MMw-zq&^W7J)>x*R4SS# zQ(Vf;xLPZXJ{JT+d!@0bYk;9t>XUK`PCC-jy6=D+EzMjX;FF3u1kQ@ zAg?VM0-7Uo_`qx6P?UUfS4Q($`Ps$WK=rrsiy7O1YazNJ=X`%;z4C)^Iv}?zbHc}g zR#RF0X#&TJQbxZ3#Sx{#ViDJ#Dv<@NfTpd=A7(qyvXv$%RigDHZC6&f8_RQm#!Pyk zG{|fYX(r3>)acVn-Q-4$Y^3wi(0{&1ly-Lj$O+yq=3)SY4 zzR-&<;QV6>tD)@fUSH<|Rx|31@BBL+nYV2iJ5JFNHK*X{Uf=VIo50jJ{;XTCfuchH z=<45jDc$~WJcohWZvUj0`+)S7{%HZ;%;Ep(vsx%F-=n!+E9*i${mza~);E}bH}DYH zG~NVm4jdcsW;K?k)Lg5Z8S97h{lYlW>s!6G*dS$$E-39Tl+au7yVkJqPBvW zT5*+TMZUJ#TD2K7tSOqq1B#bxmAW1^Y+EyJ&E6QPw=~nT9ivjG+P2JN_d6Q%zW^Green + + + The delay is perfect for a jam session. + + Yellow @@ -717,11 +722,6 @@ Shows the current audio delay status: - - - The delay is perfect for a jam session - - A session is still possible but it may be harder to play. @@ -2045,7 +2045,7 @@ - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. @@ -2283,6 +2283,11 @@ Bass Ukulele + + + No Name + + CServerDlg @@ -2409,150 +2414,154 @@ Servernaam - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - De naam van de server identificeert uw server in de lijst van de connect-dialoog-server bij de clients. Als er geen naam wordt gegeven, wordt in plaats daarvan het IP-adres getoond. + De naam van de server identificeert uw server in de lijst van de connect-dialoog-server bij de clients. Als er geen naam wordt gegeven, wordt in plaats daarvan het IP-adres getoond. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Servernaam lijnbewerking - + Location City Locatie Stad - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. De stad waar deze server zich bevindt kan hier worden ingesteld. Als er een plaatsnaam wordt ingevoerd, wordt deze getoond in de lijst van de connect-dialoog-server bij de clients. - + City where the server is located line edit Stad waar de server zich bevindt lijnbewerking - + Location country Land van locatie - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. Het land waarin deze server zich bevindt kan hier worden ingesteld. Als er een land is ingevoerd, wordt dit getoond in de lijst van de verbindingsserver bij de clients. - + Country where the server is located combo box Land waar de server zich bevindt combo box - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit &Sluiten - + &Hide Verbergen - - - + + + server server - + &Open &Open - + server server - + Predefined Address - + Recording - + Not recording - + Not enabled @@ -2569,12 +2578,12 @@ Standaard (Noord-Amerika) - + Server Server - + &Window &Window diff --git a/src/res/translation/translation_pl_PL.ts b/src/res/translation/translation_pl_PL.ts index 762b8e93..792238c2 100644 --- a/src/res/translation/translation_pl_PL.ts +++ b/src/res/translation/translation_pl_PL.ts @@ -4,113 +4,98 @@ CAboutDlg - - The - - - - - software enables musicians to perform real-time jam sessions over the internet. - - - - - There is a - - - - - server which collects the audio data from each - - - - - client, mixes the audio data and sends the mix back to each client. - - - - - uses the following libraries, resources or code snippets: - - - - + Qt cross-platform application framework - + Audio reverberation code by Perry R. Cook and Gary P. Scavone - + Some pixmaps are from the - - Country flag icons from Mark James + + This app enables musicians to perform real-time jam sessions over the internet. - + + There is a server which collects the audio data from each client, mixes the audio data and sends the mix back to each client. + + + + + This app uses the following libraries, resources or code snippets: + + + + + Country flag icons by Mark James + + + + For details on the contributions check out the - + Github Contributors list - + Spanish - + French - + Portuguese - + Dutch - + Italian - + German - + About - + , Version - + Internet Jam Session Software - - Under the GNU General Public License (GPL) + + Released under the GNU General Public License (GPL) @@ -215,11 +200,6 @@ Channel Level - - - Displays the pre-fader audio level of this channel. All connected clients at the server will be assigned an audio level, the same value for each client. - - Input level of the current audio channel at the server @@ -230,11 +210,6 @@ Mixer Fader - - - Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix. - - Local mix level setting of the current audio channel at the server @@ -250,11 +225,6 @@ Shows a status indication about the client which is assigned to this channel. Supported indicators are: - - - Speaker with cancellation stroke: Indicates that the other client has muted you. - - Status indicator label @@ -265,11 +235,6 @@ Panning - - - Sets the panning position from Left to Right of the channel. Works only in stereo or preferably mono in/stereo out mode. - - Local panning position of the current audio channel at the server @@ -285,11 +250,6 @@ Mute button - - - With the Solo checkbox, the audio channel can be set to solo which means that all other channels except of the current channel are muted. It is possible to set more than one channel to solo. - - Solo button @@ -300,9 +260,34 @@ Fader Tag + + + Displays the pre-fader audio level of this channel. All clients connected to the server will be assigned an audio level, the same value for every client. + + + + + Adjusts the audio level of this channel. All clients connected to the server will be assigned an audio fader, displayed at each client, to adjust the local mix. + + + + + Speaker with cancellation stroke: Indicates that another client has muted you. + + + + + Sets the pan from Left to Right of the channel. Works only in stereo or preferably mono in/stereo out mode. + + + + + With the Solo checkbox, the audio channel can be set to solo which means that all other channels except the soloed channel are muted. It is possible to set more than one channel to solo. + + - The fader tag identifies the connected client. The tag name, the picture of your instrument and a flag of your country can be set in the main window. + The fader tag identifies the connected client. The tag name, a picture of your instrument and the flag of your country can be set in the main window. @@ -436,276 +421,280 @@ Input Level Meter - - - The input level indicators show the input level of the two stereo channels of the current selected audio input. - - Make sure not to clip the input signal to avoid distortions of the audio signal. - - If the - - - - - software is connected and you play your instrument/sing in the microphone, the LED level meter should flicker. If this is not the case, you have probably selected the wrong input channel (e.g. line in instead of the microphone input) or set the input gain too low in the (Windows) audio mixer. - - - - - For a proper usage of the - - - - - software, you should not hear your singing/instrument in the loudspeaker or your headphone when the - - - - - software is not connected. This can be achieved by muting your input audio channel in the Playback mixer (not the Recording mixer!). - - - - + Input level meter - + Simulates an analog LED level meter. - + Connect/Disconnect Button - + Connect and disconnect toggle button - - - Clicking on this button changes the caption of the button from Connect to Disconnect, i.e., it implements a toggle functionality for connecting and disconnecting the - - - - software. - - - - Local Audio Input Fader - - With the audio fader, the relative levels of the left and right local audio channels can be changed. For a mono signal it acts like a panning between the two channels. If, e.g., a microphone is connected to the right input channel and an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader in a direction where the label above the fader shows - - - - - + + L - + , where - + is the current attenuation indicator. - + Local audio input fader (left/right) - - Reverberation Level - - - - - A reverberation effect can be applied to one local mono audio channel or to both channels in stereo mode. The mono channel selection and the reverberation level can be modified. If, e.g., the microphone signal is fed into the right audio channel of the sound card and a reverberation effect shall be applied, set the channel selector to right and move the fader upwards until the desired reverberation level is reached. - - - - - Reverberation effect level setting - - - - - Reverberation Channel Selection - - - - - With these radio buttons the audio input channel on which the reverberation effect is applied can be chosen. Either the left or right input channel can be selected. - - - - - Left channel selection for reverberation - - - - - Right channel selection for reverberation - - - - + Delay Status LED - - The delay status LED indicator shows the current audio delay status. If the light is green, the delay is perfect for a jam session. If the light is yellow, a session is still possible but it may be harder to play. If the light is red, the delay is too large for jamming. - - - - - If this LED indicator turns red, you will not have much fun using the - - - - + Delay status LED indicator - + Buffers Status LED - - The buffers status LED indicator shows the current audio/streaming status. If the light is green, there are no buffer overruns/underruns and the audio stream is not interrupted. If the light is red, the audio stream is interrupted caused by one of the following problems: - - - - + The network jitter buffer is not large enough for the current network/audio interface jitter. - - Push this button to connect to a server. A dialog where you can select a server will open. If you are connected, pressing this button will end the session. + + This shows the level of the two stereo channels for your audio input. - - The reverberation effect requires significant CPU so it should only be used on fast PCs. If the reverberation level fader is set to minimum (which is the default setting), the reverberation effect is switched off and does not cause any additional CPU usage. + + If the application is connected to a server and you play your instrument/sing into the microphone, the VU meter should flicker. If this is not the case, you have probably selected the wrong input channel (e.g. 'line in' instead of the microphone input) or set the input gain too low in the (Windows) audio mixer. + + + + + For proper usage of the application, you should not hear your singing/instrument through the loudspeaker or your headphone when the software is not connected.This can be achieved by muting your input audio channel in the Playback mixer (not the Recording mixer!). + + + + + Opens a dialog where you can select a server to connect to. If you are connected, pressing this button will end the session. + + + + + Clicking on this button changes the caption of the button from Connect to Disconnect, i.e., it implements a toggle functionality for connecting and disconnecting the application. + + + + + Controls the relative levels of the left and right local audio channels. For a mono signal it acts as a pan between the two channels.For example, if a microphone is connected to the right input channel and an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader in a direction where the label above the fader shows + + + + + Reverb effect + + + + + Reverb can be applied to one local mono audio channel or to both channels in stereo mode. The mono channel selection and the reverb level can be modified. For example, if a microphone signal is fed in to the right audio channel of the sound card and a reverb effect needs to be applied, set the channel selector to right and move the fader upwards until the desired reverb level is reached. + + + + + Reverb effect level setting + + + + + Reverb Channel Selection + + + + + With these radio buttons the audio input channel on which the reverb effect is applied can be chosen. Either the left or right input channel can be selected. + + + + + Left channel selection for reverb + + + + + Right channel selection for reverb + + + + + Shows the current audio delay status: + + + + + Green + + + + + The delay is perfect for a jam session. + + + + + Yellow + + + + + A session is still possible but it may be harder to play. + + + + + Red + + + + + The delay is too large for jamming. + + + + + If this LED indicator turns red, you will not have much fun using the application. + + + + + The buffers status LED shows the current audio/streaming status. If the light is red, the audio stream is interrupted. This is caused by one of the following problems: + + + + + The sound card's buffer delay (buffer size) is too small (see Settings window). + + + + + The upload or download stream rate is too high for your internet bandwidth. - The sound card buffer delay (buffer size) is set to too small a value. - - - - - The upload or download stream rate is too high for the current available internet bandwidth. - - - - The CPU of the client or server is at 100%. - + Buffers status LED indicator - - + + C&onnect - + &View - + &Connection Setup... - + My &Profile... - + C&hat... - + &Settings... - + &Analyzer Console... - + E&xit - + None - + Center - + R - + Central Server - + user - + users - + D&isconnect @@ -790,403 +779,411 @@ Jitter Buffer Size - - - The jitter buffer compensates for network and sound card timing jitters. The size of this jitter buffer has therefore influence on the quality of the audio stream (how many dropouts occur) and the overall delay (the longer the buffer, the higher the delay). - - The jitter buffer setting is therefore a trade-off between audio quality and overall delay. - - An auto setting of the jitter buffer size setting is available. If the check Auto is enabled, the jitter buffers of the local client and the remote server are set automatically based on measurements of the network and sound card timing jitter. If the Auto check is enabled, the jitter buffer size faders are disabled (they cannot be moved with the mouse). - - - - + Local jitter buffer slider control - + Server jitter buffer slider control - + Auto jitter buffer switch - + Jitter buffer status LED indicator - + Sound Card Device - + The ASIO driver (sound card) can be selected using - + under the Windows operating system. Under MacOS/Linux, no sound card selection is possible. If the selected ASIO driver is not valid an error message is shown and the previous valid driver is selected. - + If the driver is selected during an active connection, the connection is stopped, the driver is changed and the connection is started again automatically. - + Sound card device selector combo box - + If you are using the kX ASIO driver, make sure to connect the ASIO inputs in the kX DSP settings panel. - + Sound Card Channel Mapping - + For each - + input/output channel (Left and Right channel) a different actual sound card channel can be selected. - + Left input channel selection combo box - + Right input channel selection combo box - + Left output channel selection combo box - + Right output channel selection combo box - + Enable Small Network Buffers - + If enabled, the support for very small network audio packets is activated. Very small network packets are only actually used if the sound card buffer delay is smaller than - + Enable small network buffers check box - + Sound Card Buffer Delay - - - The buffer delay setting is a fundamental setting of the - - - software. This setting has influence on many connection properties. - - - - Three buffer sizes are supported - - 256 samples: This setting should only be used if only a very slow computer or a slow internet connection is available. - - - - - software. In this case the buffer delay setting is disabled. To change the actual buffer delay, this setting has to be changed in the sound card driver. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. - - - - - If no buffer size is selected and all settings are disabled, an unsupported buffer size is used by the driver. The - - - - - software will still work with this setting but with restricted performance. - - - - + The buffer setting is therefore a trade-off between audio quality and overall delay. - - If the buffer delay settings are disabled, it is prohibited by the audio driver to modify this setting from within the - - - - - software. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. - - - - + 128 samples setting radio button - + 256 samples setting radio button - + ASIO setup push button - + Fancy Skin - + If enabled, a fancy skin will be applied to the main window. - + Fancy skin check box - + Display Channel Levels - + If enabled, each client channel will display a pre-fader level bar. - + Display channel levels check box - + Audio Channels - - Enabling the stereo streaming mode will increase the stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. - - - - + Audio channels combo box - + Audio Quality - - Select the desired audio quality. A low, normal or high audio quality can be selected. The higher the audio quality, the higher the audio stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. - - - - + Audio quality combo box - + New Client Level - - The new client level setting defines the fader level of a new connected client in percent. I.e. if a new client connects to the current server, it will get the specified initial fader level if no other fader level of a previous connection of that client was already stored. - - - - + New client level edit box - + Central server address line edit - + Current Connection Status Parameter - - The jitter buffer size can be manually chosen for the local client and the remote server. For the local jitter buffer, dropouts in the audio stream are indicated by the light below the jitter buffer size faders. If the light turns to red, a buffer overrun/underrun took place and the audio stream is interrupted. - - - - - If the auto setting of the jitter buffer is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the auto setting functionality and to lower the jitter buffer size manually by using the sliders until your personal acceptable limit of the amount of dropouts is reached. The LED indicator will visualize the audio dropouts of the local jitter buffer with a red light. - - - - + If the ASIO4ALL driver is used, please note that this driver usually introduces approx. 10-30 ms of additional audio delay. Using a sound card with a native ASIO driver is therefore recommended. - + If the selected sound card device offers more than one input or output channel, the Input Channel Mapping and Output Channel Mapping settings are visible. - + samples. The smaller the network buffers, the lower the audio latency. But at the same time the network load increases and the probability of audio dropouts also increases. - - 64 samples: This is the preferred setting since it provides the lowest latency but does not work with all sound cards. - - - - - 128 samples: This setting should work for most available sound cards. - - - - - Some sound card drivers do not allow the buffer delay to be changed from within the - - - - + The actual buffer delay has influence on the connection status, the current upload rate and the overall delay. The lower the buffer size, the higher the probability of a red light in the status indicator (drop outs) and the higher the upload rate and the lower the overall delay. - + 64 samples setting radio button - - Select the number of audio channels to be used. There are three modes available. The mono and stereo modes use one and two audio channels respectively. In mono-in/stereo-out mode the audio signal which is sent to the server is mono but the return signal is stereo. This is useful if the sound card has the instrument on one input channel and the microphone on the other channel. In that case the two input signals can be mixed to one mono channel but the server mix can be heard in stereo. - - - - - In stereo streaming mode, no audio channel selection for the reverberation effect will be available on the main window since the effect is applied on both channels in this case. - - - - + Custom Central Server Address - - The custom central server address is the IP address or URL of the central server at which the server list of the connection dialog is managed. This address is only used if the custom server list is selected in the connection dialog. - - - - - The ping time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network. This delay should be as low as 20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to the server is too large or your internet connection is not sufficient. - - - - - The overall delay is calculated from the current ping time and the delay which is introduced by the current buffer settings. - - - - - The upstream rate depends on the current audio packet size and the audio compression setting. Make sure that the upstream rate is not higher than the available rate (check the upstream capabilities of your internet connection by, e.g., using speedtest.net). - - - - + If this LED indicator turns red, you will not have much fun using the - + software. - + ASIO Setup - + + Mono - + Mono-in/Stereo-out - + + + Stereo - + + The jitter buffer compensates for network and sound card timing jitters. The size of the buffer therefore influences the quality of the audio stream (how many dropouts occur) and the overall delay (the longer the buffer, the higher the delay). + + + + + You can set the jitter buffer size manually for the local client and the remote server. For the local jitter buffer, dropouts in the audio stream are indicated by the light below the jitter buffer size faders. If the light turns to red, a buffer overrun/underrun has taken place and the audio stream is interrupted. + + + + + If the Auto setting is enabled, the jitter buffers of the local client and the remote server are set automatically based on measurements of the network and sound card timing jitter. If Auto is enabled, the jitter buffer size faders are disabled (they cannot be moved with the mouse). + + + + + If the Auto setting is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the Auto setting and to lower the jitter buffer size manually by using the sliders until your personal acceptable amount of dropouts is reached. The LED indicator will display the audio dropouts of the local jitter buffer with a red light. + + + + + The buffer delay setting is a fundamental setting of this software. This setting has an influence on many connection properties. + + + + + 64 samples: The preferred setting. Provides the lowest latency but does not work with all sound cards. + + + + + 128 samples: Should work for most available sound cards. + + + + + 256 samples: Should only be used on very slow computers or with a slow internet connection. + + + + + Some sound card drivers do not allow the buffer delay to be changed from within the application. In this case the buffer delay setting is disabled and has to be changed using the sound card driver. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. + + + + + If no buffer size is selected and all settings are disabled, an unsupported buffer size is used by the driver. The application will still work with this setting but with restricted performance. + + + + + If the buffer delay settings are disabled, it is prohibited by the audio driver to modify this setting from within the software. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. + + + + + Selects the number of audio channels to be used for communication between client and server. There are three modes available: + + + + + and + + + + + These modes use one and two audio channels respectively. + + + + + Mono in/Stereo-out + + + + + The audio signal sent to the server is mono but the return signal is stereo. This is useful if the sound card has the instrument on one input channel and the microphone on the other. In that case the two input signals can be mixed to one mono channel but the server mix is heard in stereo. + + + + + Enabling + + + + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. + + + + + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. + + + + + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. + + + + + Leave this blank unless you need to enter the address of a central server other than the default. + + + + + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. + + + + + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. + + + + + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. + + + + Low - + Normal - + High @@ -1221,38 +1218,38 @@ - + preferred - - + + Size: - + Buffer Delay - + Buffer Delay: - + The selected audio device could not be used because of the following error: - + The previous driver will be selected. - + Ok @@ -1423,92 +1420,82 @@ - - The server list shows a list of available servers which are registered at the central server. Select a server from the list and press the connect button to connect to this server. Alternatively, double click a server from the list to connect to it. If a server is occupied, a list of the connected musicians is available by expanding the list item. Permanent servers are shown in bold font. - - - - - Note that it may take some time to retrieve the server list from the central server. If no valid central server address is specified in the settings, no server list will be available. - - - - + Server list view - + Server Address - - The IP address or URL of the server running the + + The Connection Setup window shows a list of available servers. Server operators can optionally list their servers by music genre. Use the List dropdown to select a genre, click on the server you want to join and press the Connect button to connect to it. Alternatively, double click on on the server name. Permanent servers (those that have been listed for longer than 48 hours) are shown in bold. - - server software must be set here. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: + + If you know the IP address or URL of a server, you can connect to it using the Server name/Address field. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: - - . A list of the most recent used server IP addresses or URLs is available for selection. + + . The field will also show a list of the most recently used server addresses. - + Server address edit box - + Holds the current server IP address or URL. It also stores old URLs in the combo box list. - + Server List Selection - + Selects the server list to be shown. - + Server list selection combo box - + Filter - + The server list is filtered by the given text. Note that the filter is case insensitive. - + Filter edit box - + Show All Musicians - + If you check this check box, the musicians of all servers are shown. If you uncheck the check box, all list view items are collapsed. - + Show all musicians check box @@ -1574,28 +1561,28 @@ CHelpMenu - + &Help &Pomoc - - + + Getting &Started... - + Software &Manual... - + What's &This - + &About... @@ -1603,102 +1590,102 @@ CLicenceDlg - + I &agree to the above licence terms - + Accept - + Decline - + By connecting to this server and agreeing to this notice, you agree to the following: - + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see - + You are free to: - + Share - + copy and redistribute the material in any medium or format - + Adapt - + remix, transform, and build upon the material - + The licensor cannot revoke these freedoms as long as you follow the license terms. - + Under the following terms: - + Attribution - + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. - + NonCommercial - + You may not use the material for commercial purposes. - + ShareAlike - + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. - + No additional restrictions - + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. @@ -1706,303 +1693,313 @@ CMusProfDlg - - + + Musician Profile - + Alias/Name - + Instrument - + Country Kraj - + City - + Skill - + &Close - - - + + + None - + Beginner - + Intermediate - + Expert - - Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living in. The city you live in and the skill level playing your instrument may also be added. + + Write your name or an alias here so the other musicians you want to play with know who you are. You may also add a picture of the instrument you play and a flag of the country you are located in. Your city and skill level playing your instrument may also be added. - - What you set here will appear at your fader on the mixer board when you are connected to a + + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. - - server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. - - - - + Alias or name edit box - + Instrument picture button - + Country flag button - + City edit box - + Skill level combo box - + Drum Set - + Djembe - + Electric Guitar - + Acoustic Guitar - + Bass Guitar - + Keyboard - + Synthesizer - + Grand Piano - + Accordion - + Vocal - + Microphone - + Harmonica - + Trumpet - + Trombone - + French Horn - + Tuba - + Saxophone - + Clarinet - + Flute - + Violin - + Cello - + Double Bass - + Recorder - + Streamer - + Listener - + Guitar+Vocal - + Keyboard+Vocal - + Bodhran - + Bassoon - + Oboe - + Harp - + Viola - + Congas - + Bongo - + Vocal Bass - + Vocal Tenor - + Vocal Alto - + Vocal Soprano - + Banjo - + Mandolin + + + Ukulele + + + + + Bass Ukulele + + + + + No Name + + CServerDlg @@ -2026,16 +2023,6 @@ Start Minimized on Operating System Start - - - If the start minimized on operating system start check box is checked, the - - - - - server will be started when the operating system starts up and is automatically minimized to a system task bar icon. - - Show Creative Commons Licence Dialog @@ -2051,21 +2038,11 @@ Make My Server Public - - - If the Make My Server Public check box is checked, this server registers itself at the central server so that all - - Register Server Status - - - users can see the server in the connect dialog server list and connect to it. The registration of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. - - If the Make My Server Public check box is checked, this will show whether registration with the central server is successful. If the registration failed, please choose another server list. @@ -2107,160 +2084,170 @@ - - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - - - - + Server name line edit - + Location City - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. - + City where the server is located line edit - + Location country - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. - + Country where the server is located combo box - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit - + &Hide - - - + + + server - + &Open - + server - + Predefined Address - + Recording - + Not recording - + Not enabled - + Server - + + If the start minimized on operating system start check box is checked, the server will be started when the operating system starts up and is automatically minimized to a system task bar icon. + + + + + If the Make My Server Public check box is checked, this server registers itself at the central server so that all users of the application can see the server in the connect dialog server list and connect to it. The registration of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. + + + + + The server name identifies your server in the connect dialog server list at the clients. + + + + &Window @@ -2385,6 +2372,141 @@ + + CSound + + + Error closing stream: $s + + + + + The Jack server is not running. This software requires a Jack server to run. Normally if the Jack server is not running this software will automatically start the Jack server. It seems that this auto start has not worked. Try to start the Jack server manually. + + + + + The Jack server sample rate is different from the required one. The required sample rate is: + + + + + You can use a tool like <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></i> to adjust the Jack server sample rate. + + + + + Make sure to set the Frames/Period to a low value like + + + + + to achieve a low delay. + + + + + + The Jack port registering failed. + + + + + Cannot activate the Jack client. + + + + + The Jack server was shut down. This software requires a Jack server to run. Try to restart the software to solve the issue. + + + + + CoreAudio input AudioHardwareGetProperty call failed. It seems that no sound card is available in the system. + + + + + CoreAudio output AudioHardwareGetProperty call failed. It seems that no sound card is available in the system. + + + + + Current system audio input device sample rate of %1 Hz is not supported. Please open the Audio-MIDI-Setup in Applications->Utilities and try to set a sample rate of %2 Hz. + + + + + Current system audio output device sample rate of %1 Hz is not supported. Please open the Audio-MIDI-Setup in Applications->Utilities and try to set a sample rate of %2 Hz. + + + + + The audio input stream format for this audio device is not compatible with this software. + + + + + The audio output stream format for this audio device is not compatible with this software. + + + + + The buffer sizes of the current input and output audio device cannot be set to a common value. Please choose other input/output audio devices in your system settings. + + + + + The audio driver could not be initialized. + + + + + The audio device does not support the required sample rate. The required sample rate is: + + + + + The audio device does not support setting the required sampling rate. This error can happen if you have an audio interface like the Roland UA-25EX where you set the sample rate with a hardware switch on the audio device. If this is the case, please change the sample rate to + + + + + Hz on the device and restart the + + + + + software. + + + + + The audio device does not support the required number of channels. The required number of channels for input and output is: + + + + + + Required audio sample format not available. + + + + + No ASIO audio device (driver) found. + + + + + The + + + + + software requires the low latency audio interface ASIO to work properly. This is not a standard Windows audio interface and therefore a special audio driver is required. Either your sound card has a native ASIO driver (which is recommended) or you might want to use alternative drivers like the ASIO4All driver. + + + CSoundBase diff --git a/src/res/translation/translation_pt_PT.qm b/src/res/translation/translation_pt_PT.qm index 2bc97eb8082c4d6802cf4938560f24ba5ad8665e..ee0b96362ba8d123ac2bfe7e4b2683dd19f778ba 100644 GIT binary patch delta 572 zcmXAlUr1AN9L3Lm_uk!k@9w5cDV8o;O$=hmG_BN8NfwDlQAW@dqJO5XLXCwK;ZqQl z_GOZg5!8cN+jQoi8k)LF6HH4HHCt9xkeX2KL3-)Jo<4kD4(A--M{anAt54KCXh?d? z+7=tWIa!z^o5sy%4v|;WWg2l{d1VJs_9RAsBDq)zdmp4umc^z{&=R}M`lsj=SIm4i z>f};QGj-hBkR5PlbL)G~0kf&J#916eo4EFx?Lg!+_cxLW6npqJ)eJC{^0|#K0pSmS zyzmVWi0568egV&ol*hj|2hQ;Gvm1a+#{U=?2QFUa7c#E_AC6LrU^n$a$Wbx?enrT2 zJq3cB$t75VQ#U`Rur0bG;Zb~Pk>Z0jdQsV4v?iuC9owf#gWgS-ta3ga3M)j_4ubf>} z1yrQVdv{$2#xBvTxKcJ;M>grcH2PD2=PT6NV>BwIGG8x6r2@(SSjk%O1LI?~M|PU~ z&nqqYYMXUA%8TD>q&*U2x0{+}3mZI0y|TsJe%6qzYXxez7}6H+0jtUk=}8tKR8LX4 pfK4Y*p5DFsU8Qm2Rtr$M-#D2R0jlTAfqAiGP@m@O7z%xN{0EM!#QFdL delta 853 zcmX|-SxgjJ6o!9pRdqu*RcH%=s6Y)W;lY%MEJ1;ZY()LuxSOoCcklB8);&N|B24yh8Xbsecio7=>-RH(@`i8P^oGjVa&~7owXtk= z??(!=8g?Z>x=_rT7_|whu7~BqgbNx_kR$wXZXNJQpsoF_flS25C}$5nUs_gN|x4VO$1^$OWrx9K+`g*_VrUB@13;WI0Xd8 z&@stm!4o9gR@#rOOadCGkZwz5J-cbAZMoy>Hhbd2B|z&23fnZ+F-VE_BvC#9v%87UM2 z!gc4E$vmA7pEGB%1*}hZE||R)__vrkqgJu&<&@|+?&!M~y>AeF%LeLkq_UN=J}SA+KR_Rxx$OQhWks9uw+mx#@2UqjEQ+}k7XthP2Jqxr;CysiqZpBn zC6v~jB0_~hv*X9nPp1>8(VswdR_kvv1#cyZs!(-@{ zy4hRp8=a9E$jDX;J*w#)#VmELQKOqvRX;Z1z18E8~^|S diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts index 63c9c5aa..47030fde 100644 --- a/src/res/translation/translation_pt_PT.ts +++ b/src/res/translation/translation_pt_PT.ts @@ -641,6 +641,11 @@ Green + + + The delay is perfect for a jam session. + + Yellow @@ -666,11 +671,6 @@ Shows the current audio delay status: - - - The delay is perfect for a jam session - - A session is still possible but it may be harder to play. @@ -2098,7 +2098,7 @@ - What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. @@ -2311,6 +2311,11 @@ Bass Ukulele + + + No Name + + CServerDlg @@ -2437,150 +2442,154 @@ Nome do Servidor - The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - O nome do servidor identifica o servidor na lista do diálogo de ligação exibido nos clientes. Se nenhum nome for fornecido, o endereço IP será mostrado. + O nome do servidor identifica o servidor na lista do diálogo de ligação exibido nos clientes. Se nenhum nome for fornecido, o endereço IP será mostrado. - + + The server name identifies your server in the connect dialog server list at the clients. + + + + Server name line edit Caixa de edição do nome do servidor - + Location City ;Localização: Cidade - + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. A cidade onde este servidor está localizado pode ser definida aqui. Se um nome de cidade for inserido, este será mostrado na lista do diálogo de ligação dos clientes. - + City where the server is located line edit Caixa de edição da cidade onde o servidor se encontra - + Location country Localização: País - + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. O país em que este servidor está localizado pode ser definido aqui. Se um país for inserido, ele será mostrado na lista do diálogo de logação dos clientes. - + Country where the server is located combo box Seletor do país onde o servidor de encontra - + Checkbox to turn on or off server recording - + Enable Recorder - + Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Current session directory text box (read-only) - + Current Session Directory - + Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Recorder status label - + Recorder Status - + Displays the current status of the recorder. - + Request new recording button - + New Recording - + During a recording session, the button can be used to start a new recording. - - + + E&xit &Sair - + &Hide &Esconder servidor - - - + + + server - + &Open &Abrir servidor - + server - + Predefined Address Endereço Predefinido - + Recording - + Not recording - + Not enabled @@ -2597,12 +2606,12 @@ Servidor Padrão (America do Norte) - + Server - Servidor - + &Window &Janela From 0bcb654ff74c496da3b4ee3c6401e2e80d6a029e Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 13:37:40 +0200 Subject: [PATCH 09/14] some more work for German translation --- src/clientsettingsdlg.cpp | 5 +-- src/res/translation/translation_de_DE.ts | 50 ++++++++++++------------ 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp index 9e9b737d..51b95b3e 100755 --- a/src/clientsettingsdlg.cpp +++ b/src/clientsettingsdlg.cpp @@ -209,11 +209,10 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent, "microphone on the other. In that case the two input signals " "can be mixed to one mono channel but the server mix is heard in " "stereo." ) + "
  • " - "
  • " + tr ( "Enabling " ) + "" + tr ( "Stereo" ) + " " + tr ( "mode " + "
  • " + tr ( "Enabling " ) + "" + tr ( "Stereo" ) + " " + tr ( " mode " "will increase your stream's data rate. Make sure your upload rate does not " "exceed the available upload speed of your internet connection." ) + "
  • " - "
" - + "
" + tr ( "In stereo streaming mode, no audio channel selection " + "" + "
" + tr ( "In stereo streaming mode, no audio channel selection " "for the reverb effect will be available on the main window " "since the effect is applied to both channels in this case." ); diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts index 8b611b3b..62aa6b52 100644 --- a/src/res/translation/translation_de_DE.ts +++ b/src/res/translation/translation_de_DE.ts @@ -636,7 +636,7 @@ The delay is perfect for a jam session. - + Die Verzögerung it gering genug für das Jammen. @@ -680,22 +680,22 @@ If this LED indicator turns red, you will not have much fun using the application. - + Wenn diese LED rot leuchtet, dann wirst du keinen Spaß haben mit der Software. The buffers status LED shows the current audio/streaming status. If the light is red, the audio stream is interrupted. This is caused by one of the following problems: - + Die Status-LED für den Netzwerkpuffer zeigt den aktuellen Status des Netzwerkstroms. Wenn die LED grün ist, dann gibt es keine Pufferprobleme. Wenn die LED rot anzeigt, dann ist der Netzwerkstrom kurz unterbrochen. Dies kann folgende Ursachen haben: The sound card's buffer delay (buffer size) is too small (see Settings window). - + Der Soundkartenpuffer ist zu klein eingestellt. The upload or download stream rate is too high for your internet bandwidth. - + Die Upload-Rate der Internetverbindung ist zu klein für den Netzwerkdatenstrom. @@ -1314,102 +1314,102 @@ The jitter buffer compensates for network and sound card timing jitters. The size of the buffer therefore influences the quality of the audio stream (how many dropouts occur) and the overall delay (the longer the buffer, the higher the delay). - + Der Netzwerkpuffer kompensiert die Netzwerk- und Soundkarten-Timing-Schwankungen. Die Größe des Netzwerkpuffers hat Auswirkungen auf die Qualität des Audiosignals (wie viele Aussetzer auftreten) und die Gesamtverzögerung (je länger der Puffer, desto größer ist die Verzögerung). You can set the jitter buffer size manually for the local client and the remote server. For the local jitter buffer, dropouts in the audio stream are indicated by the light below the jitter buffer size faders. If the light turns to red, a buffer overrun/underrun has taken place and the audio stream is interrupted. - + Die Netzwerkpuffergröße kann manuell verstellt werden, jeweils getrennt für die Applikation und den Server. Für den lokalen Netzwerkpuffer werden die Aussetzer durch die LED-Anzeige unter den Reglern angezeigt. Wenn die Lampe rot anzeigt, dann hat ein Pufferüberlauf oder ein Leerlauf des Puffers stattgefunden und der Audiodatenstrom wurde kurz unterbrochen. If the Auto setting is enabled, the jitter buffers of the local client and the remote server are set automatically based on measurements of the network and sound card timing jitter. If Auto is enabled, the jitter buffer size faders are disabled (they cannot be moved with the mouse). - + Die Netzwerkpuffergröße kann automatisch eingestellt werden. Wenn die Automatik aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des Servers getrennt basierend auf Messungen der Netzwerkschwankungen eingestellt. Wenn die Automatik aktiviert ist, dann sind die beiden Regler gesperrt für die manuelle Verstellung (sie können nicht mit der Maus verändert werden). If the Auto setting is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the Auto setting and to lower the jitter buffer size manually by using the sliders until your personal acceptable amount of dropouts is reached. The LED indicator will display the audio dropouts of the local jitter buffer with a red light. - + Wenn die Automatik zum Einstellen der Netzwerkpuffer aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des entfernten Servers auf einen konservativen Wert eingestellt, um eine möglichst gute Audioqualität zu garantieren. Um die Gesamtverzögerung zu optimieren, bietet es sich an, die Automatik zu deaktivieren und die Netzwerkpuffer etwas kleiner einzustellen. Die Werte sollte man so weit reduzieren, bis die Audioqualität gerade noch der persönlichen Akzeptanz entspricht. Die LED-Anzeige hilft dabei die Audioaussetzer verursacht durch den lokalen Netzwerkpuffer zu visualisieren (wenn die LED rot leuchtet). The buffer delay setting is a fundamental setting of this software. This setting has an influence on many connection properties. - + Die Soundkartenpuffergröße ist eine fundamentale Einstellung der Software. Diese Einstellung hat Einfluss auf viele andere Verbindungseigenschaften. 64 samples: The preferred setting. Provides the lowest latency but does not work with all sound cards. - + 64 Samples: Dies ist die bevorzugte Einstellung weil es die geringste Verzögerung hat. Diese Puffergröße funktioniert allerdings nicht mit allen Soundkarten. 128 samples: Should work for most available sound cards. - + 128 Samples: Diese Puffergröße sollte mit den meisten Soundkarten funktionieren. 256 samples: Should only be used on very slow computers or with a slow internet connection. - + 256 Samples: Diese Einstellung sollte nur dann verwendet werden, wenn man einen langsamen Computer oder eine langsame Internetverbindung hat. Some sound card drivers do not allow the buffer delay to be changed from within the application. In this case the buffer delay setting is disabled and has to be changed using the sound card driver. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. - + Manche Soundkartentreiber unterstützen nicht das Verändern der Puffergröße innerhalb der Software. In diesem Fall ist die Einstellungsmöglichkeit für die Puffergröße deaktiviert. Die Puffergröße muss man stattdessen direkt im Soundkartentreiber durchführen. Unter Windows kann man den ASIO-Einstellungen Knopf drücken um die Treibereinstellungen zu öffnen. Unter Linux benutzt man das Jack-Konfigurationsprogramm um die Puffergröße einzustellen. If no buffer size is selected and all settings are disabled, an unsupported buffer size is used by the driver. The application will still work with this setting but with restricted performance. - + Falls keiner der vorgegebenen Puffergrößen ausgeählt ist und alle Einstellungen deaktiviert sind, dann wird eine nicht unterstützte Puffergröße im Soundkartentreiber verwendet. Die Software funktioniert trotzdem aber es könnte eine größere Verzögerung resultieren. If the buffer delay settings are disabled, it is prohibited by the audio driver to modify this setting from within the software. On Windows, press the ASIO Setup button to open the driver settings panel. On Linux, use the Jack configuration tool to change the buffer size. - + Falls keiner der vorgegebenen Puffergrößen ausgeählt ist und alle Einstellungen deaktiviert sind, dann wird eine nicht unterstützte Puffergröße im Soundkartentreiber verwendet. Unter Windows kann man den ASIO-Einstellungen Knopf drücken, um die Treibereinstellungen zu öffnen. Unter Linux kann man ein Jack-Konfigurationswerkzeug verwenden, um die Puffergröße zu verändern. Selects the number of audio channels to be used for communication between client and server. There are three modes available: - + Hiermit kann man die Anzahl an Audiokanälen auswählen. Es gibt drei Modi: and - + und These modes use one and two audio channels respectively. - + Diese Modi verwenden jeweils einen oder zwei Audiokanäle. Mono in/Stereo-out - + The audio signal sent to the server is mono but the return signal is stereo. This is useful if the sound card has the instrument on one input channel and the microphone on the other. In that case the two input signals can be mixed to one mono channel but the server mix is heard in stereo. - + Ein Monosignal wird zum Server geschickt aber es kommt ein Stereo-Signal zurück vom Server. Dies ist nützlich für den Fall, dass man an die Soundkarte ein Instrument an den einen Eingangskanal und ein Mikrofon an den anderen Eingangskanal angeschlossen hat. In diesem Fall können die beiden Signale zusammen gemischt werden und an den Server geschickt werden aber man kann das Stereo-Signal von den anderen Musikern hören. Enabling - + Im mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - + Modus ist die Übertragungsrate etwas höher. Man muss sicher stellen, dass die Internetverbindung die höhere Rate übertragen kann. In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + Wenn der Stereo-Modus ausgewählt wurde, dann verschwindet die Kanalselektion für den Halleffekt im Hauptfenster, da der Effekt auf beide Stereokanäle angewendet wird. The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + Je höher die Audioqualität, desto höher ist die Netzwerkübertragungsrate. Man muss sicherstellen, dass die Internetverbindung die höhere Rate übertragen kann. From ab92abfd63ddcfbabea4dcc82e009db6cdd832a2 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 13:51:06 +0200 Subject: [PATCH 10/14] update German translation --- src/res/translation/translation_de_DE.qm | Bin 68172 -> 94504 bytes src/res/translation/translation_de_DE.ts | 134 ++++++++++++----------- src/res/translation/translation_es_ES.qm | Bin 94821 -> 94358 bytes src/res/translation/translation_es_ES.ts | 72 ++++++------ src/res/translation/translation_fr_FR.ts | 74 ++++++------- src/res/translation/translation_it_IT.ts | 74 ++++++------- src/res/translation/translation_nl_NL.ts | 74 ++++++------- src/res/translation/translation_pl_PL.ts | 74 ++++++------- src/res/translation/translation_pt_PT.ts | 74 ++++++------- 9 files changed, 292 insertions(+), 284 deletions(-) diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm index f4b6a5fef6255efb604ea05170c9b1c1cf6e18a9..72b40090c839324d5b1d811053215c5c7ad2d1e0 100644 GIT binary patch delta 22479 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

3lS=bR(* zX61;6&oe8>DiQ!#;uF+-gv{v;VZVuExf9~XIaq@m$WzrpH=`lI5{Z;q=GL8R3&b5N z6VV48LSNgtW#io+r&zTe0G*HCD-;d))bp(jP?g&SJc{5`ev{1Nod0 zDkj7(r6Ati`QgHV47YNzEE4`-72L}3)Hr#hf=hE|ks&S?<&fO>c--f}%!OTf^0hU- zDilzThr_DkyNMmUFojFh0S|9-d9|=0v{w*K#48ggDlkZc#2GLCWi6?C29J<{s0rgH zFXd9S;}pF?F4-%O&%05RjvuKnlgp^1L5`U1eTW@jPe>t!KHhxh2h`OfN@5+`zl5h+TYMQ8#u>jC>Y$0Hbi$npQ z2^8aBFBHGNo5klq^KDEg{42k5h(Me6;6$vSIB#Ov=wi{Pj^ZD0cPM7$j+@3)`~qB71+6gWSA2&^F_|m03HU~K`Hhy!{gtt3P ztKyf0RGrN1f2te_7$EL>yPcia&PanAw0P6gebscUmZiDGip2%u!nWF;WhQo~y)>@<2xubqQzA)LS<&0rKh@EbX?p^`^q$HfZ` zZa&(}RV+nFL!5sFv@N}ns+UE@o-v>>9O1lM4;b59i`=9s6=ngftbSq*JbqT zfY(*l()OW)t@PG7$YNq#r9>ll41Urov5l>-FKDs-tD|+g_IK>jsckZ4A)I%c_{~o1 zmO&~JVB?M;T{$V8k^6-x$9QPI(EApMM>ppnpz_;tTo>RtVY(z-Pz-sm?O0Au*p)dl z07!730bRu+4v;E!IsN$TJiK?zIX^oQS1h}9P4p3SRE7u!1P-+P40`4YD$hXN*)a=# z)&xpP>m0tj0qhPwlskRY#8yZmG)73pQ2QYMt0wB_Y>HydOn(Co9ew;O9mYia|T|#KDz;1!kCr0A4VX^d~-h(gTHc5R-JBCRaT{3KAY_aHt zHZ4WZRi+kPg?P>~Wcir%n*q-!o(SaUK^$>5!>EW8nmT@DSuvuNqa~l6G80L~bw8WX zrnLJ|eygE6FrODDtGW;ctTa$tYfc4ZBoK7*>k8$sv>pCmbf(UH^JF;2vXbIiwaNQW zJEUwc=>iU{cR$%$PMv4WR>T7bdWf42w?%rP&UpE-C&p;XB|^nN5;;sPJ*Aa$ebAd! zCreo^2Wo~2Vh68fKG@`e<3{}QJrDCFU#ztxZNZ8N&h@Zia7Sq{c^sgq#2l@R<=EnV>1!=I%Q#S=k|EZwI>p19QVD<3JFi%Km5c%L zl$;6ZnY8SW0Y$-3<5k}(W6~AaQL71C0@xIN!!frHbjq4cJSl&&aED@YZkXU)#Ml7M zk9A#Uc5TYTCA$vbrMR$rK8}0Cw7PM!+=E}7E5X|D(gunryE>+wY$0Yk#w9|<4&!Pp ztx(4&kz6De0n}T~26Hx5CFR?BvxF{&DP@riMGPBpW`T1peNUbPvw1!e$YGb0L#C}9 zXt`vF{YuE7Ol&*9jaXikDoxR>1)XZTX6mRwO?iyL4w9;jV=5v+KD>ihM@>I7O-mK+ zjCf^`Kba74Kn%Baf*Gn>N$g3vbn)pcef!ZxhEBnG;2;bG>^i^eodST6mn&aRa_bZ2 zY}`RM*1ji_PVaGdr!H9Sfv_2w4sPrmD-bucrFeqC5@JoOGc_l(J2vu>Elt9L(CIA|P<1A*?0=rXkym+n$Bj>$<teUi`Xas}TB)Krt+19!av^VTr7ly@UOmrJ20R zY393e)^7%451#M|{Z&Vs+^Umu9dwS3to=&oZ*2b${%gPh_ln=0v?bTkn;zI+dn5Awlv(cA#5gp)!> zNl5Kts_w;AJI<~Jdrf4hAgGgM_~L<$)3-)v#+(p|@b?_tO^9|N;U1hEmahPDWcR5T z(!pe6(@_tFc&L2*?yL!`x>JnWE1P}c)f+8?w1KAp09(xIY?l38X-2XGWI~cMIXP1tFvupVEF!9NYX)X8dx=I^yUIH87b+FdX5K&{RXk#z| z{zEEi5nu!BKWyJp{NZp*f4qkOhm9;I0)D*Rpff~#ys=q&l0+#^VOzzt#apjl6p~ve JeEf5d{{stjbNB!N delta 3640 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 der Stereo-Modus ausgewählt wurde, dann verschwindet die Kanalselektion für den Halleffekt im Hauptfenster, da der Effekt auf beide Stereokanäle angewendet wird. - + Audio channels combo box Audiokanal Auswahlbox - + Audio Quality Audioqualität @@ -1217,12 +1217,12 @@ Wählt die gewünschte Audioqualität aus. Es wird eine niedrige, mittlere und hohe Audioqualität angeboten. Je höher die Audioqualität, desto höher ist die Netzwerkübertragungsrate. Man muss sicherstellen, dass die Internetverbindung die höhere Rate übertragen kann. - + Audio quality combo box Audioqualität Auswahlbox - + New Client Level Pegel für neuen Teilnehmer @@ -1231,12 +1231,12 @@ Der Pegel für neue Teilnehmer definiert die Fadereinstellung, wenn sich ein Teilnehmer neu mit dem Server verbindet. D.h. wenn ein neuer Fader erscheint, dann wird er auf den voreingestellten Pegel gesetzt. Eine Ausnahme bildet der Fall, dass der Teilnehmer vorher schon mal mit dem Server verbunden war und der Pegel gespeichert war. - + New client level edit box Neuer Teilnehmer Pegel Einstellbox - + Custom Central Server Address Benutzerdefinierte Zentralserveradresse @@ -1257,12 +1257,12 @@ Voreingestellter Zentralservertyp Auswahlbox - + Central server address line edit Zentralserveradresse Eingabefeld - + Current Connection Status Parameter Verbindungsstatus Parameter @@ -1279,35 +1279,40 @@ Die Upload-Rate hängt von der Soundkartenpuffergröße und die Audiokomprimierung ab. Man muss sicher stellen, dass die Upload-Rate immer kleiner ist als die Rate, die die Internetverbindung zur Verfügung stellt (man kann die Upload-Rate des Internetproviders z.B. mit speedtest.net überprüfen). - + If this LED indicator turns red, you will not have much fun using the Wenn diese LED rot leuchtet, dann wirst du keinen Spaß haben mit der - + software. Software. - + ASIO Setup ASIO-Einstellung - + Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + Modus ist die Übertragungsrate etwas höher. Man muss sicher stellen, dass die Internetverbindung die höhere Rate übertragen kann. + + + Mono-in/Stereo-out Mono-In/Stereo-Out - + Stereo @@ -1397,57 +1402,56 @@ Im - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - Modus ist die Übertragungsrate etwas höher. Man muss sicher stellen, dass die Internetverbindung die höhere Rate übertragen kann. + Modus ist die Übertragungsrate etwas höher. Man muss sicher stellen, dass die Internetverbindung die höhere Rate übertragen kann. - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. Wenn der Stereo-Modus ausgewählt wurde, dann verschwindet die Kanalselektion für den Halleffekt im Hauptfenster, da der Effekt auf beide Stereokanäle angewendet wird. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. Je höher die Audioqualität, desto höher ist die Netzwerkübertragungsrate. Man muss sicherstellen, dass die Internetverbindung die höhere Rate übertragen kann. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Der Pegel für neue Teilnehmer definiert die Fadereinstellung, wenn sich ein Teilnehmer neu mit dem Server verbindet. D.h. wenn ein neuer Fader erscheint, dann wird er auf den voreingestellten Pegel gesetzt. Eine Ausnahme bildet der Fall, dass der Teilnehmer vorher schon mal mit dem Server verbunden war und der Pegel gespeichert war. - + Leave this blank unless you need to enter the address of a central server other than the default. - + Die Zentralserveradresse ist die IP-Adresse oder URL des Zentralservers, der die Serverliste organisiert und bereitstellt. Diese Adresse wird nur benutzt, wenn die benutzerdefinierte Serverliste im Verbindungsdialog ausgewählt wird. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Die Ping-Zeit ist die Zeit, die der Audiodatenstrom benötigt, um von der Applikation zum Server und zurück zu kommen. Diese Verzögerung wird vom Netzwerk hervorgerufen. Diese Verzögerung sollte so um die 20-30 ms sein. Falls die Verzögerung größer ist (z.B. 50-60 ms), der Abstand zum Server ist zu groß oder die Internetverbindung ist nicht ausreichend. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Die Gesamtverzögerung setzt sich zusammen aus der Ping-Zeit und die Verzögerung, die durch die Puffergrößen verursacht wird. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Die Upload-Rate hängt von der Soundkartenpuffergröße und die Audiokomprimierung ab. Man muss sicher stellen, dass die Upload-Rate immer kleiner ist als die Rate, die die Internetverbindung zur Verfügung stellt (man kann die Upload-Rate des Internetproviders z.B. mit speedtest.net überprüfen). - + Low Niedrig - + Normal Normal - + High Hoch @@ -1494,23 +1498,23 @@ Standard (Nordamerika) - + preferred bevorzugt - - + + Size: Größe: - + Buffer Delay Puffergröße - + Buffer Delay: Puffergröße: @@ -1519,17 +1523,17 @@ Vordefinierte Adresse - + The selected audio device could not be used because of the following error: Das ausgewählte Audiogerät kann aus folgendem Grund nicht verwendet werden: - + The previous driver will be selected. Der vorherige Treiber wird wieder ausgewählt. - + Ok @@ -1736,17 +1740,17 @@ The Connection Setup window shows a list of available servers. Server operators can optionally list their servers by music genre. Use the List dropdown to select a genre, click on the server you want to join and press the Connect button to connect to it. Alternatively, double click on on the server name. Permanent servers (those that have been listed for longer than 48 hours) are shown in bold. - + Die Serverliste zeigt eine Liste von verfügbaren Server, die sich am Zentralserver registriert haben. Markiere einen Server von der Liste und drücke den Knopf Verbinden um eine Verbindung zu dem Server aufzubauen. Alternativ kann man auch den Server in der Liste direkt doppelklicken. Wenn ein Server belegt ist, dann wird eine Liste der verbundenen Musikern angezeigt. Server, die länger online sind (permanente Server) werden in Fettschrift dargestellt. If you know the IP address or URL of a server, you can connect to it using the Server name/Address field. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: - + Die IP-Adresse oder URL des Servers, auf der die Serversoftware läuft wird hier angegeben. Optional kann eine Portnummer angefügt werden. Diese wird hinter der IP-Adresse durch ein Doppelpunkt getrennt angegeben. Beispiel: example.org: . The field will also show a list of the most recently used server addresses. - + . Eine Liste der letzten IP-Adressen oder URLs wird gespeichert und kann nachträglich wieder ausgewählt werden. @@ -2103,7 +2107,7 @@ What you set here will appear at your fader on the mixer board when you are connected to a Jamulus server. This tag will also be shown at each client which is connected to the same server as you. - + Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem Server verbunden bist. Dieses Schild wird auch bei allen anderen Musikern, die mit dem gleichen Server verbunden sind, angezeigt. @@ -2318,7 +2322,7 @@ No Name - + Kein Name @@ -2407,12 +2411,12 @@ If the start minimized on operating system start check box is checked, the server will be started when the operating system starts up and is automatically minimized to a system task bar icon. - + Wenn diese Funktion angehakt ist, dann wird der Server automatisch mit dem Betriebssystemstart geladen und erscheint minimiert in der Systemleiste als Icon. If the Make My Server Public check box is checked, this server registers itself at the central server so that all users of the application can see the server in the connect dialog server list and connect to it. The registration of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. - + Mit dieser Funktion wird der eigene Server in der Serverliste des Zentralservers registriert so dass alle anderen Applikationsnutzer den Server in der Liste sehen können und sich mit ihm verbinden können. Die Registrierung mit dem Zentralserver wird periodisch erneuert um sicherzugehen, dass alle registrierten Server auch wirklich erreichbar sind. @@ -2456,7 +2460,7 @@ The server name identifies your server in the connect dialog server list at the clients. - + Der Servername identifiziert deinen Server in der Serverliste. @@ -2496,62 +2500,62 @@ Checkbox to turn on or off server recording - + Schalter zum aktivieren oder deaktivieren der Aufnahmefunktion Enable Recorder - + Aktiviere die Aufnahmefunktion Checked when the recorder is enabled, otherwise unchecked. The recorder will run when a session is in progress, if (set up correctly and) enabled. - + Angehakt, wenn die Aufnahmefunktion aktiviert ist. Die Aufnahme wird automatisch gestartet, wenn eine Jam-Session läuft. Current session directory text box (read-only) - + Aktuelle Session Checkbox Current Session Directory - + Verzeichnisname für das Speichern der Aufnahmen Enabled during recording and holds the current recording session directory. Disabled after recording or when the recorder is not enabled. - + Wenn die Aufnahmefunktion aktiviert ist, dann kann das Verzeichnis ausgewählt werden, in dem die Aufnahmen gespeichert werden. Recorder status label - + Recorder Statusanzeige Recorder Status - + Aufnahmestatus Displays the current status of the recorder. - + Zeigt den Aufnahmestatus an. Request new recording button - + Anfordern einer neuen Aufnahme New Recording - + Neue Aufnahme During a recording session, the button can be used to start a new recording. - + Mit diesem Knopf kann man die Aufnahme neu starten (d.h. es wird eine neue Aufnahmedatei angelegt). @@ -2589,17 +2593,17 @@ Recording - + Aufnahme Not recording - + Keine Aufnahme Not enabled - + Nicht aktiviert Manual @@ -2730,17 +2734,17 @@ Enable jam recorder - + Aktivere die Aufnahme New recording - + Neue Aufnahme Recordings folder - + Verzeichnis für die Aufnahmen diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm index 379a6b9ab4a97733be51b5de6c3a74df167994df..d418ab75bc30fc1dfc0391aa521e6ca28e6a378b 100644 GIT binary patch delta 3465 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 Z_Qr!X(bBm%w(H?>hUlEbOH2RR^nb|+G}QnA delta 3623 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 el caso del modo estéreo, no estará disponible la selección de canal para el efecto de reverberación en la ventana principal puesto que en este caso el efecto se aplicará a ambos canales. - + Audio channels combo box Selección canales audio - + Audio Quality Calidad Audio @@ -1229,12 +1229,12 @@ Selecciona la calidad de audio deseada. Se puede seleccionar una calidad baja, normal o alta. Cuanto mayor la calidad del audio, mayor la tasa de transferencia de datos de audio. Asegúrate de que la tasa de subida no excede el ancho de banda disponible en tu conexión a internet. - + Audio quality combo box Selección calidad audio - + New Client Level Nivel Cliente Nuevo @@ -1243,12 +1243,12 @@ La configuración del nivel de clientes nuevos define el nivel del fader para una nueva conexión expresado en un porcentaje. Esto es, si un cliente nuevo se conecta al servidor actual, su fader tomará el valor especificado si no se ha guardado ningún valor de una conexión anterior de ese cliente. - + New client level edit box Campo para nivel nuevo cliente - + Custom Central Server Address Dirección Personalizada Servidor Central @@ -1269,12 +1269,12 @@ Selección servidor central - + Central server address line edit Dirección servidor central - + Current Connection Status Parameter Parámetro Estado Conexión Actual @@ -1291,35 +1291,40 @@ La tasa de subida depende del tamaño actual de paquetes de audio y la configuración de compresión de audio. Asegúrate de que la tasa de subida no es mayor que la tasa disponible (comprueba la tasa de subida de tu conexión a internet, por ej. con speedtest.net). - + If this LED indicator turns red, you will not have much fun using the Si este indicador LED se vuelve rojo, no te divertirás demasiado utilizando el software - + software. . - + ASIO Setup Configuración ASIO - + Mono Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Mono-in/Stereo-out Entrada mono/Salida estéreo - + Stereo Estéreo @@ -1409,57 +1414,56 @@ Habilitar el modo - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - aumentará la tasa de datos. Asegúrate de que tu tasa de subida no excede el valor de subida disponible con tu ancho de banda de Internet. + aumentará la tasa de datos. Asegúrate de que tu tasa de subida no excede el valor de subida disponible con tu ancho de banda de Internet. - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. En modo estéreo, no habrá ninguna selección de canal para el efecto de reverb en la ventana principal porque el efecto se aplica a ambos canales en este caso. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. Cuanto mayor la calidad del audio, mayor la tasa de subida del audio. Asegúrate de que tu tasa de subida no excede el ancho de banda de tu conexión a Internet. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. Este ajuste define el nivel del fader de una nueva conexión de cliente, en porcentaje. Si se conecta un nuevo cliente al servidor actual, el nivel inicial de su fader tomará este valor si no se ha especificado anteriormente un valor para ese cliente de una conexión anterior. - + Leave this blank unless you need to enter the address of a central server other than the default. Deja esto en blanco a menos que necesites escribir la dirección de un servidor distinto a los que hay por defecto. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. El Ping es el tiempo que requiere el flujo de audio para viajar desde el cliente al servidor y volver. Este retardo lo determina la red y debería ser de unos 20-30 ms. Si este retardo es de unos 50 ms, la distancia al servidor es demasiado grande o tu conexión a internet no es óptima. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. El Retardo Total se calcula con el Ping actual y el retardo ocasionado por la configuración de buffers. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. La Tasa de Subida de Audio depende del tamaño actual de paquetes de audio y la configuración de compresión de audio. Asegúrate de que la tasa de subida no es mayor que la velocidad de subida disponible (comprueba la tasa de subida de tu conexión a internet, por ej. con speedtest.net). - + Low Baja - + Normal Normal - + High Alta @@ -1506,23 +1510,23 @@ Por defecto (Norteamérica) - + preferred aconsejado - - + + Size: Tamaño: - + Buffer Delay Retardo Buffer - + Buffer Delay: Retardo Buffer: @@ -1531,17 +1535,17 @@ Dirección Preestablecida - + The selected audio device could not be used because of the following error: El dispositivo de audio seleccionado no puede utilizarse a causa del siguiente error: - + The previous driver will be selected. Se utilizará el driver anterior. - + Ok Ok diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index 2ff66b58..97dd67c7 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -1219,12 +1219,12 @@ Dans le cas du mode de streaming stéréo, aucune sélection de canal audio pour l'effet de réverbération ne sera disponible dans la fenêtre principale puisque l'effet est appliqué sur les deux canaux dans ce cas. - + Audio channels combo box Choix déroulant de canaux audio - + Audio Quality Qualité audio @@ -1233,12 +1233,12 @@ Sélectionnez la qualité audio souhaitée. Une qualité audio faible, normale ou élevée peut être sélectionnée. Plus la qualité audio est élevée, plus le débit de données du flux audio est élevé. Assurez-vous que le débit montant actuel ne dépasse pas la bande passante disponible de votre connexion internet. - + Audio quality combo box Choix déroulant de qualité audio - + New Client Level Niveau de nouveau client @@ -1247,12 +1247,12 @@ Le paramètre de niveau de nouveau client définit le niveau de chariot d'un client nouvellement connecté en pourcentage. C'est-à-dire que si un nouveau client se connecte au serveur actuel, il aura le niveau de chariot initial spécifié si aucun autre niveau de chariot d'une connexion précédente de ce client n'était déjà stocké. - + New client level edit box Dialogue d'édition de niveau de nouveau client - + Custom Central Server Address Adresse personnalisée du serveur central @@ -1273,12 +1273,12 @@ Choix déroulant de type de serveur central par défaut - + Central server address line edit Ligne d'édition pour l'adresse du serveur central - + Current Connection Status Parameter Paramètre de l'état de la connexion actuelle @@ -1295,35 +1295,40 @@ Le débit montant dépend de la taille actuelle du paquet audio et du réglage de la compression audio. Assurez-vous que le débit montant n'est pas supérieur au débit disponible (vérifiez les capacités montant de votre connexion internet en utilisant, par exemple, speedtest.net). - + If this LED indicator turns red, you will not have much fun using the Si ce voyant devient rouge, vous n'aurez pas beaucoup de plaisir à utiliser le logiciel - + software. . - + ASIO Setup Paramètres ASIO - + Mono Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Mono-in/Stereo-out Mono-entrée/stéréo-sortie - + Stereo Stéréo @@ -1413,57 +1418,52 @@ - - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - - - - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Leave this blank unless you need to enter the address of a central server other than the default. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Low Basse - + Normal Normale - + High Haute @@ -1510,23 +1510,23 @@ Défaut (Amérique du Nord) - + preferred préféré - - + + Size: Taille : - + Buffer Delay Délai de temporisation - + Buffer Delay: Délai de temporisation : @@ -1535,17 +1535,17 @@ Adresse prédéfinie - + The selected audio device could not be used because of the following error: Le périphérique audio sélectionné n'a pas pu être utilisé en raison de l'erreur suivante : - + The previous driver will be selected. Le pilote précédent sera sélectionné. - + Ok Ok diff --git a/src/res/translation/translation_it_IT.ts b/src/res/translation/translation_it_IT.ts index 77e82dad..51905b57 100644 --- a/src/res/translation/translation_it_IT.ts +++ b/src/res/translation/translation_it_IT.ts @@ -1195,12 +1195,12 @@ Nel caso in cui si una lo streaming stereo, non sarà possibile selezionare su quale canale far intervenire il riverbero inquanto sarà applicato ad entrambi i canali Left e Right. - + Audio channels combo box Combo Box Canali Audio - + Audio Quality Qualità Audio @@ -1209,12 +1209,12 @@ Selezionare la qualità audio desiderata. Si può scegliere tra Low (Bassa), normal (standard), high (Alta). Maggiore è la qualità settata più alto sarà il valore di streaming audio. Accertarsi di avere sufficiente banda in upload. - + Audio quality combo box Combo Box Qualità Audio - + New Client Level Livello Volume Nuovo Client @@ -1223,12 +1223,12 @@ Settare il livello per il nuovo client definisce il livello, in percentuale, di ingresso per un nuovo utente che si connette. Un nuovo client che si connette alla sessione assume un volume uguale a quello settato se non ci sono livelli memorizzati per questo client in precedenti connessioni con lo stesso. - + New client level edit box Box per modificare il livello di ingresso di un nuovo client - + Custom Central Server Address Indirizzo personalizzato del Server Centrale @@ -1249,12 +1249,12 @@ Box per l'indirizzo del Server Centrale - + Central server address line edit Modifica indirizzo Server Centrale - + Current Connection Status Parameter Parametri attuali di connessione @@ -1271,35 +1271,40 @@ La velocità di trasferimento dati in upload dipende dalla dimensione dei pacchetti audio e dai settaggi di compressione dell'audio. Assicurarsi di non usare valori di upstream non adeguati alla propria connessione (è possibile verificare tali valori mediante un test sulla propria connessione, usando per esempio il sito speedtest.net). - + If this LED indicator turns red, you will not have much fun using the Se questo indicatore a LED diventa rosso non si godrà di un esperienza ottimale del programma - + software. . - + ASIO Setup ASIO Setup - + Mono Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Mono-in/Stereo-out Mono-in/Stereo-out - + Stereo Stereo @@ -1389,78 +1394,73 @@ - - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - - - - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Leave this blank unless you need to enter the address of a central server other than the default. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Low Low - + Normal Normal - + High High - + preferred consigliato - - + + Size: Livello: - + Buffer Delay Buffer Delay - + Buffer Delay: Buffer Delay: @@ -1469,17 +1469,17 @@ Indirizzo Preferito - + The selected audio device could not be used because of the following error: La scheda audio selezionata non può essere usata per i seguenti motivi: - + The previous driver will be selected. Sarà ripristinato il driver precedentemente usato. - + Ok Ok diff --git a/src/res/translation/translation_nl_NL.ts b/src/res/translation/translation_nl_NL.ts index 0cca28e1..fc317978 100644 --- a/src/res/translation/translation_nl_NL.ts +++ b/src/res/translation/translation_nl_NL.ts @@ -1187,12 +1187,12 @@ In het geval van de stereo streaming-mode is er geen audiokanaalselectie voor het galmeffect beschikbaar op het hoofdvenster, aangezien het effect in dit geval op beide kanalen wordt toegepast. - + Audio channels combo box Audiokanalen combo-box - + Audio Quality Audiokwaliteit @@ -1201,12 +1201,12 @@ Selecteer de gewenste audiokwaliteit. Er kan een lage, normale of hoge audiokwaliteit worden geselecteerd. Hoe hoger de audiokwaliteit, hoe meer audiodata moet worden verstuurd. Zorg ervoor dat de vereiste bandbreedte niet hoger is dan de beschikbare bandbreedte van uw internetverbinding. - + Audio quality combo box Audiokwaliteit combo-box - + New Client Level Nieuw clientniveau @@ -1215,12 +1215,12 @@ De nieuwe instelling van het clientniveau definieert het faderniveau van een nieuwe verbonden client in procenten. D.w.z. als een nieuwe client verbinding maakt met de server, krijgt hij het opgegeven initiële faderniveau als er in de vorige verbinding niets is opgeslagen. - + New client level edit box Nieuw bewerkingsvak op clientniveau - + Custom Central Server Address @@ -1237,12 +1237,12 @@ Centraal serveradrestype combo box - + Central server address line edit Centraal serveradres bewerking van de lijn - + Current Connection Status Parameter Huidige verbindingsstatus-parameter @@ -1259,35 +1259,40 @@ De upstreamsnelheid is afhankelijk van de huidige grootte van het audiopakket en de instelling van de audiocompressie. Zorg ervoor dat de upstreamsnelheid niet hoger is dan de beschikbare snelheid (controleer de upstreammogelijkheden van uw internetverbinding door bijvoorbeeld speedtest.net te gebruiken). - + If this LED indicator turns red, you will not have much fun using the Als deze LED-indicator rood wordt, zult u niet veel plezier beleven aan het gebruik van de - + software. software. - + ASIO Setup ASIO-instelling - + Mono Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Mono-in/Stereo-out Mono-in/Stereo-out - + Stereo Stereo @@ -1377,57 +1382,52 @@ - - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - - - - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Leave this blank unless you need to enter the address of a central server other than the default. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Low Laag - + Normal Normaal - + High Hoog @@ -1470,38 +1470,38 @@ Standaard (Noord-Amerika) - + preferred gewenst - - + + Size: Size: - + Buffer Delay Buffervertraging - + Buffer Delay: Buffervertraging: - + The selected audio device could not be used because of the following error: Het geselecteerde audioapparaat kon niet worden gebruikt vanwege de volgende fout: - + The previous driver will be selected. Het vorige stuurprogramma wordt geselecteerd. - + Ok Ok diff --git a/src/res/translation/translation_pl_PL.ts b/src/res/translation/translation_pl_PL.ts index 792238c2..9521afb6 100644 --- a/src/res/translation/translation_pl_PL.ts +++ b/src/res/translation/translation_pl_PL.ts @@ -950,37 +950,42 @@ - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Audio channels combo box - + Audio Quality - + Audio quality combo box - + New Client Level - + New client level edit box - + Central server address line edit - + Current Connection Status Parameter @@ -1010,40 +1015,40 @@ - + Custom Central Server Address - + If this LED indicator turns red, you will not have much fun using the - + software. - + ASIO Setup - + Mono - + Mono-in/Stereo-out - + Stereo @@ -1133,57 +1138,52 @@ - - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - - - - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Leave this blank unless you need to enter the address of a central server other than the default. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Low - + Normal - + High @@ -1218,38 +1218,38 @@ - + preferred - - + + Size: - + Buffer Delay - + Buffer Delay: - + The selected audio device could not be used because of the following error: - + The previous driver will be selected. - + Ok diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts index 47030fde..837767bb 100644 --- a/src/res/translation/translation_pt_PT.ts +++ b/src/res/translation/translation_pt_PT.ts @@ -1207,12 +1207,12 @@ No modo de transmissão estéreo, nenhuma seleção de canal de áudio para o efeito de reverberação estará disponível na janela principal, pois o efeito é aplicado em ambos os canais. - + Audio channels combo box Seletor de canais áudio - + Audio Quality Qualidade de Áudio @@ -1221,12 +1221,12 @@ Selecione a qualidade de áudio desejada. Pode ser selecionada uma qualidade de áudio baixa, normal ou alta. Quanto maior a qualidade do áudio, maior a taxa de dados do fluxo de áudio. Verifique que a taxa de transmissão não excede a largura de banda disponível da sua ligação à Internet. - + Audio quality combo box Seletor de qualidade áudio - + New Client Level Nível de Novo Cliente @@ -1235,12 +1235,12 @@ A configuração de nível de novo cliente define, em percentagem, o nível do fader de um novo cliente ligado. Por exemplo, se um cliente novo se ligar ao servidor atual, o seu canal terá o nível inicial do fader especificado, excepto quando um diferente nível do fader de uma ligação anterior desse mesmo cliente já tenha sido definido. - + New client level edit box Caixa de edição no nível de novo cliente - + Custom Central Server Address Endereço do Servidor Central Personalizado @@ -1261,12 +1261,12 @@ Seletor de servidor central padrão - + Central server address line edit Caixa de edição do endereço do servidor central - + Current Connection Status Parameter Parâmetros do Estado da Ligação @@ -1283,35 +1283,40 @@ A taxa de transmissão depende do tamanho do pacote de áudio e da configuração de compactação de áudio. Verifique se a taxa de transmissão não é maior que a taxa disponível (verifique a taxa de upload da sua ligação à Internet usando, por exemplo, o speedtest.net). - + If this LED indicator turns red, you will not have much fun using the Se este indicador LED ficar vermelho, não se irá divertir muito ao usar o - + software. . - + ASIO Setup Configuração ASIO - + Mono Mono - + + mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. + + + + Mono-in/Stereo-out Entrada Mono/Saída Estéreo - + Stereo Estéreo @@ -1401,57 +1406,52 @@ - - mode will increase your stream's data rate. Make sure your upload rate does not exceed the available upload speed of your internet connection. - - - - + In stereo streaming mode, no audio channel selection for the reverb effect will be available on the main window since the effect is applied to both channels in this case. - + The higher the audio quality, the higher your audio stream's data rate. Make sure your upload rate does not exceed the available bandwidth of your internet connection. - + This setting defines the fader level of a newly connected client in percent. If a new client connects to the current server, they will get the specified initial fader level if no other fader level from a previous connection of that client was already stored. - + Leave this blank unless you need to enter the address of a central server other than the default. - + The Ping Time is the time required for the audio stream to travel from the client to the server and back again. This delay is introduced by the network and should be about 20-30 ms. If this delay is higher than about 50 ms, your distance to the server is too large or your internet connection is not sufficient. - + Overall Delay is calculated from the current Ping Time and the delay introduced by the current buffer settings. - + Audio Upstream Rate depends on the current audio packet size and compression setting. Make sure that the upstream rate is not higher than your available internet upload speed (check this with a service such as speedtest.net. - + Low Baixa - + Normal Normal - + High Alta @@ -1498,38 +1498,38 @@ Servidor Padrão (America do Norte) - + preferred preferido - - + + Size: Tamanho: - + Buffer Delay Atraso do buffer - + Buffer Delay: Atraso do buffer: - + The selected audio device could not be used because of the following error: O dispositivo de áudio selecionado não pôde ser usado devido ao seguinte erro: - + The previous driver will be selected. O driver anterior será selecionado. - + Ok Ok From 33073658c6c277b71cc2a0dd46765e1bed03c35d Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 15:51:54 +0200 Subject: [PATCH 11/14] show channel numbers if --ctrlmidich is used (#241, #95) --- ChangeLog | 3 ++- src/clientdlg.cpp | 11 +++++++++++ src/clientdlg.h | 2 ++ src/main.cpp | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3bde676a..7ee4c8d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,8 @@ - avoid showing IP address if no name in the musician profile is given (#316) +- show channel numbers if --ctrlmidich is used (#241, #95) + - bug fix: on MacOS declare an activity to ensure the process doesn't get throttled by OS level Nap, Sleep, and Thread Priority systems, coded by AronVietti (#23) @@ -23,7 +25,6 @@ - 3.5.5 (2020-05-26) - added banjo/mandolin instrument icons created by atsampson (#283) diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 2fbefba7..159e5ab1 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -29,6 +29,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP, CSettings* pNSetP, const QString& strConnOnStartupAddress, + const int iCtrlMIDIChannel, const bool bNewShowComplRegConnList, const bool bShowAnalyzerConsole, QWidget* parent, @@ -37,6 +38,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP, pClient ( pNCliP ), pSettings ( pNSetP ), bConnectDlgWasShown ( false ), + bMIDICtrlUsed ( iCtrlMIDIChannel != INVALID_MIDI_CH ), ClientSettingsDlg ( pNCliP, parent, Qt::Window ), ChatDlg ( parent, Qt::Window ), ConnectDlg ( pNCliP, bNewShowComplRegConnList, parent, Qt::Dialog ), @@ -812,6 +814,15 @@ void CClientDlg::OnLicenceRequired ( ELicenceType eLicenceType ) void CClientDlg::OnConClientListMesReceived ( CVector vecChanInfo ) { + // show channel numbers if --ctrlmidich is used (#241, #95) + if ( bMIDICtrlUsed ) + { + for ( int i = 0; i < vecChanInfo.Size(); i++ ) + { + vecChanInfo[i].strName.prepend ( QString().setNum ( vecChanInfo[i].iChanID ) + ":" ); + } + } + // update mixer board with the additional client infos MainMixerBoard->ApplyNewConClientList ( vecChanInfo ); } diff --git a/src/clientdlg.h b/src/clientdlg.h index a54d22f5..0040db8a 100755 --- a/src/clientdlg.h +++ b/src/clientdlg.h @@ -72,6 +72,7 @@ public: CClientDlg ( CClient* pNCliP, CSettings* pNSetP, const QString& strConnOnStartupAddress, + const int iCtrlMIDIChannel, const bool bNewShowComplRegConnList, const bool bShowAnalyzerConsole, QWidget* parent = nullptr, @@ -96,6 +97,7 @@ protected: bool bConnected; bool bConnectDlgWasShown; + bool bMIDICtrlUsed; QTimer TimerSigMet; QTimer TimerBuffersLED; QTimer TimerStatus; diff --git a/src/main.cpp b/src/main.cpp index 62d90d02..0fdaa607 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -608,6 +608,7 @@ int main ( int argc, char** argv ) CClientDlg ClientDlg ( &Client, &Settings, strConnOnStartupAddress, + iCtrlMIDIChannel, bShowComplRegConnList, bShowAnalyzerConsole, nullptr, From 552b3ba5f310a5cffdc7931f66cab4fefe769dc4 Mon Sep 17 00:00:00 2001 From: Peter L Jones Date: Wed, 3 Jun 2020 22:31:52 +0100 Subject: [PATCH 12/14] #315 Provide Audacity "list of file" for session --- ChangeLog | 2 +- src/recorder/creaperproject.h | 21 --------- src/recorder/cwavestream.h | 25 ++++++++++ src/recorder/jamrecorder.cpp | 86 +++++++++++++++++++++++++---------- src/recorder/jamrecorder.h | 2 + 5 files changed, 91 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bde676a..9f584bac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,7 +19,7 @@ - bug fix: on MacOS declare an activity to ensure the process doesn't get throttled by OS level Nap, Sleep, and Thread Priority systems, coded by AronVietti (#23) - +- add Audacity "list of files" writer to jam recorder, by pljones (#315) diff --git a/src/recorder/creaperproject.h b/src/recorder/creaperproject.h index be6f190a..1fbb57ea 100755 --- a/src/recorder/creaperproject.h +++ b/src/recorder/creaperproject.h @@ -32,21 +32,6 @@ namespace recorder { -struct STrackItem -{ - STrackItem(int numAudioChannels, qint64 startFrame, qint64 frameCount, QString fileName) : - numAudioChannels(numAudioChannels), - startFrame(startFrame), - frameCount(frameCount), - fileName(fileName) - { - } - int numAudioChannels; - qint64 startFrame; - qint64 frameCount; - QString fileName; -}; - class CReaperItem : public QObject { Q_OBJECT @@ -59,12 +44,6 @@ private: const QUuid iguid = QUuid::createUuid(); const QUuid guid = QUuid::createUuid(); QString out; - - inline QString secondsAt48K( const qint64 frames, - const int frameSize ) - { - return QString::number( static_cast( frames * frameSize ) / 48000, 'f', 14 ); - } }; class CReaperTrack : public QObject diff --git a/src/recorder/cwavestream.h b/src/recorder/cwavestream.h index f3ceab66..6d8f1ec8 100755 --- a/src/recorder/cwavestream.h +++ b/src/recorder/cwavestream.h @@ -27,6 +27,31 @@ namespace recorder { +inline QString secondsAt48K( const qint64 frames, + const int frameSize ) +{ + return QString::number( static_cast( frames * frameSize ) / 48000, 'f', 14 ); +} + +struct STrackItem +{ + STrackItem ( int numAudioChannels, + qint64 startFrame, + qint64 frameCount, + QString fileName ) : + numAudioChannels ( numAudioChannels ), + startFrame ( startFrame ), + frameCount ( frameCount ), + fileName ( fileName ) + { + } + + int numAudioChannels; + qint64 startFrame; + qint64 frameCount; + QString fileName; +}; + class HdrRiff { public: diff --git a/src/recorder/jamrecorder.cpp b/src/recorder/jamrecorder.cpp index d8dc9833..40e10321 100755 --- a/src/recorder/jamrecorder.cpp +++ b/src/recorder/jamrecorder.cpp @@ -381,35 +381,15 @@ void CJamRecorder::OnEnd() isRecording = false; currentSession->End(); - QString reaperProjectFileName = currentSession->SessionDir().filePath(currentSession->Name().append(".rpp")); - const QFileInfo fi(reaperProjectFileName); - - if (fi.exists()) - { - qWarning() << "CJamRecorder::OnEnd():" << fi.absolutePath() << "exists and will not be overwritten."; - reaperProjectFileName = QString::Null(); - } - else - { - QFile outf (reaperProjectFileName); - if ( outf.open(QFile::WriteOnly) ) - { - QTextStream out(&outf); - out << CReaperProject( currentSession->Tracks(), iServerFrameSizeSamples ).toString() << endl; - qDebug() << "Session RPP:" << reaperProjectFileName; - } - else - { - qWarning() << "CJamRecorder::OnEnd():" << fi.absolutePath() << "could not be created, no RPP written."; - reaperProjectFileName = QString::Null(); - } - } + ReaperProjectFromCurrentSession(); + AudacityLofFromCurrentSession(); delete currentSession; currentSession = nullptr; } } + /** * @brief CJamRecorder::OnTriggerSession End one session and start a new one */ @@ -432,6 +412,66 @@ void CJamRecorder::OnAboutToQuit() thisThread->exit(); } +void CJamRecorder::ReaperProjectFromCurrentSession() +{ + QString reaperProjectFileName = currentSession->SessionDir().filePath(currentSession->Name().append(".rpp")); + const QFileInfo fi(reaperProjectFileName); + + if (fi.exists()) + { + qWarning() << "CJamRecorder::ReaperProjectFromCurrentSession():" << fi.absolutePath() << "exists and will not be overwritten."; + } + else + { + QFile outf (reaperProjectFileName); + if ( outf.open(QFile::WriteOnly) ) + { + QTextStream out(&outf); + out << CReaperProject( currentSession->Tracks(), iServerFrameSizeSamples ).toString() << endl; + qDebug() << "Session RPP:" << reaperProjectFileName; + } + else + { + qWarning() << "CJamRecorder::ReaperProjectFromCurrentSession():" << fi.absolutePath() << "could not be created, no RPP written."; + } + } +} + +void CJamRecorder::AudacityLofFromCurrentSession() +{ + QString audacityLofFileName = currentSession->SessionDir().filePath(currentSession->Name().append(".lof")); + const QFileInfo fi(audacityLofFileName); + + if (fi.exists()) + { + qWarning() << "CJamRecorder::AudacityLofFromCurrentSession():" << fi.absolutePath() << "exists and will not be overwritten."; + } + else + { + QFile outf (audacityLofFileName); + if ( outf.open(QFile::WriteOnly) ) + { + QTextStream sOut(&outf); + + foreach ( auto trackName, currentSession->Tracks().keys() ) + { + foreach ( auto item, currentSession->Tracks()[trackName] ) { + QFileInfo fi ( item.fileName ); + sOut << "file " << '"' << fi.fileName() << '"'; + sOut << " offset " << secondsAt48K( item.startFrame, iServerFrameSizeSamples ) << endl; + } + } + + sOut.flush(); + qDebug() << "Session LOF:" << audacityLofFileName; + } + else + { + qWarning() << "CJamRecorder::AudacityLofFromCurrentSession():" << fi.absolutePath() << "could not be created, no LOF written."; + } + } +} + /** * @brief CJamRecorder::SessionDirToReaper Replica of CJamRecorder::OnEnd() but using the directory contents to construct the CReaperProject object * @param strSessionDirName diff --git a/src/recorder/jamrecorder.h b/src/recorder/jamrecorder.h index 0dec305f..b0e2651c 100755 --- a/src/recorder/jamrecorder.h +++ b/src/recorder/jamrecorder.h @@ -159,6 +159,8 @@ public: private: void Start(); + void ReaperProjectFromCurrentSession(); + void AudacityLofFromCurrentSession(); QDir recordBaseDir; From 0e2185ae014358c251c653cf98954ee2a126c19f Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 17:19:25 +0200 Subject: [PATCH 13/14] using Qt5 connections instead of the old Qt4 ones (just a subset converted right now, more TODO) --- src/audiomixerboard.cpp | 17 ++-- src/channel.cpp | 82 ++++++++---------- src/chatdlg.cpp | 13 ++- src/client.cpp | 119 +++++++++++--------------- src/clientdlg.cpp | 179 ++++++++++++++++++---------------------- 5 files changed, 180 insertions(+), 230 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 4e28eef4..215c2fe1 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -174,18 +174,17 @@ CChannelFader::CChannelFader ( QWidget* pNW, // Connections ------------------------------------------------------------- - QObject::connect ( pFader, SIGNAL ( valueChanged ( int ) ), - this, SLOT ( OnLevelValueChanged ( int ) ) ); + QObject::connect ( pFader, &QSlider::valueChanged, + this, &CChannelFader::OnLevelValueChanged ); - QObject::connect ( pPan, SIGNAL ( valueChanged ( int ) ), - this, SLOT ( OnPanValueChanged ( int ) ) ); + QObject::connect ( pPan, &QDial::valueChanged, + this, &CChannelFader::OnPanValueChanged ); - QObject::connect ( pcbMute, SIGNAL ( stateChanged ( int ) ), - this, SLOT ( OnMuteStateChanged ( int ) ) ); + QObject::connect ( pcbMute, &QCheckBox::stateChanged, + this, &CChannelFader::OnMuteStateChanged ); - QObject::connect ( pcbSolo, - SIGNAL ( stateChanged ( int ) ), - SIGNAL ( soloStateChanged ( int ) ) ); + QObject::connect ( pcbSolo, &QCheckBox::stateChanged, + this, &CChannelFader::soloStateChanged ); } void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign ) diff --git a/src/channel.cpp b/src/channel.cpp index 4e6aa136..b1b38241 100755 --- a/src/channel.cpp +++ b/src/channel.cpp @@ -60,70 +60,56 @@ CChannel::CChannel ( const bool bNIsServer ) : qRegisterMetaType > ( "CVector" ); qRegisterMetaType ( "CHostAddress" ); - QObject::connect ( &Protocol, - SIGNAL ( MessReadyForSending ( CVector ) ), - this, SLOT ( OnSendProtMessage ( CVector ) ) ); + QObject::connect ( &Protocol, &CProtocol::MessReadyForSending, + this, &CChannel::OnSendProtMessage ); - QObject::connect ( &Protocol, - SIGNAL ( ChangeJittBufSize ( int ) ), - this, SLOT ( OnJittBufSizeChange ( int ) ) ); + QObject::connect ( &Protocol, &CProtocol::ChangeJittBufSize, + this, &CChannel::OnJittBufSizeChange ); - QObject::connect ( &Protocol, - SIGNAL ( ReqJittBufSize() ), - SIGNAL ( ReqJittBufSize() ) ); + QObject::connect ( &Protocol, &CProtocol::ReqJittBufSize, + this, &CChannel::ReqJittBufSize ); - QObject::connect ( &Protocol, - SIGNAL ( ReqChanInfo() ), - SIGNAL ( ReqChanInfo() ) ); + QObject::connect ( &Protocol, &CProtocol::ReqChanInfo, + this, &CChannel::ReqChanInfo ); - QObject::connect ( &Protocol, - SIGNAL ( ReqConnClientsList() ), - SIGNAL ( ReqConnClientsList() ) ); + QObject::connect ( &Protocol, &CProtocol::ReqConnClientsList, + this, &CChannel::ReqConnClientsList ); - QObject::connect ( &Protocol, - SIGNAL ( ConClientListMesReceived ( CVector ) ), - SIGNAL ( ConClientListMesReceived ( CVector ) ) ); + QObject::connect ( &Protocol, &CProtocol::ConClientListMesReceived, + this, &CChannel::ConClientListMesReceived ); - QObject::connect ( &Protocol, SIGNAL ( ChangeChanGain ( int, double ) ), - this, SLOT ( OnChangeChanGain ( int, double ) ) ); + QObject::connect ( &Protocol, &CProtocol::ChangeChanGain, + this, &CChannel::OnChangeChanGain ); - QObject::connect ( &Protocol, SIGNAL ( ChangeChanPan ( int, double ) ), - this, SLOT ( OnChangeChanPan ( int, double ) ) ); + QObject::connect ( &Protocol, &CProtocol::ChangeChanPan, + this, &CChannel::OnChangeChanPan ); - QObject::connect ( &Protocol, - SIGNAL ( ClientIDReceived ( int ) ), - SIGNAL ( ClientIDReceived ( int ) ) ); + QObject::connect ( &Protocol, &CProtocol::ClientIDReceived, + this, &CChannel::ClientIDReceived ); - QObject::connect ( &Protocol, - SIGNAL ( MuteStateHasChangedReceived ( int, bool ) ), - SIGNAL ( MuteStateHasChangedReceived ( int, bool ) ) ); + QObject::connect ( &Protocol, &CProtocol::MuteStateHasChangedReceived, + this, &CChannel::MuteStateHasChangedReceived ); - QObject::connect ( &Protocol, SIGNAL ( ChangeChanInfo ( CChannelCoreInfo ) ), - this, SLOT ( OnChangeChanInfo ( CChannelCoreInfo ) ) ); + QObject::connect ( &Protocol, &CProtocol::ChangeChanInfo, + this, &CChannel::OnChangeChanInfo ); - QObject::connect ( &Protocol, - SIGNAL ( ChatTextReceived ( QString ) ), - SIGNAL ( ChatTextReceived ( QString ) ) ); + QObject::connect ( &Protocol, &CProtocol::ChatTextReceived, + this, &CChannel::ChatTextReceived ); - QObject::connect ( &Protocol, - SIGNAL ( NetTranspPropsReceived ( CNetworkTransportProps ) ), - this, SLOT ( OnNetTranspPropsReceived ( CNetworkTransportProps ) ) ); + QObject::connect ( &Protocol, &CProtocol::NetTranspPropsReceived, + this, &CChannel::OnNetTranspPropsReceived ); - QObject::connect ( &Protocol, - SIGNAL ( ReqNetTranspProps() ), - this, SLOT ( OnReqNetTranspProps() ) ); + QObject::connect ( &Protocol, &CProtocol::ReqNetTranspProps, + this, &CChannel::OnReqNetTranspProps ); - QObject::connect ( &Protocol, - SIGNAL ( LicenceRequired ( ELicenceType ) ), - SIGNAL ( LicenceRequired ( ELicenceType ) ) ); + QObject::connect ( &Protocol, &CProtocol::LicenceRequired, + this, &CChannel::LicenceRequired ); - QObject::connect ( &Protocol, - SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ), - SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) ); + QObject::connect ( &Protocol, &CProtocol::VersionAndOSReceived, + this, &CChannel::VersionAndOSReceived ); - QObject::connect ( &Protocol, - SIGNAL ( ReqChannelLevelList ( bool ) ), - this, SLOT ( OnReqChannelLevelList ( bool ) ) ); + QObject::connect ( &Protocol, &CProtocol::ReqChannelLevelList, + this, &CChannel::OnReqChannelLevelList ); } bool CChannel::ProtocolIsEnabled() diff --git a/src/chatdlg.cpp b/src/chatdlg.cpp index 0a1554f3..754c2ed9 100755 --- a/src/chatdlg.cpp +++ b/src/chatdlg.cpp @@ -54,15 +54,14 @@ CChatDlg::CChatDlg ( QWidget* parent, Qt::WindowFlags f ) : // Connections ------------------------------------------------------------- - QObject::connect ( edtLocalInputText, - SIGNAL ( textChanged ( const QString& ) ), - this, SLOT ( OnLocalInputTextTextChanged ( const QString& ) ) ); + QObject::connect ( edtLocalInputText, &QLineEdit::textChanged, + this, &CChatDlg::OnLocalInputTextTextChanged ); - QObject::connect ( edtLocalInputText, SIGNAL ( returnPressed() ), - this, SLOT ( OnLocalInputTextReturnPressed() ) ); + QObject::connect ( edtLocalInputText, &QLineEdit::returnPressed, + this, &CChatDlg::OnLocalInputTextReturnPressed ); - QObject::connect ( butClear, SIGNAL ( pressed() ), - this, SLOT ( OnClearPressed() ) ); + QObject::connect ( butClear, &QPushButton::pressed, + this, &CChatDlg::OnClearPressed ); } void CChatDlg::OnLocalInputTextTextChanged ( const QString& strNewText ) diff --git a/src/client.cpp b/src/client.cpp index e1b3c419..d0e3c58a 100755 --- a/src/client.cpp +++ b/src/client.cpp @@ -126,102 +126,83 @@ CClient::CClient ( const quint16 iPortNumber, // Connections ------------------------------------------------------------- // connections for the protocol mechanism - QObject::connect ( &Channel, - SIGNAL ( MessReadyForSending ( CVector ) ), - this, SLOT ( OnSendProtMessage ( CVector ) ) ); + QObject::connect ( &Channel, &CChannel::MessReadyForSending, + this, &CClient::OnSendProtMessage ); - QObject::connect ( &Channel, - SIGNAL ( DetectedCLMessage ( CVector, int, CHostAddress ) ), - this, SLOT ( OnDetectedCLMessage ( CVector, int, CHostAddress ) ) ); + QObject::connect ( &Channel, &CChannel::DetectedCLMessage, + this, &CClient::OnDetectedCLMessage ); - QObject::connect ( &Channel, SIGNAL ( ReqJittBufSize() ), - this, SLOT ( OnReqJittBufSize() ) ); + QObject::connect ( &Channel, &CChannel::ReqJittBufSize, + this, &CClient::OnReqJittBufSize ); - QObject::connect ( &Channel, SIGNAL ( JittBufSizeChanged ( int ) ), - this, SLOT ( OnJittBufSizeChanged ( int ) ) ); + QObject::connect ( &Channel, &CChannel::JittBufSizeChanged, + this, &CClient::OnJittBufSizeChanged ); - QObject::connect ( &Channel, SIGNAL ( ReqChanInfo() ), - this, SLOT ( OnReqChanInfo() ) ); + QObject::connect ( &Channel, &CChannel::ReqChanInfo, + this, &CClient::OnReqChanInfo ); - QObject::connect ( &Channel, - SIGNAL ( ConClientListMesReceived ( CVector ) ), - SIGNAL ( ConClientListMesReceived ( CVector ) ) ); + QObject::connect ( &Channel, &CChannel::ConClientListMesReceived, + this, &CClient::ConClientListMesReceived ); - QObject::connect ( &Channel, - SIGNAL ( Disconnected() ), - SIGNAL ( Disconnected() ) ); + QObject::connect ( &Channel, &CChannel::Disconnected, + this, &CClient::Disconnected ); - QObject::connect ( &Channel, SIGNAL ( NewConnection() ), - this, SLOT ( OnNewConnection() ) ); + QObject::connect ( &Channel, &CChannel::NewConnection, + this, &CClient::OnNewConnection ); - QObject::connect ( &Channel, - SIGNAL ( ChatTextReceived ( QString ) ), - SIGNAL ( ChatTextReceived ( QString ) ) ); + QObject::connect ( &Channel, &CChannel::ChatTextReceived, + this, &CClient::ChatTextReceived ); - QObject::connect ( &Channel, - SIGNAL ( ClientIDReceived ( int ) ), - SIGNAL ( ClientIDReceived ( int ) ) ); + QObject::connect ( &Channel, &CChannel::ClientIDReceived, + this, &CClient::ClientIDReceived ); - QObject::connect ( &Channel, - SIGNAL ( MuteStateHasChangedReceived ( int, bool ) ), - SIGNAL ( MuteStateHasChangedReceived ( int, bool ) ) ); + QObject::connect ( &Channel, &CChannel::MuteStateHasChangedReceived, + this, &CClient::MuteStateHasChangedReceived ); - QObject::connect ( &Channel, - SIGNAL ( LicenceRequired ( ELicenceType ) ), - SIGNAL ( LicenceRequired ( ELicenceType ) ) ); + QObject::connect ( &Channel, &CChannel::LicenceRequired, + this, &CClient::LicenceRequired ); - QObject::connect ( &Channel, - SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ), - SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) ); + QObject::connect ( &Channel, &CChannel::VersionAndOSReceived, + this, &CClient::VersionAndOSReceived ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLMessReadyForSending ( CHostAddress, CVector ) ), - this, SLOT ( OnSendCLProtMessage ( CHostAddress, CVector ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLMessReadyForSending, + this, &CClient::OnSendCLProtMessage ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLServerListReceived ( CHostAddress, CVector ) ), - SIGNAL ( CLServerListReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLServerListReceived, + this, &CClient::CLServerListReceived ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLConnClientsListMesReceived ( CHostAddress, CVector ) ), - SIGNAL ( CLConnClientsListMesReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLConnClientsListMesReceived, + this, &CClient::CLConnClientsListMesReceived ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLPingReceived ( CHostAddress, int ) ), - this, SLOT ( OnCLPingReceived ( CHostAddress, int ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLPingReceived, + this, &CClient::OnCLPingReceived ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLPingWithNumClientsReceived ( CHostAddress, int, int ) ), - this, SLOT ( OnCLPingWithNumClientsReceived ( CHostAddress, int, int ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLPingWithNumClientsReceived, + this, &CClient::OnCLPingWithNumClientsReceived ); - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLDisconnection ( CHostAddress ) ), - this, SLOT ( OnCLDisconnection ( CHostAddress ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLDisconnection , + this, &CClient::OnCLDisconnection ); #ifdef ENABLE_CLIENT_VERSION_AND_OS_DEBUGGING - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLVersionAndOSReceived ( CHostAddress, COSUtil::EOpSystemType, QString ) ), - SIGNAL ( CLVersionAndOSReceived ( CHostAddress, COSUtil::EOpSystemType, QString ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLVersionAndOSReceived, + this, &CClient::CLVersionAndOSReceived ); #endif - QObject::connect ( &ConnLessProtocol, - SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector ) ), - SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( &ConnLessProtocol, &CProtocol::CLChannelLevelListReceived, + this, &CClient::CLChannelLevelListReceived ); // other - QObject::connect ( &Sound, SIGNAL ( ReinitRequest ( int ) ), - this, SLOT ( OnSndCrdReinitRequest ( int ) ) ); + QObject::connect ( &Sound, &CSound::ReinitRequest, + this, &CClient::OnSndCrdReinitRequest ); - QObject::connect ( &Sound, - SIGNAL ( ControllerInFaderLevel ( int, int ) ), - SIGNAL ( ControllerInFaderLevel ( int, int ) ) ); + QObject::connect ( &Sound, &CSound::ControllerInFaderLevel, + this, &CClient::ControllerInFaderLevel ); - QObject::connect ( &Socket, SIGNAL ( InvalidPacketReceived ( CHostAddress ) ), - this, SLOT ( OnInvalidPacketReceived ( CHostAddress ) ) ); + QObject::connect ( &Socket, &CHighPrioSocket::InvalidPacketReceived, + this, &CClient::OnInvalidPacketReceived ); - QObject::connect ( pSignalHandler, - SIGNAL ( HandledSignal ( int ) ), - this, SLOT ( OnHandledSignal ( int ) ) ); + QObject::connect ( pSignalHandler, &CSignalHandler::HandledSignal, + this, &CClient::OnHandledSignal ); // start the socket (it is important to start the socket after all diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 159e5ab1..0aa4059f 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -402,158 +402,143 @@ CClientDlg::CClientDlg ( CClient* pNCliP, // Connections ------------------------------------------------------------- // push buttons - QObject::connect ( butConnect, SIGNAL ( clicked() ), - this, SLOT ( OnConnectDisconBut() ) ); + QObject::connect ( butConnect, &QPushButton::clicked, + this, &CClientDlg::OnConnectDisconBut ); // check boxes - QObject::connect ( chbSettings, SIGNAL ( stateChanged ( int ) ), - this, SLOT ( OnSettingsStateChanged ( int ) ) ); + QObject::connect ( chbSettings, &QCheckBox::stateChanged, + this, &CClientDlg::OnSettingsStateChanged ); - QObject::connect ( chbChat, SIGNAL ( stateChanged ( int ) ), - this, SLOT ( OnChatStateChanged ( int ) ) ); + QObject::connect ( chbChat, &QCheckBox::stateChanged, + this, &CClientDlg::OnChatStateChanged ); - QObject::connect ( chbLocalMute, SIGNAL ( stateChanged ( int ) ), - this, SLOT ( OnLocalMuteStateChanged ( int ) ) ); + QObject::connect ( chbLocalMute, &QCheckBox::stateChanged, + this, &CClientDlg::OnLocalMuteStateChanged ); // timers - QObject::connect ( &TimerSigMet, SIGNAL ( timeout() ), - this, SLOT ( OnTimerSigMet() ) ); + QObject::connect ( &TimerSigMet, &QTimer::timeout, + this, &CClientDlg::OnTimerSigMet ); - QObject::connect ( &TimerBuffersLED, SIGNAL ( timeout() ), - this, SLOT ( OnTimerBuffersLED() ) ); + QObject::connect ( &TimerBuffersLED, &QTimer::timeout, + this, &CClientDlg::OnTimerBuffersLED ); - QObject::connect ( &TimerStatus, SIGNAL ( timeout() ), - this, SLOT ( OnTimerStatus() ) ); + QObject::connect ( &TimerStatus, &QTimer::timeout, + this, &CClientDlg::OnTimerStatus ); - QObject::connect ( &TimerPing, SIGNAL ( timeout() ), - this, SLOT ( OnTimerPing() ) ); + QObject::connect ( &TimerPing, &QTimer::timeout, + this, &CClientDlg::OnTimerPing ); // sliders - QObject::connect ( sldAudioPan, SIGNAL ( valueChanged ( int ) ), - this, SLOT ( OnAudioPanValueChanged ( int ) ) ); + QObject::connect ( sldAudioPan, &QSlider::valueChanged, + this, &CClientDlg::OnAudioPanValueChanged ); - QObject::connect ( sldAudioReverb, SIGNAL ( valueChanged ( int ) ), - this, SLOT ( OnAudioReverbValueChanged ( int ) ) ); + QObject::connect ( sldAudioReverb, &QSlider::valueChanged, + this, &CClientDlg::OnAudioReverbValueChanged ); // radio buttons - QObject::connect ( rbtReverbSelL, SIGNAL ( clicked() ), - this, SLOT ( OnReverbSelLClicked() ) ); + QObject::connect ( rbtReverbSelL, &QRadioButton::clicked, + this, &CClientDlg::OnReverbSelLClicked ); - QObject::connect ( rbtReverbSelR, SIGNAL ( clicked() ), - this, SLOT ( OnReverbSelRClicked() ) ); + QObject::connect ( rbtReverbSelR, &QRadioButton::clicked, + this, &CClientDlg::OnReverbSelRClicked ); // other - QObject::connect ( pClient, - SIGNAL ( ConClientListMesReceived ( CVector ) ), - this, SLOT ( OnConClientListMesReceived ( CVector ) ) ); + QObject::connect ( pClient, &CClient::ConClientListMesReceived, + this, &CClientDlg::OnConClientListMesReceived ); - QObject::connect ( pClient, - SIGNAL ( Disconnected() ), - this, SLOT ( OnDisconnected() ) ); + QObject::connect ( pClient, &CClient::Disconnected, + this, &CClientDlg::OnDisconnected ); - QObject::connect ( pClient, - SIGNAL ( CentralServerAddressTypeChanged() ), - this, SLOT ( OnCentralServerAddressTypeChanged() ) ); + QObject::connect ( pClient, &CClient::CentralServerAddressTypeChanged, + this, &CClientDlg::OnCentralServerAddressTypeChanged ); - QObject::connect ( pClient, - SIGNAL ( ChatTextReceived ( QString ) ), - this, SLOT ( OnChatTextReceived ( QString ) ) ); + QObject::connect ( pClient, &CClient::ChatTextReceived, + this, &CClientDlg::OnChatTextReceived ); - QObject::connect ( pClient, - SIGNAL ( ClientIDReceived ( int ) ), - this, SLOT ( OnClientIDReceived ( int ) ) ); + QObject::connect ( pClient, &CClient::ClientIDReceived, + this, &CClientDlg::OnClientIDReceived ); - QObject::connect ( pClient, - SIGNAL ( MuteStateHasChangedReceived ( int, bool ) ), - this, SLOT ( OnMuteStateHasChangedReceived ( int, bool ) ) ); + QObject::connect ( pClient, &CClient::MuteStateHasChangedReceived, + this, &CClientDlg::OnMuteStateHasChangedReceived ); // This connection is a special case. On receiving a licence required message via the // protocol, a modal licence dialog is opened. Since this blocks the thread, we need // a queued connection to make sure the core protocol mechanism is not blocked, too. qRegisterMetaType ( "ELicenceType" ); - QObject::connect ( pClient, - SIGNAL ( LicenceRequired ( ELicenceType ) ), - this, SLOT ( OnLicenceRequired ( ELicenceType ) ), Qt::QueuedConnection ); + QObject::connect ( pClient, &CClient::LicenceRequired, + this, &CClientDlg::OnLicenceRequired, Qt::QueuedConnection ); - QObject::connect ( pClient, - SIGNAL ( PingTimeReceived ( int ) ), - this, SLOT ( OnPingTimeResult ( int ) ) ); + QObject::connect ( pClient, &CClient::PingTimeReceived, + this, &CClientDlg::OnPingTimeResult ); - QObject::connect ( pClient, - SIGNAL ( CLServerListReceived ( CHostAddress, CVector ) ), - this, SLOT ( OnCLServerListReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( pClient, &CClient::CLServerListReceived, + this, &CClientDlg::OnCLServerListReceived ); - QObject::connect ( pClient, - SIGNAL ( CLConnClientsListMesReceived ( CHostAddress, CVector ) ), - this, SLOT ( OnCLConnClientsListMesReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( pClient, &CClient::CLConnClientsListMesReceived, + this, &CClientDlg::OnCLConnClientsListMesReceived ); - QObject::connect ( pClient, - SIGNAL ( CLPingTimeWithNumClientsReceived ( CHostAddress, int, int ) ), - this, SLOT ( OnCLPingTimeWithNumClientsReceived ( CHostAddress, int, int ) ) ); + QObject::connect ( pClient, &CClient::CLPingTimeWithNumClientsReceived, + this, &CClientDlg::OnCLPingTimeWithNumClientsReceived ); - QObject::connect ( pClient, - SIGNAL ( ControllerInFaderLevel ( int, int ) ), - this, SLOT ( OnControllerInFaderLevel ( int, int ) ) ); + QObject::connect ( pClient, &CClient::ControllerInFaderLevel, + this, &CClientDlg::OnControllerInFaderLevel ); - QObject::connect ( pClient, - SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector ) ), - this, SLOT ( OnCLChannelLevelListReceived ( CHostAddress, CVector ) ) ); + QObject::connect ( pClient, &CClient::CLChannelLevelListReceived, + this, &CClientDlg::OnCLChannelLevelListReceived ); - QObject::connect ( pClient, - SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ), - this, SLOT ( OnVersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) ); + QObject::connect ( pClient, &CClient::VersionAndOSReceived, + this, &CClientDlg::OnVersionAndOSReceived ); #ifdef ENABLE_CLIENT_VERSION_AND_OS_DEBUGGING - QObject::connect ( pClient, - SIGNAL ( CLVersionAndOSReceived ( CHostAddress, COSUtil::EOpSystemType, QString ) ), - this, SLOT ( OnCLVersionAndOSReceived ( CHostAddress, COSUtil::EOpSystemType, QString ) ) ); + QObject::connect ( pClient, &CClient::CLVersionAndOSReceived, + this, &CClientDlg::OnCLVersionAndOSReceived ); #endif - QObject::connect ( QCoreApplication::instance(), SIGNAL ( aboutToQuit() ), - this, SLOT ( OnAboutToQuit() ) ); + QObject::connect ( QCoreApplication::instance(), &QCoreApplication::aboutToQuit, + this, &CClientDlg::OnAboutToQuit ); - QObject::connect ( &ClientSettingsDlg, SIGNAL ( GUIDesignChanged() ), - this, SLOT ( OnGUIDesignChanged() ) ); + QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::GUIDesignChanged, + this, &CClientDlg::OnGUIDesignChanged ); - QObject::connect ( &ClientSettingsDlg, SIGNAL ( DisplayChannelLevelsChanged() ), - this, SLOT ( OnDisplayChannelLevelsChanged() ) ); + QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::DisplayChannelLevelsChanged, + this, &CClientDlg::OnDisplayChannelLevelsChanged ); - QObject::connect ( &ClientSettingsDlg, SIGNAL ( AudioChannelsChanged() ), - this, SLOT ( OnAudioChannelsChanged() ) ); + QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::AudioChannelsChanged, + this, &CClientDlg::OnAudioChannelsChanged ); - QObject::connect ( &ClientSettingsDlg, SIGNAL ( NewClientLevelChanged() ), - this, SLOT ( OnNewClientLevelChanged() ) ); + QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::NewClientLevelChanged, + this, &CClientDlg::OnNewClientLevelChanged ); - QObject::connect ( MainMixerBoard, SIGNAL ( ChangeChanGain ( int, double, bool ) ), - this, SLOT ( OnChangeChanGain ( int, double, bool ) ) ); + QObject::connect ( MainMixerBoard, &CAudioMixerBoard::ChangeChanGain, + this, &CClientDlg::OnChangeChanGain ); - QObject::connect ( MainMixerBoard, SIGNAL ( ChangeChanPan ( int, double ) ), - this, SLOT ( OnChangeChanPan ( int, double ) ) ); + QObject::connect ( MainMixerBoard, &CAudioMixerBoard::ChangeChanPan, + this, &CClientDlg::OnChangeChanPan ); - QObject::connect ( MainMixerBoard, SIGNAL ( NumClientsChanged ( int ) ), - this, SLOT ( OnNumClientsChanged ( int ) ) ); + QObject::connect ( MainMixerBoard, &CAudioMixerBoard::NumClientsChanged, + this, &CClientDlg::OnNumClientsChanged ); - QObject::connect ( &ChatDlg, SIGNAL ( NewLocalInputText ( QString ) ), - this, SLOT ( OnNewLocalInputText ( QString ) ) ); + QObject::connect ( &ChatDlg, &CChatDlg::NewLocalInputText, + this, &CClientDlg::OnNewLocalInputText ); - QObject::connect ( &ConnectDlg, SIGNAL ( ReqServerListQuery ( CHostAddress ) ), - this, SLOT ( OnReqServerListQuery ( CHostAddress ) ) ); + QObject::connect ( &ConnectDlg, &CConnectDlg::ReqServerListQuery, + this, &CClientDlg::OnReqServerListQuery ); // note that this connection must be a queued connection, otherwise the server list ping // times are not accurate and the client list may not be retrieved for all servers listed // (it seems the sendto() function needs to be called from different threads to fire the // packet immediately and do not collect packets before transmitting) - QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListPingMes ( CHostAddress ) ), - this, SLOT ( OnCreateCLServerListPingMes ( CHostAddress ) ), Qt::QueuedConnection ); + QObject::connect ( &ConnectDlg, &CConnectDlg::CreateCLServerListPingMes, + this, &CClientDlg::OnCreateCLServerListPingMes, Qt::QueuedConnection ); - QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListReqVerAndOSMes ( CHostAddress ) ), - this, SLOT ( OnCreateCLServerListReqVerAndOSMes ( CHostAddress ) ) ); + QObject::connect ( &ConnectDlg, &CConnectDlg::CreateCLServerListReqVerAndOSMes, + this, &CClientDlg::OnCreateCLServerListReqVerAndOSMes ); - QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListReqConnClientsListMes ( CHostAddress ) ), - this, SLOT ( OnCreateCLServerListReqConnClientsListMes ( CHostAddress ) ) ); + QObject::connect ( &ConnectDlg, &CConnectDlg::CreateCLServerListReqConnClientsListMes, + this, &CClientDlg::OnCreateCLServerListReqConnClientsListMes ); - QObject::connect ( &ConnectDlg, SIGNAL ( accepted() ), - this, SLOT ( OnConnectDlgAccepted() ) ); + QObject::connect ( &ConnectDlg, &CConnectDlg::accepted, + this, &CClientDlg::OnConnectDlgAccepted ); // Initializations which have to be done after the signals are connected --- From bb0c3a03c5075346dd10478c4e013d579782de73 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 6 Jun 2020 17:21:38 +0200 Subject: [PATCH 14/14] merge fix --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 77efbdde..bae06e92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,8 @@ - enable/disable recording from command line, coded by pljones (#228) +- add Audacity "list of files" writer to jam recorder, by pljones (#315) + - make level meter LED black when off, by fleutot (#318) - added ukulele/bass ukulele instrument icons created by dos1 (#319) @@ -21,7 +23,6 @@ - bug fix: on MacOS declare an activity to ensure the process doesn't get throttled by OS level Nap, Sleep, and Thread Priority systems, coded by AronVietti (#23) -- add Audacity "list of files" writer to jam recorder, by pljones (#315)