Codebase list elektroid / upstream/2.1
New upstream version 2.1 Dennis Braun 1 year, 11 months ago
38 changed file(s) with 1713 addition(s) and 864 deletion(s). Raw diff Collapse all Expand all
5454 po/remove-potcdate.sin
5555 po/stamp-po
5656 po/remove-potcdate.sed
57
57 debian/.debhelper/
58 debian/autoreconf.after
59 debian/autoreconf.before
60 debian/debhelper-build-stamp
61 debian/elektroid.substvars
62 debian/elektroid/
63 debian/files
0 As with other autotools project, you need to run the following commands.
1
2 autoreconf --install
3 ./configure
4 make
5 sudo make install
6
7 The package dependencies for Debian based distributions are:
8
9 automake
10 libasound2-dev
11 libgtk-3-dev
12 libpulse-dev
13 libsndfile1-dev
14 libsamplerate0-dev
15 libtool
16 autopoint
17 gettext
18
19 You can easily install them by running sudo apt install automake libasound2-dev libgtk-3-dev libpulse-dev libsndfile1-dev libsamplerate0-dev libtool autopoint gettext.
0 Installation Instructions
1 *************************
2
3 Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
4 Foundation, Inc.
5
6 Copying and distribution of this file, with or without modification,
7 are permitted in any medium without royalty provided the copyright
8 notice and this notice are preserved. This file is offered as-is,
9 without warranty of any kind.
10
11 Basic Installation
12 ==================
13
14 Briefly, the shell command './configure && make && make install'
15 should configure, build, and install this package. The following
16 more-detailed instructions are generic; see the 'README' file for
17 instructions specific to this package. Some packages provide this
18 'INSTALL' file but do not implement all of the features documented
19 below. The lack of an optional feature in a given package is not
20 necessarily a bug. More recommendations for GNU packages can be found
21 in *note Makefile Conventions: (standards)Makefile Conventions.
22
23 The 'configure' shell script attempts to guess correct values for
24 various system-dependent variables used during compilation. It uses
25 those values to create a 'Makefile' in each directory of the package.
26 It may also create one or more '.h' files containing system-dependent
27 definitions. Finally, it creates a shell script 'config.status' that
28 you can run in the future to recreate the current configuration, and a
29 file 'config.log' containing compiler output (useful mainly for
30 debugging 'configure').
31
32 It can also use an optional file (typically called 'config.cache' and
33 enabled with '--cache-file=config.cache' or simply '-C') that saves the
34 results of its tests to speed up reconfiguring. Caching is disabled by
35 default to prevent problems with accidental use of stale cache files.
36
37 If you need to do unusual things to compile the package, please try
38 to figure out how 'configure' could check whether to do them, and mail
39 diffs or instructions to the address given in the 'README' so they can
40 be considered for the next release. If you are using the cache, and at
41 some point 'config.cache' contains results you don't want to keep, you
42 may remove or edit it.
43
44 The file 'configure.ac' (or 'configure.in') is used to create
45 'configure' by a program called 'autoconf'. You need 'configure.ac' if
46 you want to change it or regenerate 'configure' using a newer version of
47 'autoconf'.
48
49 The simplest way to compile this package is:
50
51 1. 'cd' to the directory containing the package's source code and type
52 './configure' to configure the package for your system.
53
54 Running 'configure' might take a while. While running, it prints
55 some messages telling which features it is checking for.
56
57 2. Type 'make' to compile the package.
58
59 3. Optionally, type 'make check' to run any self-tests that come with
60 the package, generally using the just-built uninstalled binaries.
61
62 4. Type 'make install' to install the programs and any data files and
63 documentation. When installing into a prefix owned by root, it is
64 recommended that the package be configured and built as a regular
65 user, and only the 'make install' phase executed with root
66 privileges.
67
68 5. Optionally, type 'make installcheck' to repeat any self-tests, but
69 this time using the binaries in their final installed location.
70 This target does not install anything. Running this target as a
71 regular user, particularly if the prior 'make install' required
72 root privileges, verifies that the installation completed
73 correctly.
74
75 6. You can remove the program binaries and object files from the
76 source code directory by typing 'make clean'. To also remove the
77 files that 'configure' created (so you can compile the package for
78 a different kind of computer), type 'make distclean'. There is
79 also a 'make maintainer-clean' target, but that is intended mainly
80 for the package's developers. If you use it, you may have to get
81 all sorts of other programs in order to regenerate files that came
82 with the distribution.
83
84 7. Often, you can also type 'make uninstall' to remove the installed
85 files again. In practice, not all packages have tested that
86 uninstallation works correctly, even though it is required by the
87 GNU Coding Standards.
88
89 8. Some packages, particularly those that use Automake, provide 'make
90 distcheck', which can by used by developers to test that all other
91 targets like 'make install' and 'make uninstall' work correctly.
92 This target is generally not run by end users.
93
94 Compilers and Options
95 =====================
96
97 Some systems require unusual options for compilation or linking that
98 the 'configure' script does not know about. Run './configure --help'
99 for details on some of the pertinent environment variables.
100
101 You can give 'configure' initial values for configuration parameters
102 by setting variables in the command line or in the environment. Here is
103 an example:
104
105 ./configure CC=c99 CFLAGS=-g LIBS=-lposix
106
107 *Note Defining Variables::, for more details.
108
109 Compiling For Multiple Architectures
110 ====================================
111
112 You can compile the package for more than one kind of computer at the
113 same time, by placing the object files for each architecture in their
114 own directory. To do this, you can use GNU 'make'. 'cd' to the
115 directory where you want the object files and executables to go and run
116 the 'configure' script. 'configure' automatically checks for the source
117 code in the directory that 'configure' is in and in '..'. This is known
118 as a "VPATH" build.
119
120 With a non-GNU 'make', it is safer to compile the package for one
121 architecture at a time in the source code directory. After you have
122 installed the package for one architecture, use 'make distclean' before
123 reconfiguring for another architecture.
124
125 On MacOS X 10.5 and later systems, you can create libraries and
126 executables that work on multiple system types--known as "fat" or
127 "universal" binaries--by specifying multiple '-arch' options to the
128 compiler but only a single '-arch' option to the preprocessor. Like
129 this:
130
131 ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
132 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
133 CPP="gcc -E" CXXCPP="g++ -E"
134
135 This is not guaranteed to produce working output in all cases, you
136 may have to build one architecture at a time and combine the results
137 using the 'lipo' tool if you have problems.
138
139 Installation Names
140 ==================
141
142 By default, 'make install' installs the package's commands under
143 '/usr/local/bin', include files under '/usr/local/include', etc. You
144 can specify an installation prefix other than '/usr/local' by giving
145 'configure' the option '--prefix=PREFIX', where PREFIX must be an
146 absolute file name.
147
148 You can specify separate installation prefixes for
149 architecture-specific files and architecture-independent files. If you
150 pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
151 PREFIX as the prefix for installing programs and libraries.
152 Documentation and other data files still use the regular prefix.
153
154 In addition, if you use an unusual directory layout you can give
155 options like '--bindir=DIR' to specify different values for particular
156 kinds of files. Run 'configure --help' for a list of the directories
157 you can set and what kinds of files go in them. In general, the default
158 for these options is expressed in terms of '${prefix}', so that
159 specifying just '--prefix' will affect all of the other directory
160 specifications that were not explicitly provided.
161
162 The most portable way to affect installation locations is to pass the
163 correct locations to 'configure'; however, many packages provide one or
164 both of the following shortcuts of passing variable assignments to the
165 'make install' command line to change installation locations without
166 having to reconfigure or recompile.
167
168 The first method involves providing an override variable for each
169 affected directory. For example, 'make install
170 prefix=/alternate/directory' will choose an alternate location for all
171 directory configuration variables that were expressed in terms of
172 '${prefix}'. Any directories that were specified during 'configure',
173 but not in terms of '${prefix}', must each be overridden at install time
174 for the entire installation to be relocated. The approach of makefile
175 variable overrides for each directory variable is required by the GNU
176 Coding Standards, and ideally causes no recompilation. However, some
177 platforms have known limitations with the semantics of shared libraries
178 that end up requiring recompilation when using this method, particularly
179 noticeable in packages that use GNU Libtool.
180
181 The second method involves providing the 'DESTDIR' variable. For
182 example, 'make install DESTDIR=/alternate/directory' will prepend
183 '/alternate/directory' before all installation names. The approach of
184 'DESTDIR' overrides is not required by the GNU Coding Standards, and
185 does not work on platforms that have drive letters. On the other hand,
186 it does better at avoiding recompilation issues, and works well even
187 when some directory options were not specified in terms of '${prefix}'
188 at 'configure' time.
189
190 Optional Features
191 =================
192
193 If the package supports it, you can cause programs to be installed
194 with an extra prefix or suffix on their names by giving 'configure' the
195 option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
196
197 Some packages pay attention to '--enable-FEATURE' options to
198 'configure', where FEATURE indicates an optional part of the package.
199 They may also pay attention to '--with-PACKAGE' options, where PACKAGE
200 is something like 'gnu-as' or 'x' (for the X Window System). The
201 'README' should mention any '--enable-' and '--with-' options that the
202 package recognizes.
203
204 For packages that use the X Window System, 'configure' can usually
205 find the X include and library files automatically, but if it doesn't,
206 you can use the 'configure' options '--x-includes=DIR' and
207 '--x-libraries=DIR' to specify their locations.
208
209 Some packages offer the ability to configure how verbose the
210 execution of 'make' will be. For these packages, running './configure
211 --enable-silent-rules' sets the default to minimal output, which can be
212 overridden with 'make V=1'; while running './configure
213 --disable-silent-rules' sets the default to verbose, which can be
214 overridden with 'make V=0'.
215
216 Particular systems
217 ==================
218
219 On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
220 is not installed, it is recommended to use the following options in
221 order to use an ANSI C compiler:
222
223 ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
224
225 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
226
227 HP-UX 'make' updates targets which have the same time stamps as their
228 prerequisites, which makes it generally unusable when shipped generated
229 files such as 'configure' are involved. Use GNU 'make' instead.
230
231 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
232 parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
233 workaround. If GNU CC is not installed, it is therefore recommended to
234 try
235
236 ./configure CC="cc"
237
238 and if that doesn't work, try
239
240 ./configure CC="cc -nodtk"
241
242 On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
243 directory contains several dysfunctional programs; working variants of
244 these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
245 in your 'PATH', put it _after_ '/usr/bin'.
246
247 On Haiku, software installed for all users goes in '/boot/common',
248 not '/usr/local'. It is recommended to use the following options:
249
250 ./configure --prefix=/boot/common
251
252 Specifying the System Type
253 ==========================
254
255 There may be some features 'configure' cannot figure out
256 automatically, but needs to determine by the type of machine the package
257 will run on. Usually, assuming the package is built to be run on the
258 _same_ architectures, 'configure' can figure that out, but if it prints
259 a message saying it cannot guess the machine type, give it the
260 '--build=TYPE' option. TYPE can either be a short name for the system
261 type, such as 'sun4', or a canonical name which has the form:
262
263 CPU-COMPANY-SYSTEM
264
265 where SYSTEM can have one of these forms:
266
267 OS
268 KERNEL-OS
269
270 See the file 'config.sub' for the possible values of each field. If
271 'config.sub' isn't included in this package, then this package doesn't
272 need to know the machine type.
273
274 If you are _building_ compiler tools for cross-compiling, you should
275 use the option '--target=TYPE' to select the type of system they will
276 produce code for.
277
278 If you want to _use_ a cross compiler, that generates code for a
279 platform different from the build platform, you should specify the
280 "host" platform (i.e., that on which the generated programs will
281 eventually be run) with '--host=TYPE'.
282
283 Sharing Defaults
284 ================
285
286 If you want to set default values for 'configure' scripts to share,
287 you can create a site shell script called 'config.site' that gives
288 default values for variables like 'CC', 'cache_file', and 'prefix'.
289 'configure' looks for 'PREFIX/share/config.site' if it exists, then
290 'PREFIX/etc/config.site' if it exists. Or, you can set the
291 'CONFIG_SITE' environment variable to the location of the site script.
292 A warning: not all 'configure' scripts look for a site script.
293
294 Defining Variables
295 ==================
296
297 Variables not defined in a site shell script can be set in the
298 environment passed to 'configure'. However, some packages may run
299 configure again during the build, and the customized values of these
300 variables may be lost. In order to avoid this problem, you should set
301 them in the 'configure' command line, using 'VAR=value'. For example:
302
303 ./configure CC=/usr/local2/bin/gcc
304
305 causes the specified 'gcc' to be used as the C compiler (unless it is
306 overridden in the site shell script).
307
308 Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
309 Autoconf limitation. Until the limitation is lifted, you can use this
310 workaround:
311
312 CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
313
314 'configure' Invocation
315 ======================
316
317 'configure' recognizes the following options to control how it
318 operates.
319
320 '--help'
321 '-h'
322 Print a summary of all of the options to 'configure', and exit.
323
324 '--help=short'
325 '--help=recursive'
326 Print a summary of the options unique to this package's
327 'configure', and exit. The 'short' variant lists options used only
328 in the top level, while the 'recursive' variant lists options also
329 present in any nested packages.
330
331 '--version'
332 '-V'
333 Print the version of Autoconf used to generate the 'configure'
334 script, and exit.
335
336 '--cache-file=FILE'
337 Enable the cache: use and save the results of the tests in FILE,
338 traditionally 'config.cache'. FILE defaults to '/dev/null' to
339 disable caching.
340
341 '--config-cache'
342 '-C'
343 Alias for '--cache-file=config.cache'.
344
345 '--quiet'
346 '--silent'
347 '-q'
348 Do not print messages saying which checks are being made. To
349 suppress all normal output, redirect it to '/dev/null' (any error
350 messages will still be shown).
351
352 '--srcdir=DIR'
353 Look for the package's source code in directory DIR. Usually
354 'configure' can determine that directory automatically.
355
356 '--prefix=DIR'
357 Use DIR as the installation prefix. *note Installation Names:: for
358 more details, including other options available for fine-tuning the
359 installation locations.
360
361 '--no-create'
362 '-n'
363 Run the configure checks, but stop before creating any output
364 files.
365
366 'configure' also accepts some other, not widely useful, options. Run
367 'configure --help' for more details.
00 ACLOCAL_AMFLAGS=-I m4
11
22 if CLI_ONLY
3 SUBDIRS=src test man
3 SUBDIRS=src res test man
44 else
55 SUBDIRS=src res test po man
66 endif
00 # Elektroid
11
22 Elektroid is a GNU/Linux transfer application for Elektron devices. It includes the `elektroid` GUI application and the `elektroid-cli` CLI application.
3 Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt, Digitone and Analog Rytm MKI and MKII.
3 Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt, Digitone, Syntakt, and Analog Rytm MKI and MKII.
44
55 To use Elektroid, USB configuration must be set to `USB MIDI` or `USB AUDIO/MIDI` as it won't work in Overbridge mode.
66
1515 sudo make install
1616 ```
1717
18 The package dependencies for Debian based distributions are:
18 The package dependencies for Debian-based distributions are:
1919 - automake
2020 - libtool
2121 - build-essential
3232
3333 You can easily install them by running `sudo apt install automake libtool build-essential libasound2-dev libgtk-3-dev libpulse-dev libsndfile1-dev libsamplerate0-dev autopoint gettext zlib1g-dev libjson-glib-dev libzip-dev`.
3434
35 If you are only compiling the CLI, install the dependencies with `sudo apt install automake libtool build-essential libasound2-dev libglib2.0-dev libsndfile1-dev libsamplerate0-dev libtool zlib1g-dev libjson-glib-dev libzip-dev`.
35 If you are only compiling the CLI, install the dependencies with `sudo apt install automake libtool build-essential libasound2-dev libglib2.0-dev libsndfile1-dev libsamplerate0-dev autopoint libtool zlib1g-dev libjson-glib-dev libzip-dev`.
36
37 For Fedora, `sudo dnf install autoconf libtool alsa-lib-devel zlib-devel libzip-devel gtk3-devel libsndfile-devel gettext-devel libsamplerate-devel pulseaudio-libs-devel json-glib-devel` will install the build dependencies.
38
39 For Arch Linux, `sudo pacman -S base-devel autoconf libtool alsa-lib zlib libzip gtk3 libsndfile gettext libsamplerate pulseaudio json-glib` will install the build dependencies.
40
41 ## Packaging
42
43 This is a quick glance at the instructions needed to build some distribution packages.
44
45 ### Debian
46
47 ```
48 $ dpkg-buildpackage -b -rfakeroot -us -uc
49 ```
50
51 ### Fedora
52
53 ```
54 $ rel=35
55 $ mock -r fedora-$rel-x86_64 --buildsrpm --spec elektroid.spec --sources .
56 $ mock -r fedora-$rel-x86_64 --no-clean --rebuild /var/lib/mock/fedora-$rel-x86_64/result/elektroid-*.src.rpm
57 ```
3658
3759 ## CLI
3860
39 `elektroid-cli` brings the same funcionality than `elektroid` to the command line.
61 `elektroid-cli` brings the same functionality as `elektroid` to the command line.
4062
4163 There are device commands and filesystem commands. The latter have the form `a-b` where `a` is a command and `b` is a filesystem, (e.g., `ls-project`, `download-sound`, `mkdir-sample`). Notice that the filesystem is always in the singular form and some older commands are deprecated but kept for compatibility reasons although there are not documented here.
4264
223245 ```
224246 $ elektroid-cli ul-data sound 0:/soundbanks/D
225247 ```
248
249 ## Adding and reconfiguring devices
250
251 Since version 2.1, it is possible to add and reconfigure devices without recompiling as the device definitions are stored in a JSON file. Hopefully, this approach will make it easier for users to modify and add devices and new releases will only be needed if new funcionalities are actually added.
252
253 This is a device definition from `res/devices.json`.
254
255 ```
256 }, {
257 "id": 12,
258 "name": "Digitakt",
259 "alias": "dt",
260 "filesystems": 57,
261 "storage": 3
262 }, {
263 ```
264
265 Properties `filesystems` and `storage` are based on the definitions found in `src/connector.h` and are the bitwise OR result of all the supported filesystems and storage types.
266
267 ```
268 enum connector_fs
269 {
270 FS_SAMPLES = 0x1,
271 FS_RAW_ALL = 0x2,
272 FS_RAW_PRESETS = 0x4,
273 FS_DATA_ALL = 0x8,
274 FS_DATA_PRJ = 0x10,
275 FS_DATA_SND = 0x20,
276 };
277 ```
278
279 ```
280 enum connector_storage
281 {
282 STORAGE_PLUS_DRIVE = 0x1,
283 STORAGE_RAM = 0x2
284 };
285 ```
286
287 If the file `~/.config/elektroid/devices.json` is found, it will take precedence over the installed one.
11 # Process this file with autoconf to produce a configure script.
22
33 AC_PREREQ([2.69])
4 AC_INIT([elektroid],[2.0],[dagargo@gmail.com])
4 AC_INIT([elektroid],[2.1],[dagargo@gmail.com])
55 AC_CONFIG_SRCDIR([src])
66 AC_CONFIG_HEADERS([config.h])
77 AM_PROG_LIBTOOL
3838
3939 AM_COND_IF(GUI, [
4040 AM_GNU_GETTEXT([external])
41 AM_GNU_GETTEXT_VERSION([0.12.1])
41 AM_GNU_GETTEXT_VERSION([0.19])
4242 ])
4343
4444 # Checks for header files.
2020 Architecture: any
2121 Depends: ${misc:Depends},
2222 ${shlibs:Depends}
23 Description: Sample transfer application
24 Elektroid is an sample transfer application for Elektron devices.
23 Description: Transfer application for Elektron devices
24 Elektroid is an transfer application for Elektron devices.
2525 .
26 With elektroid you can easily load audio files like flac or wav into your
27 elektron sampler. You can also transfer audio samples from your elektroid
28 device to your local hard disk.
26 With Elektroid you can easily upload and download audio files, projects,
27 sounds and presets to and from Elektron devices. It can also be used to
28 send and receive MIDI SysEx files.
2929 .
30 It has been reported to work with Model:Samples, Digitakt
31 and Analog Rytm mk1 and mk2.
30 Elektroid has been reported to work with Model:Samples, Model:Cycles,
31 Digitakt, Digitone and Analog Rytm MKI and MKII.
3232 .
3333 This package provides both the GUI and CLI application of elektroid.
0 Name: elektroid
1 Version: 2.0
2 Release: 1%{?dist}
3 Summary: Transfer application for Elektron devices
4
5 License: GPLv3+
6 URL: https://github.com/dagargo/elektroid
7 Source0: https://github.com/dagargo/elektroid/archive/elektroid-%{version}.tar.gz
8
9 BuildRequires: autoconf
10 BuildRequires: libtool
11 BuildRequires: alsa-lib-devel
12 BuildRequires: zlib-devel
13 BuildRequires: libzip-devel
14 BuildRequires: gtk3-devel
15 BuildRequires: libsndfile-devel
16 BuildRequires: libsamplerate-devel
17 %if 0%{?suse_version}
18 BuildRequires: libpulse-devel
19 %else
20 %if 0%{?mgaversion}
21 BuildRequires: libpulseaudio-devel
22 %else
23 # RHEL, CentOS and Fedora use this name:
24 BuildRequires: pulseaudio-libs-devel
25 %endif
26 %endif
27 BuildRequires: gettext-devel
28 BuildRequires: json-glib-devel
29
30 %description
31 Elektroid is an transfer application for Elektron devices.
32 With Elektroid you can easily upload and download audio files, projects, sounds
33 and presets to and from Elektron devices. It can also be used to send and
34 receive MIDI SysEx files.
35 Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt,
36 Digitone and Analog Rytm MKI and MKII.
37
38
39 %prep
40 %autosetup -p1
41 sed -i s/^include_HEADERS/noinst_HEADERS/ src/Makefile.am
42 aclocal
43 automake
44
45
46 %build
47 %configure
48 %make_build
49
50
51 %install
52 %make_install
53
54
55 %files
56 %{_bindir}/elektroid-cli
57 %{_bindir}/elektroid
58 %{_datadir}/applications/%{name}.desktop
59 %{_datadir}/%{name}/res/gui.css
60 %{_datadir}/%{name}/res/gui.glade
61 %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
62 %{_datadir}/icons/hicolor/scalable/apps/%{name}-symbolic.svg
63 %{_datadir}/icons/hicolor/scalable/apps/%{name}-data-symbolic.svg
64 %{_datadir}/icons/hicolor/scalable/apps/%{name}-project-symbolic.svg
65 %{_datadir}/icons/hicolor/scalable/apps/%{name}-sound-symbolic.svg
66 %{_datadir}/icons/hicolor/scalable/apps/%{name}-wave-symbolic.svg
67 %{_datadir}/locale/*/LC_MESSAGES/%{name}.mo
68 %{_mandir}/man1/elektroid-cli.1.gz
69 %{_mandir}/man1/elektroid.1.gz
70 %{_metainfodir}/%{name}.appdata.xml
71 %license COPYING
72
73
74 %changelog
75 * Mon Feb 07 2022 Jonathan Wakely <jwakely@fedoraproject.org> - 2.0-1
76 - RPM package for Fedora
1010 .B Elektroid
1111 is a GNU/Linux transfer application for Elektron devices. See man elektroid-cli for the CLI application.
1212 .PP
13 With Elektroid you can easily upload and download audio files, projects, sounds and presets to and from your Elektron device. It can also be used to send and receive MIDI SysEx files.
13 With Elektroid you can easily upload and download audio files, projects, sounds and presets to and from Elektron devices. It can also be used to send and receive MIDI SysEx files.
1414 .PP
15 Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt, Digitone and Analog Rytm MKI and MKII.
15 Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt, Digitone, Syntakt and Analog Rytm MKI and MKII.
1616
1717 .SH OPTIONS
1818 .TP
66 msgstr ""
77 "Project-Id-Version: elektroid 1.4\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2020-04-26 13:00+0100\n"
1111 "Last-Translator: David García Goñi <dagargo@gmail.com>\n"
1212 "Language-Team: Catalan\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr "Mostres"
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr "Programes"
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr "Projectes"
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr "Sos"
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr "Indefinit"
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr "Connectat a %s%s"
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr "No connectat"
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr "Esperant..."
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr "Enviant..."
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr "Rebent..."
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr "Rep SysEx"
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr "Alça SysEx"
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr "_Cancel·la"
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr "_Alça"
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr "SysEx rebut"
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr "Fitxers SysEx"
8384
84 #: src/elektroid.c:696
85 #: src/elektroid.c:732
8586 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr "Error al guardar «%s»: %s."
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr "Obri SysEx"
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr "_Obri"
9697
97 #: src/elektroid.c:770
98 #: src/elektroid.c:806
9899 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr "Error al carregar «%s»: %s."
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr "Envia SysEx"
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr "Error al eliminar «%s»: %s."
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr "Està segur de que vol eliminar els elements seleccionats?"
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr "_Elimina"
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr "Canvia el nom"
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr "Error al canviar el nom a «%s»: %s."
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr "Afig directori"
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr "Error al crear el directori «%s»: %s."
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr "A la cua"
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr "Executant"
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr "Completada"
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr "Completada amb errors"
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr "Cancel·lada"
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr "Càrrega"
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr "Descàrrega"
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr "Error al moure de «%s» a «%s»: %s."
183184 msgid "Show in File Manager"
184185 msgstr "Mostra al navegador de fitxers"
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr "Elimina"
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr "Descarrega la selecció"
193194
194 #: res/gui.glade:238
195 #: res/gui.glade:219
195196 msgid "GNU/Linux transfer application for Elektron devices"
196197 msgstr "Aplicació GNU/Linux de transferència per a dispositius Elektron"
197198
198 #: res/gui.glade:241
199 #: res/gui.glade:222
199200 msgid "translator-credits"
200201 msgstr "David García Goñi <dagargo@gmail.com>"
201202
202 #: res/gui.glade:289
203 #: res/gui.glade:270
203204 msgid "_Receive SysEx"
204205 msgstr "_Rep SysEx"
205206
206 #: res/gui.glade:302
207 #: res/gui.glade:283
207208 msgid "_Send SysEx"
208209 msgstr "_Envia SysEx"
209210
210 #: res/gui.glade:326
211 #: res/gui.glade:307
211212 msgid "OS _Upgrade"
212213 msgstr "_Actualitza el SO"
213214
214 #: res/gui.glade:350
215 #: res/gui.glade:331
215216 msgid "_About"
216217 msgstr "_Quant a"
217218
218 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
219220 msgid "Go to Parent Directory"
220221 msgstr "Ves al directori pare"
221222
222 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
223224 msgid "Refresh Directory"
224225 msgstr "Actualitza el directori"
225226
226 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
227228 msgid "Name"
228229 msgstr "Nom"
229230
230 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
231232 msgid "Size"
232233 msgstr "Mida"
233234
234 #: res/gui.glade:738
235 #: res/gui.glade:761
235236 msgid "Refresh Devices"
236237 msgstr "Actualitza els dispositius"
237238
238239 #. It is recommended to split the text in two lines if it is too long
239 #: res/gui.glade:856
240 #: res/gui.glade:879
240241 msgid "Auto play"
241242 msgstr ""
242243 "Reproducció\n"
243244 "automàtica"
244245
245 #: res/gui.glade:1088
246 #: res/gui.glade:1101
246247 msgid "Status"
247248 msgstr "Estat"
248249
249 #: res/gui.glade:1099
250 #: res/gui.glade:1112
250251 msgid "Type"
251252 msgstr "Tipus"
252253
253 #: res/gui.glade:1120
254 #: res/gui.glade:1133
254255 msgid "Source"
255256 msgstr "Origen"
256257
257 #: res/gui.glade:1134
258 #: res/gui.glade:1147
258259 msgid "Destination"
259260 msgstr "Destinació"
260261
261 #: res/gui.glade:1149
262 #: res/gui.glade:1162
262263 msgid "Progress"
263264 msgstr "Progrés"
264265
265 #: res/gui.glade:1181
266 #: res/gui.glade:1194
266267 msgid "Cancel Tasks"
267268 msgstr "Cancel·la les tasques"
268269
269 #: res/gui.glade:1202
270 #: res/gui.glade:1215
270271 msgid "Remove Queued Tasks"
271272 msgstr "Elimina les tasques de la cua"
272273
273 #: res/gui.glade:1223
274 #: res/gui.glade:1236
274275 msgid "Clear Finished Tasks"
275276 msgstr "Neteja les tasques terminadas"
66 msgstr ""
77 "Project-Id-Version: elektroid 1.4\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2021-01-11 22:00+0100\n"
1111 "Last-Translator: Dennis Braun <d_braun@kabelmail.de>\n"
1212 "Language-Team: German\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr "Samples"
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr "Presets"
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr "Projekte"
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr "Sounds"
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr "Undefiniert"
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr "Verbunden mit %s%s"
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr "Nicht verbunden"
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr "Warte..."
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr "Sende..."
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr "Empfange..."
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr "Empfange SysEx"
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr "Speichere SysEx"
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr "_Abbrechen"
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr "_Speichern"
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr "SysEx empfangen"
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr "SysEx Dateien"
8384
84 #: src/elektroid.c:696
85 #, fuzzy, c-format
85 #: src/elektroid.c:732
86 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr "Fehler beim Löschen »%s«: %s."
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr "Öffne SysEx"
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr "_Öffnen"
9697
97 #: src/elektroid.c:770
98 #, fuzzy, c-format
98 #: src/elektroid.c:806
99 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr "Fehler beim Löschen »%s«: %s."
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr "Sende SysEx"
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr "Fehler beim Löschen »%s«: %s."
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr "Bist du sicher das du die ausgewählten Elemente löschen möchtest?"
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr "_Löschen"
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr "Umbenennen"
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr "Fehler beim Umbenennen von »%s«: %s."
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr "Verzeichnis hinzufügen"
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr "Fehler beim Erstellen des Verzeichnisses »%s«: %s."
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr "In der Warteschlange"
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr "Wird ausgeführt"
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr "Fertig"
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr "Abgeschlossen mit Fehlern"
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr "Abgebrochen"
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr "Hochladen"
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr "Herunterladen"
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr "Fehler beim Verschieben von »%s« nach »%s«: %s."
183184 msgid "Show in File Manager"
184185 msgstr "Im Dateimanager _Anzeigen"
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr "Löschen"
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr "Download Auswahl"
193194
194 #: res/gui.glade:238
195 #, fuzzy
195 #: res/gui.glade:219
196196 msgid "GNU/Linux transfer application for Elektron devices"
197197 msgstr "GNU/Linux Transfer Anwendung für Elektron Instrumente"
198198
199 #: res/gui.glade:241
199 #: res/gui.glade:222
200200 msgid "translator-credits"
201201 msgstr "Dennis Braun <d_braun@kabelmail.de>"
202202
203 #: res/gui.glade:289
203 #: res/gui.glade:270
204204 msgid "_Receive SysEx"
205205 msgstr "_Empfange SysEx"
206206
207 #: res/gui.glade:302
207 #: res/gui.glade:283
208208 msgid "_Send SysEx"
209209 msgstr "_Sende SysEx"
210210
211 #: res/gui.glade:326
211 #: res/gui.glade:307
212212 msgid "OS _Upgrade"
213213 msgstr "OS _Aktualisierung"
214214
215 #: res/gui.glade:350
215 #: res/gui.glade:331
216216 msgid "_About"
217217 msgstr "_Info"
218218
219 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
220220 msgid "Go to Parent Directory"
221221 msgstr "Gehe zum Überverzeichnis"
222222
223 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
224224 msgid "Refresh Directory"
225225 msgstr "Aktualisiere Verzeichnis"
226226
227 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
228228 msgid "Name"
229229 msgstr "Name"
230230
231 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
232232 msgid "Size"
233233 msgstr "Größe"
234234
235 #: res/gui.glade:738
235 #: res/gui.glade:761
236236 msgid "Refresh Devices"
237237 msgstr "Aktualisiere Geräte"
238238
239239 #. It is recommended to split the text in two lines if it is too long
240 #: res/gui.glade:856
240 #: res/gui.glade:879
241241 msgid "Auto play"
242242 msgstr "Auto Play"
243243
244 #: res/gui.glade:1088
244 #: res/gui.glade:1101
245245 msgid "Status"
246246 msgstr "Status"
247247
248 #: res/gui.glade:1099
248 #: res/gui.glade:1112
249249 msgid "Type"
250250 msgstr "Typ"
251251
252 #: res/gui.glade:1120
252 #: res/gui.glade:1133
253253 msgid "Source"
254254 msgstr "Quelle"
255255
256 #: res/gui.glade:1134
256 #: res/gui.glade:1147
257257 msgid "Destination"
258258 msgstr "Ziel"
259259
260 #: res/gui.glade:1149
260 #: res/gui.glade:1162
261261 msgid "Progress"
262262 msgstr "Fortschritt"
263263
264 #: res/gui.glade:1181
264 #: res/gui.glade:1194
265265 msgid "Cancel Tasks"
266266 msgstr "Aufgaben abbrechen"
267267
268 #: res/gui.glade:1202
268 #: res/gui.glade:1215
269269 msgid "Remove Queued Tasks"
270270 msgstr "Lösche Aufgaben in der Warteschlange"
271271
272 #: res/gui.glade:1223
272 #: res/gui.glade:1236
273273 msgid "Clear Finished Tasks"
274274 msgstr "Abgeschlossene Aufgaben aufräumen"
55 #, fuzzy
66 msgid ""
77 msgstr ""
8 "Project-Id-Version: elektroid 2.0-beta\n"
8 "Project-Id-Version: elektroid 2.1\n"
99 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
10 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
10 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
1717 "Content-Transfer-Encoding: 8bit\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr ""
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr ""
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr ""
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr ""
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr ""
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr ""
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr ""
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr ""
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr ""
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr ""
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr ""
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr ""
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr ""
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr ""
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr ""
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr ""
8384
84 #: src/elektroid.c:696
85 #: src/elektroid.c:732
8586 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr ""
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr ""
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr ""
9697
97 #: src/elektroid.c:770
98 #: src/elektroid.c:806
9899 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr ""
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr ""
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr ""
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr ""
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr ""
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr ""
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr ""
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr ""
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr ""
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr ""
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr ""
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr ""
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr ""
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr ""
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr ""
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr ""
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr ""
183184 msgid "Show in File Manager"
184185 msgstr ""
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr ""
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr ""
193194
194 #: res/gui.glade:238
195 #: res/gui.glade:219
195196 msgid "GNU/Linux transfer application for Elektron devices"
196197 msgstr ""
197198
198 #: res/gui.glade:241
199 #: res/gui.glade:222
199200 msgid "translator-credits"
200201 msgstr ""
201202
202 #: res/gui.glade:289
203 #: res/gui.glade:270
203204 msgid "_Receive SysEx"
204205 msgstr ""
205206
206 #: res/gui.glade:302
207 #: res/gui.glade:283
207208 msgid "_Send SysEx"
208209 msgstr ""
209210
210 #: res/gui.glade:326
211 #: res/gui.glade:307
211212 msgid "OS _Upgrade"
212213 msgstr ""
213214
214 #: res/gui.glade:350
215 #: res/gui.glade:331
215216 msgid "_About"
216217 msgstr ""
217218
218 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
219220 msgid "Go to Parent Directory"
220221 msgstr ""
221222
222 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
223224 msgid "Refresh Directory"
224225 msgstr ""
225226
226 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
227228 msgid "Name"
228229 msgstr ""
229230
230 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
231232 msgid "Size"
232233 msgstr ""
233234
234 #: res/gui.glade:738
235 #: res/gui.glade:761
235236 msgid "Refresh Devices"
236237 msgstr ""
237238
238239 #. It is recommended to split the text in two lines if it is too long
239 #: res/gui.glade:856
240 #: res/gui.glade:879
240241 msgid "Auto play"
241242 msgstr ""
242243
243 #: res/gui.glade:1088
244 #: res/gui.glade:1101
244245 msgid "Status"
245246 msgstr ""
246247
247 #: res/gui.glade:1099
248 #: res/gui.glade:1112
248249 msgid "Type"
249250 msgstr ""
250251
251 #: res/gui.glade:1120
252 #: res/gui.glade:1133
252253 msgid "Source"
253254 msgstr ""
254255
255 #: res/gui.glade:1134
256 #: res/gui.glade:1147
256257 msgid "Destination"
257258 msgstr ""
258259
259 #: res/gui.glade:1149
260 #: res/gui.glade:1162
260261 msgid "Progress"
261262 msgstr ""
262263
263 #: res/gui.glade:1181
264 #: res/gui.glade:1194
264265 msgid "Cancel Tasks"
265266 msgstr ""
266267
267 #: res/gui.glade:1202
268 #: res/gui.glade:1215
268269 msgid "Remove Queued Tasks"
269270 msgstr ""
270271
271 #: res/gui.glade:1223
272 #: res/gui.glade:1236
272273 msgid "Clear Finished Tasks"
273274 msgstr ""
66 msgstr ""
77 "Project-Id-Version: elektroid 1.4\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2020-04-26 13:00+0100\n"
1111 "Last-Translator: David García Goñi <dagargo@gmail.com>\n"
1212 "Language-Team: English\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr "Samples"
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr "Presets"
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr "Projects"
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr "Sounds"
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr "Undefined"
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr "Connected to %s%s"
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr "Not connected"
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr "Waiting..."
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr "Sending..."
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr "Receiving..."
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr "Receive SysEx"
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr "Save SysEx"
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr "_Cancel"
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr "_Save"
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr "Received SysEx"
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr "SysEx Files"
8384
84 #: src/elektroid.c:696
85 #: src/elektroid.c:732
8586 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr "Error while saving “%s”: %s."
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr "Open SysEx"
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr "_Open"
9697
97 #: src/elektroid.c:770
98 #: src/elektroid.c:806
9899 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr "Error while loading “%s”: %s."
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr "Send SysEx"
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr "Error while deleting “%s”: %s."
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr "Are you sure you want to delete the selected items?"
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr "_Delete"
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr "Rename"
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr "Error while renaming to “%s”: %s."
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr "Add Directory"
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr "Error while creating dir “%s”: %s."
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr "Queued"
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr "Running"
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr "Completed"
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr "Completed with errors"
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr "Canceled"
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr "Upload"
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr "Download"
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr "Error while moving from “%s” to “%s”: %s."
183184 msgid "Show in File Manager"
184185 msgstr "Show in File Manager"
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr "Delete"
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr "Download selection"
193194
194 #: res/gui.glade:238
195 #: res/gui.glade:219
195196 msgid "GNU/Linux transfer application for Elektron devices"
196197 msgstr "GNU/Linux transfer application for Elektron devices"
197198
198 #: res/gui.glade:241
199 #: res/gui.glade:222
199200 msgid "translator-credits"
200201 msgstr "David García Goñi <dagargo@gmail.com>"
201202
202 #: res/gui.glade:289
203 #: res/gui.glade:270
203204 msgid "_Receive SysEx"
204205 msgstr "_Receive SysEx"
205206
206 #: res/gui.glade:302
207 #: res/gui.glade:283
207208 msgid "_Send SysEx"
208209 msgstr "_Send SysEx"
209210
210 #: res/gui.glade:326
211 #: res/gui.glade:307
211212 msgid "OS _Upgrade"
212213 msgstr "OS _Upgrade"
213214
214 #: res/gui.glade:350
215 #: res/gui.glade:331
215216 msgid "_About"
216217 msgstr "_About"
217218
218 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
219220 msgid "Go to Parent Directory"
220221 msgstr "Go to Parent Directory"
221222
222 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
223224 msgid "Refresh Directory"
224225 msgstr "Refresh Directory"
225226
226 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
227228 msgid "Name"
228229 msgstr "Name"
229230
230 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
231232 msgid "Size"
232233 msgstr "Size"
233234
234 #: res/gui.glade:738
235 #: res/gui.glade:761
235236 msgid "Refresh Devices"
236237 msgstr "Refresh Devices"
237238
238239 #. It is recommended to split the text in two lines if it is too long
239 #: res/gui.glade:856
240 #: res/gui.glade:879
240241 msgid "Auto play"
241242 msgstr "Auto play"
242243
243 #: res/gui.glade:1088
244 #: res/gui.glade:1101
244245 msgid "Status"
245246 msgstr "Status"
246247
247 #: res/gui.glade:1099
248 #: res/gui.glade:1112
248249 msgid "Type"
249250 msgstr "Type"
250251
251 #: res/gui.glade:1120
252 #: res/gui.glade:1133
252253 msgid "Source"
253254 msgstr "Source"
254255
255 #: res/gui.glade:1134
256 #: res/gui.glade:1147
256257 msgid "Destination"
257258 msgstr "Destination"
258259
259 #: res/gui.glade:1149
260 #: res/gui.glade:1162
260261 msgid "Progress"
261262 msgstr "Progress"
262263
263 #: res/gui.glade:1181
264 #: res/gui.glade:1194
264265 msgid "Cancel Tasks"
265266 msgstr "Cancel Tasks"
266267
267 #: res/gui.glade:1202
268 #: res/gui.glade:1215
268269 msgid "Remove Queued Tasks"
269270 msgstr "Remove Queued Tasks"
270271
271 #: res/gui.glade:1223
272 #: res/gui.glade:1236
272273 msgid "Clear Finished Tasks"
273274 msgstr "Clear Finished Tasks"
66 msgstr ""
77 "Project-Id-Version: elektroid 1.4\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2020-04-26 13:00+0100\n"
1111 "Last-Translator: David García Goñi <dagargo@gmail.com>\n"
1212 "Language-Team: Spanish\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr "Muestras"
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr "Programas"
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr "Proyectos"
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr "Sonidos"
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr "Indefinido"
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr "Conectado a %s%s"
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr "No conectado"
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr "Esperando..."
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr "Enviando..."
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr "Recibiendo..."
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr "Recibir SysEx"
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr "Guardar SysEx"
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr "_Cancelar"
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr "_Guardar"
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr "SysEx recibido"
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr "Archivos SysEx"
8384
84 #: src/elektroid.c:696
85 #: src/elektroid.c:732
8586 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr "Error al guardar «%s»: %s."
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr "Abrir SysEx"
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr "_Abrir"
9697
97 #: src/elektroid.c:770
98 #: src/elektroid.c:806
9899 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr "Error al cargar «%s»: %s."
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr "Enviar SysEx"
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr "Error al eliminar «%s»: %s."
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr "¿Está seguro de que quiere eliminar los elementos seleccionados?"
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr "_Eliminar"
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr "Renombrar"
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr "Error al renombrar a «%s»: %s."
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr "Añadir directorio"
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr "Error al crear el directorio «%s»: %s."
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr "Encolada"
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr "Ejecutando"
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr "Completada"
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr "Completada con errores"
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr "Cancelada"
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr "Carga"
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr "Descarga"
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr "Error al mover de «%s» a «%s»: %s."
183184 msgid "Show in File Manager"
184185 msgstr "Mostrar en gestor de archivos"
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr "Eliminar"
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr "Descargar selección"
193194
194 #: res/gui.glade:238
195 #: res/gui.glade:219
195196 msgid "GNU/Linux transfer application for Elektron devices"
196197 msgstr "Aplicación GNU/Linux de transferencia para dispositivos Elektron"
197198
198 #: res/gui.glade:241
199 #: res/gui.glade:222
199200 msgid "translator-credits"
200201 msgstr "David García Goñi <dagargo@gmail.com>"
201202
202 #: res/gui.glade:289
203 #: res/gui.glade:270
203204 msgid "_Receive SysEx"
204205 msgstr "_Recibir SysEx"
205206
206 #: res/gui.glade:302
207 #: res/gui.glade:283
207208 msgid "_Send SysEx"
208209 msgstr "_Enviar SysEx"
209210
210 #: res/gui.glade:326
211 #: res/gui.glade:307
211212 msgid "OS _Upgrade"
212213 msgstr "Actualizar _SO"
213214
214 #: res/gui.glade:350
215 #: res/gui.glade:331
215216 msgid "_About"
216217 msgstr "_Acerca de"
217218
218 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
219220 msgid "Go to Parent Directory"
220221 msgstr "Ir al directorio padre"
221222
222 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
223224 msgid "Refresh Directory"
224225 msgstr "Actualizar directorio"
225226
226 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
227228 msgid "Name"
228229 msgstr "Nombre"
229230
230 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
231232 msgid "Size"
232233 msgstr "Tamaño"
233234
234 #: res/gui.glade:738
235 #: res/gui.glade:761
235236 msgid "Refresh Devices"
236237 msgstr "Actualizar dispositivos"
237238
238239 #. It is recommended to split the text in two lines if it is too long
239 #: res/gui.glade:856
240 #: res/gui.glade:879
240241 msgid "Auto play"
241242 msgstr ""
242243 "Reproducción\n"
243244 "automática"
244245
245 #: res/gui.glade:1088
246 #: res/gui.glade:1101
246247 msgid "Status"
247248 msgstr "Estado"
248249
249 #: res/gui.glade:1099
250 #: res/gui.glade:1112
250251 msgid "Type"
251252 msgstr "Tipo"
252253
253 #: res/gui.glade:1120
254 #: res/gui.glade:1133
254255 msgid "Source"
255256 msgstr "Origen"
256257
257 #: res/gui.glade:1134
258 #: res/gui.glade:1147
258259 msgid "Destination"
259260 msgstr "Destino"
260261
261 #: res/gui.glade:1149
262 #: res/gui.glade:1162
262263 msgid "Progress"
263264 msgstr "Progreso"
264265
265 #: res/gui.glade:1181
266 #: res/gui.glade:1194
266267 msgid "Cancel Tasks"
267268 msgstr "Cancelar tareas"
268269
269 #: res/gui.glade:1202
270 #: res/gui.glade:1215
270271 msgid "Remove Queued Tasks"
271272 msgstr "Eliminar tareas encoladas"
272273
273 #: res/gui.glade:1223
274 #: res/gui.glade:1236
274275 msgid "Clear Finished Tasks"
275276 msgstr "Limpiar tareas terminadas"
66 msgstr ""
77 "Project-Id-Version: elektroid 2.0\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2021-12-03 17:59+0100\n"
1111 "Last-Translator: Olivier Humbert <trebmuh@tuxfamily.org>\n"
1212 "Language-Team: French\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
1818
19 #: src/elektroid.c:249
19 #: src/elektroid.c:246
2020 msgid "Samples"
2121 msgstr "Échantillons"
2222
23 #: src/elektroid.c:251
23 #: src/elektroid.c:248
2424 msgid "Presets"
2525 msgstr "Préréglages"
2626
27 #: src/elektroid.c:253
27 #: src/elektroid.c:250
2828 msgid "Projects"
2929 msgstr "Projets"
3030
31 #: src/elektroid.c:255
31 #: src/elektroid.c:252
3232 msgid "Sounds"
3333 msgstr "Sons"
3434
35 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
35 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3636 msgid "Undefined"
3737 msgstr "Indéfini"
3838
39 #: src/elektroid.c:398
39 #: src/elektroid.c:434
4040 #, c-format
4141 msgid "Connected to %s%s"
4242 msgstr "Connecté à %s%s"
4343
44 #: src/elektroid.c:406 src/elektroid.c:3215
44 #: src/elektroid.c:442 src/elektroid.c:3256
4545 msgid "Not connected"
4646 msgstr "Non connecté"
4747
48 #: src/elektroid.c:549
48 #: src/elektroid.c:585
4949 msgid "Waiting..."
5050 msgstr "En attente..."
5151
52 #: src/elektroid.c:552
52 #: src/elektroid.c:588
5353 msgid "Sending..."
5454 msgstr "Envoi en cours..."
5555
56 #: src/elektroid.c:556
56 #: src/elektroid.c:592
5757 msgid "Receiving..."
5858 msgstr "Réception en cours..."
5959
60 #: src/elektroid.c:624
60 #: src/elektroid.c:660
6161 msgid "Receive SysEx"
6262 msgstr "Réception de SysEx"
6363
64 #: src/elektroid.c:648
64 #: src/elektroid.c:684
6565 msgid "Save SysEx"
6666 msgstr "Sauvegarde de SysEx"
6767
68 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
68 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
69 #: res/gui.glade:1332 res/gui.glade:1432
6970 msgid "_Cancel"
7071 msgstr "_Annuler"
7172
72 #: src/elektroid.c:653
73 #: src/elektroid.c:689 res/gui.glade:1346
7374 msgid "_Save"
7475 msgstr "_Sauvegarder"
7576
76 #: src/elektroid.c:657
77 #: src/elektroid.c:693
7778 msgid "Received SysEx"
7879 msgstr "SysEx reçu"
7980
80 #: src/elektroid.c:662 src/elektroid.c:753
81 #: src/elektroid.c:698 src/elektroid.c:789
8182 msgid "SysEx Files"
8283 msgstr "Fichiers SysEx"
8384
84 #: src/elektroid.c:696
85 #: src/elektroid.c:732
8586 #, c-format
8687 msgid "Error while saving “%s”: %s."
8788 msgstr "Erreur lors de la sauvegarde de « %s » : %s."
8889
89 #: src/elektroid.c:744
90 #: src/elektroid.c:780
9091 msgid "Open SysEx"
9192 msgstr "Ouvrir SysEx"
9293
93 #: src/elektroid.c:749
94 #: src/elektroid.c:785
9495 msgid "_Open"
9596 msgstr "_Ouvrir"
9697
97 #: src/elektroid.c:770
98 #: src/elektroid.c:806
9899 #, c-format
99100 msgid "Error while loading “%s”: %s."
100101 msgstr "Erreur lors du chargement de « %s » : %s."
101102
102 #: src/elektroid.c:780
103 #: src/elektroid.c:816
103104 msgid "Send SysEx"
104105 msgstr "Envoyer SysEx"
105106
106 #: src/elektroid.c:882
107 #: src/elektroid.c:918
107108 #, c-format
108109 msgid "Error while deleting “%s”: %s."
109110 msgstr "Erreur lors de la suppression de « %s » : %s."
110111
111 #: src/elektroid.c:914
112 #: src/elektroid.c:950
112113 msgid "Are you sure you want to delete the selected items?"
113114 msgstr "Souhaitez-vous vraiment supprimer les éléments sélectionnés ?"
114115
115 #: src/elektroid.c:916
116 #: src/elektroid.c:952
116117 msgid "_Delete"
117118 msgstr "_Supprimer"
118119
119 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
120 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
120121 msgid "Rename"
121122 msgstr "Renommer"
122123
123 #: src/elektroid.c:987
124 #: src/elektroid.c:1023
124125 #, c-format
125126 msgid "Error while renaming to “%s”: %s."
126127 msgstr "Erreur lors du renommage de « %s » : %s."
127128
128 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
129 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
129130 msgid "Add Directory"
130131 msgstr "Ajout d'un répertoire"
131132
132 #: src/elektroid.c:1568
133 #: src/elektroid.c:1607
133134 #, c-format
134135 msgid "Error while creating dir “%s”: %s."
135136 msgstr "Erreur lors de la création du répertoire « %s » : %s."
136137
137 #: src/elektroid.c:1640
138 #: src/elektroid.c:1679
138139 msgid "Queued"
139140 msgstr "Mise en file d'attente"
140141
141 #: src/elektroid.c:1642
142 #: src/elektroid.c:1681
142143 msgid "Running"
143144 msgstr "En cours"
144145
145 #: src/elektroid.c:1644
146 #: src/elektroid.c:1683
146147 msgid "Completed"
147148 msgstr "Terminé"
148149
149 #: src/elektroid.c:1646
150 #: src/elektroid.c:1685
150151 msgid "Completed with errors"
151152 msgstr "Terminé avec des erreurs"
152153
153 #: src/elektroid.c:1648
154 #: src/elektroid.c:1687
154155 msgid "Canceled"
155156 msgstr "Annulé"
156157
157 #: src/elektroid.c:1660
158 #: src/elektroid.c:1699
158159 msgid "Upload"
159160 msgstr "Téléversement"
160161
161 #: src/elektroid.c:1662
162 #: src/elektroid.c:1701
162163 msgid "Download"
163164 msgstr "Téléchargement"
164165
165 #: src/elektroid.c:2518 src/elektroid.c:2559
166 #: src/elektroid.c:2560 src/elektroid.c:2601
166167 #, c-format
167168 msgid "Error while moving from “%s” to “%s”: %s."
168169 msgstr "Erreur lors du passage de « %s » à « %s » : %s."
183184 msgid "Show in File Manager"
184185 msgstr "Afficher dans un ge_stionnaire de fichier"
185186
186 #: res/gui.glade:139 res/gui.glade:202
187 #: res/gui.glade:130 res/gui.glade:183
187188 msgid "Delete"
188189 msgstr "Supprimer"
189190
190 #: res/gui.glade:168
191 #: res/gui.glade:159
191192 msgid "Download Selection"
192193 msgstr "Téléchargement de la sélection"
193194
194 #: res/gui.glade:238
195 #: res/gui.glade:219
195196 msgid "GNU/Linux transfer application for Elektron devices"
196197 msgstr "Application GNU/Linux de transfert pour les périphériques Elektron"
197198
198 #: res/gui.glade:241
199 #: res/gui.glade:222
199200 msgid "translator-credits"
200201 msgstr "Olivier Humbert <trebmuh@tuxfamily.org>"
201202
202 #: res/gui.glade:289
203 #: res/gui.glade:270
203204 msgid "_Receive SysEx"
204205 msgstr "_Réception de SysEx"
205206
206 #: res/gui.glade:302
207 #: res/gui.glade:283
207208 msgid "_Send SysEx"
208209 msgstr "Envoi de _Sysex"
209210
210 #: res/gui.glade:326
211 #: res/gui.glade:307
211212 msgid "OS _Upgrade"
212213 msgstr "Mise à jo_ur SE"
213214
214 #: res/gui.glade:350
215 #: res/gui.glade:331
215216 msgid "_About"
216217 msgstr "À _propos"
217218
218 #: res/gui.glade:434 res/gui.glade:583
219 #: res/gui.glade:415 res/gui.glade:585
219220 msgid "Go to Parent Directory"
220221 msgstr "Aller au répertoire parent"
221222
222 #: res/gui.glade:455 res/gui.glade:604
223 #: res/gui.glade:457 res/gui.glade:627
223224 msgid "Refresh Directory"
224225 msgstr "Rafraîchir le répertoire"
225226
226 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
227 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
227228 msgid "Name"
228229 msgstr "Nom"
229230
230 #: res/gui.glade:526 res/gui.glade:685
231 #: res/gui.glade:528 res/gui.glade:708
231232 msgid "Size"
232233 msgstr "Taille"
233234
234 #: res/gui.glade:738
235 #: res/gui.glade:761
235236 msgid "Refresh Devices"
236237 msgstr "Rafraîchir les périphériques"
237238
238239 #. It is recommended to split the text in two lines if it is too long
239 #: res/gui.glade:856
240 #: res/gui.glade:879
240241 msgid "Auto play"
241242 msgstr ""
242243 "Lecture\n"
243244 "automatique"
244245
245 #: res/gui.glade:1088
246 #: res/gui.glade:1101
246247 msgid "Status"
247248 msgstr "Statut"
248249
249 #: res/gui.glade:1099
250 #: res/gui.glade:1112
250251 msgid "Type"
251252 msgstr "Type"
252253
253 #: res/gui.glade:1120
254 #: res/gui.glade:1133
254255 msgid "Source"
255256 msgstr "Source"
256257
257 #: res/gui.glade:1134
258 #: res/gui.glade:1147
258259 msgid "Destination"
259260 msgstr "Destination"
260261
261 #: res/gui.glade:1149
262 #: res/gui.glade:1162
262263 msgid "Progress"
263264 msgstr "Progrès"
264265
265 #: res/gui.glade:1181
266 #: res/gui.glade:1194
266267 msgid "Cancel Tasks"
267268 msgstr "Annuler les tâches"
268269
269 #: res/gui.glade:1202
270 #: res/gui.glade:1215
270271 msgid "Remove Queued Tasks"
271272 msgstr "Supprimer les tâches dans la file d'attente"
272273
273 #: res/gui.glade:1223
274 #: res/gui.glade:1236
274275 msgid "Clear Finished Tasks"
275276 msgstr "Nettoyer les tâches terminées"
66 msgstr ""
77 "Project-Id-Version: elektroid 1.4\n"
88 "Report-Msgid-Bugs-To: dagargo@gmail.com\n"
9 "POT-Creation-Date: 2021-12-01 18:58+0100\n"
9 "POT-Creation-Date: 2022-06-03 08:47+0200\n"
1010 "PO-Revision-Date: 2021-12-01 17:56-0300\n"
1111 "Last-Translator: Gustavo Costa <xfgusta@gmail.com>\n"
1212 "Language-Team: \n"
1717 "X-Generator: Poedit 3.0\n"
1818 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
1919
20 #: src/elektroid.c:249
20 #: src/elektroid.c:246
2121 msgid "Samples"
2222 msgstr "Samples"
2323
24 #: src/elektroid.c:251
24 #: src/elektroid.c:248
2525 msgid "Presets"
2626 msgstr "Presets"
2727
28 #: src/elektroid.c:253
28 #: src/elektroid.c:250
2929 msgid "Projects"
3030 msgstr "Projects"
3131
32 #: src/elektroid.c:255
32 #: src/elektroid.c:252
3333 msgid "Sounds"
3434 msgstr "Sounds"
3535
36 #: src/elektroid.c:257 src/elektroid.c:1650 src/elektroid.c:1664
36 #: src/elektroid.c:254 src/elektroid.c:1689 src/elektroid.c:1703
3737 msgid "Undefined"
3838 msgstr "Indefinido"
3939
40 #: src/elektroid.c:398
40 #: src/elektroid.c:434
4141 #, c-format
4242 msgid "Connected to %s%s"
4343 msgstr "Conectado a %s%s"
4444
45 #: src/elektroid.c:406 src/elektroid.c:3215
45 #: src/elektroid.c:442 src/elektroid.c:3256
4646 msgid "Not connected"
4747 msgstr "Não conectado"
4848
49 #: src/elektroid.c:549
49 #: src/elektroid.c:585
5050 msgid "Waiting..."
5151 msgstr "Esperando..."
5252
53 #: src/elektroid.c:552
53 #: src/elektroid.c:588
5454 msgid "Sending..."
5555 msgstr "Enviando..."
5656
57 #: src/elektroid.c:556
57 #: src/elektroid.c:592
5858 msgid "Receiving..."
5959 msgstr "Recebendo..."
6060
61 #: src/elektroid.c:624
61 #: src/elektroid.c:660
6262 msgid "Receive SysEx"
6363 msgstr "Receber SysEx"
6464
65 #: src/elektroid.c:648
65 #: src/elektroid.c:684
6666 msgid "Save SysEx"
6767 msgstr "Salvar SysEx"
6868
69 #: src/elektroid.c:651 src/elektroid.c:747 src/elektroid.c:915
69 #: src/elektroid.c:687 src/elektroid.c:783 src/elektroid.c:951
70 #: res/gui.glade:1332 res/gui.glade:1432
7071 msgid "_Cancel"
7172 msgstr "_Cancelar"
7273
73 #: src/elektroid.c:653
74 #: src/elektroid.c:689 res/gui.glade:1346
7475 msgid "_Save"
7576 msgstr "_Salvar"
7677
77 #: src/elektroid.c:657
78 #: src/elektroid.c:693
7879 msgid "Received SysEx"
7980 msgstr "SysEx recebido"
8081
81 #: src/elektroid.c:662 src/elektroid.c:753
82 #: src/elektroid.c:698 src/elektroid.c:789
8283 msgid "SysEx Files"
8384 msgstr "Arquivos SysEx"
8485
85 #: src/elektroid.c:696
86 #: src/elektroid.c:732
8687 #, c-format
8788 msgid "Error while saving “%s”: %s."
8889 msgstr "Erro ao excluir \"%s\": %s."
8990
90 #: src/elektroid.c:744
91 #: src/elektroid.c:780
9192 msgid "Open SysEx"
9293 msgstr "Abrir SysEx"
9394
94 #: src/elektroid.c:749
95 #: src/elektroid.c:785
9596 msgid "_Open"
9697 msgstr "_Abrir"
9798
98 #: src/elektroid.c:770
99 #: src/elektroid.c:806
99100 #, c-format
100101 msgid "Error while loading “%s”: %s."
101102 msgstr "Erro ao excluir \"%s\": %s."
102103
103 #: src/elektroid.c:780
104 #: src/elektroid.c:816
104105 msgid "Send SysEx"
105106 msgstr "Enviar SysEx"
106107
107 #: src/elektroid.c:882
108 #: src/elektroid.c:918
108109 #, c-format
109110 msgid "Error while deleting “%s”: %s."
110111 msgstr "Erro ao excluir \"%s\": %s."
111112
112 #: src/elektroid.c:914
113 #: src/elektroid.c:950
113114 msgid "Are you sure you want to delete the selected items?"
114115 msgstr "Tem certeza de que deseja excluir os itens selecionados?"
115116
116 #: src/elektroid.c:916
117 #: src/elektroid.c:952
117118 msgid "_Delete"
118119 msgstr "_Excluir"
119120
120 #: src/elektroid.c:969 res/gui.glade:130 res/gui.glade:193
121 #: src/elektroid.c:1005 res/gui.glade:121 res/gui.glade:174
121122 msgid "Rename"
122123 msgstr "Renomar"
123124
124 #: src/elektroid.c:987
125 #: src/elektroid.c:1023
125126 #, c-format
126127 msgid "Error while renaming to “%s”: %s."
127128 msgstr "Erro ao renomear para \"%s\": %s."
128129
129 #: src/elektroid.c:1550 res/gui.glade:121 res/gui.glade:183 res/gui.glade:184
130 #: src/elektroid.c:1589 res/gui.glade:436 res/gui.glade:606
130131 msgid "Add Directory"
131132 msgstr "Adicionar diretório"
132133
133 #: src/elektroid.c:1568
134 #: src/elektroid.c:1607
134135 #, c-format
135136 msgid "Error while creating dir “%s”: %s."
136137 msgstr "Erro ao criar diretório \"%s\": %s."
137138
138 #: src/elektroid.c:1640
139 #: src/elektroid.c:1679
139140 msgid "Queued"
140141 msgstr "Na fila"
141142
142 #: src/elektroid.c:1642
143 #: src/elektroid.c:1681
143144 msgid "Running"
144145 msgstr "Executando"
145146
146 #: src/elektroid.c:1644
147 #: src/elektroid.c:1683
147148 msgid "Completed"
148149 msgstr "Completado"
149150
150 #: src/elektroid.c:1646
151 #: src/elektroid.c:1685
151152 msgid "Completed with errors"
152153 msgstr "Completado com erros"
153154
154 #: src/elektroid.c:1648
155 #: src/elektroid.c:1687
155156 msgid "Canceled"
156157 msgstr "Cancelado"
157158
158 #: src/elektroid.c:1660
159 #: src/elektroid.c:1699
159160 msgid "Upload"
160161 msgstr "Upload"
161162
162 #: src/elektroid.c:1662
163 #: src/elektroid.c:1701
163164 msgid "Download"
164165 msgstr "Download"
165166
166 #: src/elektroid.c:2518 src/elektroid.c:2559
167 #: src/elektroid.c:2560 src/elektroid.c:2601
167168 #, c-format
168169 msgid "Error while moving from “%s” to “%s”: %s."
169170 msgstr "Erro ao mover \"%s\" para \"%s\": %s."
184185 msgid "Show in File Manager"
185186 msgstr "Mostrar no gerenciador de arquivos"
186187
187 #: res/gui.glade:139 res/gui.glade:202
188 #: res/gui.glade:130 res/gui.glade:183
188189 msgid "Delete"
189190 msgstr "Excluir"
190191
191 #: res/gui.glade:168
192 #: res/gui.glade:159
192193 msgid "Download Selection"
193194 msgstr "Seleção de download"
194195
195 #: res/gui.glade:238
196 #: res/gui.glade:219
196197 msgid "GNU/Linux transfer application for Elektron devices"
197198 msgstr "Aplicativo GNU/Linux de transferência para dispositivos Elektron"
198199
199 #: res/gui.glade:241
200 #: res/gui.glade:222
200201 msgid "translator-credits"
201202 msgstr "Gustavo Costa <xfgusta@gmail.com>"
202203
203 #: res/gui.glade:289
204 #: res/gui.glade:270
204205 msgid "_Receive SysEx"
205206 msgstr "_Receber SysEx"
206207
207 #: res/gui.glade:302
208 #: res/gui.glade:283
208209 msgid "_Send SysEx"
209210 msgstr "_Enviar SysEx"
210211
211 #: res/gui.glade:326
212 #: res/gui.glade:307
212213 msgid "OS _Upgrade"
213214 msgstr "Atualizar _OS"
214215
215 #: res/gui.glade:350
216 #: res/gui.glade:331
216217 msgid "_About"
217218 msgstr "_Sobre"
218219
219 #: res/gui.glade:434 res/gui.glade:583
220 #: res/gui.glade:415 res/gui.glade:585
220221 msgid "Go to Parent Directory"
221222 msgstr "Ir para o diretório pai"
222223
223 #: res/gui.glade:455 res/gui.glade:604
224 #: res/gui.glade:457 res/gui.glade:627
224225 msgid "Refresh Directory"
225226 msgstr "Atualizar diretório"
226227
227 #: res/gui.glade:512 res/gui.glade:671 res/gui.glade:1362
228 #: res/gui.glade:514 res/gui.glade:694 res/gui.glade:1377
228229 msgid "Name"
229230 msgstr "Nome"
230231
231 #: res/gui.glade:526 res/gui.glade:685
232 #: res/gui.glade:528 res/gui.glade:708
232233 msgid "Size"
233234 msgstr "Tamanho"
234235
235 #: res/gui.glade:738
236 #: res/gui.glade:761
236237 msgid "Refresh Devices"
237238 msgstr "Atualizar dispositivos"
238239
239240 #. It is recommended to split the text in two lines if it is too long
240 #: res/gui.glade:856
241 #: res/gui.glade:879
241242 msgid "Auto play"
242243 msgstr "Reprodução automática"
243244
244 #: res/gui.glade:1088
245 #: res/gui.glade:1101
245246 msgid "Status"
246247 msgstr "Status"
247248
248 #: res/gui.glade:1099
249 #: res/gui.glade:1112
249250 msgid "Type"
250251 msgstr "Tipo"
251252
252 #: res/gui.glade:1120
253 #: res/gui.glade:1133
253254 msgid "Source"
254255 msgstr "Origem"
255256
256 #: res/gui.glade:1134
257 #: res/gui.glade:1147
257258 msgid "Destination"
258259 msgstr "Destino"
259260
260 #: res/gui.glade:1149
261 #: res/gui.glade:1162
261262 msgid "Progress"
262263 msgstr "Progresso"
263264
264 #: res/gui.glade:1181
265 #: res/gui.glade:1194
265266 msgid "Cancel Tasks"
266267 msgstr "Cancelar tarefas"
267268
268 #: res/gui.glade:1202
269 #: res/gui.glade:1215
269270 msgid "Remove Queued Tasks"
270271 msgstr "Remover tarefas em fila"
271272
272 #: res/gui.glade:1223
273 #: res/gui.glade:1236
273274 msgid "Clear Finished Tasks"
274275 msgstr "Limpar tarefas concluídas"
0 resdir = $(datadir)/elektroid/res
1 res_DATA = gui.glade gui.css
0 if CLI_ONLY
1 res_DATA = devices.json
2 desktop_DATA =
3 metainfo_DATA =
4 svgicon_DATA =
5 else
6 res_DATA = gui.glade gui.css devices.json
7 desktop_DATA = elektroid.desktop
8 metainfo_DATA = elektroid.appdata.xml
9 svgicon_DATA = elektroid.svg elektroid-symbolic.svg elektroid-wave-symbolic.svg elektroid-data-symbolic.svg elektroid-project-symbolic.svg elektroid-sound-symbolic.svg
10 endif
211
12 resdir = $(datadir)/elektroid
313 desktopdir = $(datadir)/applications
4 desktop_DATA = elektroid.desktop
5
614 metainfodir= $(datadir)/metainfo
7 metainfo_DATA = elektroid.appdata.xml
8
915 svgicondir = $(datarootdir)/icons/hicolor/scalable/apps
10 svgicon_DATA = elektroid.svg elektroid-symbolic.svg elektroid-wave-symbolic.svg elektroid-data-symbolic.svg elektroid-project-symbolic.svg elektroid-sound-symbolic.svg
1116
1217 gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datarootdir)/icons/hicolor
1318
0 [{
1 "id": 4,
2 "name": "Analog Four",
3 "alias": "af",
4 "filesystems": 56,
5 "storage": 0
6 }, {
7 "id": 6,
8 "name": "Analog Keys",
9 "alias": "ak",
10 "filesystems": 56,
11 "storage": 0
12 }, {
13 "id": 8,
14 "name": "Analog Rytm",
15 "alias": "ar",
16 "filesystems": 57,
17 "storage": 3
18 }, {
19 "id": 10,
20 "name": "Analog Heat",
21 "alias": "ah",
22 "filesystems": 40,
23 "storage": 0
24 }, {
25 "id": 12,
26 "name": "Digitakt",
27 "alias": "dt",
28 "filesystems": 57,
29 "storage": 3
30 }, {
31 "id": 14,
32 "name": "Analog Four MKII",
33 "alias": "af",
34 "filesystems": 56,
35 "storage": 0
36 }, {
37 "id": 16,
38 "name": "Analog Rytm MKII",
39 "alias": "ar",
40 "filesystems": 57,
41 "storage": 3
42 }, {
43 "id": 20,
44 "name": "Digitone",
45 "alias": "dn",
46 "filesystems": 56,
47 "storage": 0
48 }, {
49 "id": 22,
50 "name": "Analog Heat MKII",
51 "alias": "ah",
52 "filesystems": 40,
53 "storage": 0
54 }, {
55 "id": 28,
56 "name": "Digitone Keys",
57 "alias": "dn",
58 "filesystems": 56,
59 "storage": 0
60 }, {
61 "id": 25,
62 "name": "Model:Samples",
63 "alias": "ms",
64 "filesystems": 57,
65 "storage": 3
66 }, {
67 "id": 27,
68 "name": "Model:Cycles",
69 "alias": "mc",
70 "filesystems": 30,
71 "storage": 1
72 }, {
73 "id": 30,
74 "name": "Syntakt",
75 "alias": "st",
76 "filesystems": 56,
77 "storage": 0
78 }]
1616 sodipodi:docname="elektroid-project-symbolic.svg"
1717 inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
1818 <title
19 id="title2309">elektroid pattern symbolic</title>
19 id="title2309">elektroid project symbolic</title>
2020 <defs
2121 id="defs918" />
2222 <sodipodi:namedview
5050 <dc:format>image/svg+xml</dc:format>
5151 <dc:type
5252 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
53 <dc:title>elektroid pattern symbolic</dc:title>
53 <dc:title>elektroid project symbolic</dc:title>
5454 <cc:license
5555 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
5656 <dc:creator>
00 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
31 <svg
42 xmlns:dc="http://purl.org/dc/elements/1.1/"
53 xmlns:cc="http://creativecommons.org/ns#"
1412 version="1.1"
1513 id="svg924"
1614 sodipodi:docname="elektroid-wave-symbolic.svg"
17 inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
15 inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
1816 <title
1917 id="title2309">elektroid wave symbolic</title>
2018 <defs
2725 inkscape:pageopacity="0.0"
2826 inkscape:pageshadow="2"
2927 inkscape:zoom="32"
30 inkscape:cx="-0.63389357"
28 inkscape:cx="5.6161064"
3129 inkscape:cy="7.6958677"
3230 inkscape:document-units="px"
3331 inkscape:current-layer="layer1"
3432 showgrid="true"
3533 inkscape:window-width="1680"
36 inkscape:window-height="1023"
34 inkscape:window-height="1013"
3735 inkscape:window-x="0"
3836 inkscape:window-y="0"
3937 inkscape:window-maximized="1"
40 inkscape:pagecheckerboard="false">
38 inkscape:pagecheckerboard="false"
39 inkscape:document-rotation="0">
4140 <inkscape:grid
4241 type="xygrid"
4342 id="grid1511" />
8281 id="layer1"
8382 transform="translate(0,-292.76667)">
8483 <rect
85 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.14143676;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
84 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.141437;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
8685 id="rect1509-6-9-3-6-0-2"
8786 width="0.26458341"
8887 height="2.1166418"
9190 inkscape:transform-center-x="0.81558974"
9291 inkscape:transform-center-y="-3.2084846" />
9392 <rect
94 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.17322472;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
93 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.158132;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
9594 id="rect1509-6-9-3-6-0-8-9-4"
9695 width="0.26458305"
97 height="3.1749952"
96 height="2.6458395"
9897 x="2.1166668"
99 y="293.29584"
98 y="293.56042"
10099 inkscape:transform-center-x="0.81559079"
101 inkscape:transform-center-y="-4.8128001" />
102 <rect
103 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.14143814;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
100 inkscape:transform-center-y="-4.0106778" />
101 <rect
102 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.100013;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
104103 id="rect1509-6-9-3-1-3-6-5-3"
105104 width="0.52916664"
106 height="1.0583419"
105 height="0.52918494"
107106 x="2.9104166"
108 y="294.35416" />
109 <rect
110 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.26460543;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
107 y="294.61874" />
108 <rect
109 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.187104;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
111110 id="rect1509-6-9-3-1-3-6-5-6"
112 width="0.5291667"
111 width="0.26458329"
113112 height="3.7041647"
114113 x="0.52916664"
115114 y="293.03125" />
116115 <rect
117 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.10001156;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
116 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.086613;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
118117 id="rect1509-6-9-3-6-0-8-3"
119118 width="0.2645832"
120 height="1.0583349"
119 height="0.79375243"
121120 x="3.7041664"
122121 y="294.35416"
123122 inkscape:transform-center-x="0.81558898"
124 inkscape:transform-center-y="-1.6042882" />
125 <rect
126 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071922;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
123 inkscape:transform-center-y="-1.2032179" />
124 <rect
125 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
127126 id="rect1509-6-9-6-8-2-2-9"
128 width="0.52916664"
127 width="0.26458341"
129128 height="0.26458672"
130129 x="0.52916658"
131130 y="292.76666" />
132131 <rect
133 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071922;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
132 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
134133 id="rect1509-6-9-6-8-2-2-1"
135 width="0.52916664"
134 width="0.26458341"
136135 height="0.26458672"
137136 x="0.52916658"
138137 y="296.73541" />
139138 <rect
140 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071921;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
139 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0707198;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
141140 id="rect1509-6-9-6-8-2-2-76"
142 width="0.52916652"
143 height="0.26458672"
144 x="2.9104166"
141 width="0.26458329"
142 height="0.52918279"
143 x="3.175"
145144 y="294.08957" />
146145 <rect
147 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071923;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
146 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0707191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
148147 id="rect1509-6-9-6-8-2-2-73"
149 width="0.52916676"
150 height="0.26458672"
151 x="2.9104164"
152 y="295.41251" />
153 <rect
154 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0707193;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
148 width="0.26458353"
149 height="0.5291729"
150 x="3.1749997"
151 y="295.14792" />
152 <rect
153 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500056;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
155154 id="rect1509-6-9-6-8-2-2-7-5-6"
156155 width="0.26458332"
157 height="0.52917457"
156 height="0.26458189"
158157 x="3.4395833"
159 y="294.61874" />
160 <rect
161 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.1000117;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
158 y="294.88333" />
159 <rect
160 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0707206;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
162161 id="rect1509-6-9-9-3"
163162 width="0.52916664"
164 height="0.52916938"
163 height="0.26459584"
165164 x="2.4494169e-09"
166165 y="294.61874" />
167166 <rect
168 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
167 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
169168 id="rect1509-6-9-6-8-2-2-3-1-5-9"
170169 width="0.26458332"
171170 height="0.26458672"
172171 x="5.5366083e-08"
173172 y="294.35416" />
174173 <rect
175 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
176 id="rect1509-6-9-6-8-2-2-3-1-5-4"
177 width="0.26458332"
178 height="0.26458672"
179 x="5.5366083e-08"
174 style="opacity:0.6;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500051;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
175 id="rect1509-6-9-9-3-8"
176 width="0.26458332"
177 height="0.2645767"
178 x="3.96875"
179 y="294.88333" />
180 <rect
181 style="opacity:0.25;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
182 id="rect1509-6-9-6-8-2-2-3-1-5-4-2"
183 width="0.26458332"
184 height="0.26458672"
185 x="3.9687502"
180186 y="295.14792" />
181187 <rect
182 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071895;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
183 id="rect1509-6-9-9-3-8"
184 width="0.26458332"
185 height="0.52916938"
186 x="3.9687495"
187 y="294.61874" />
188 <rect
189 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
190 id="rect1509-6-9-6-8-2-2-3-1-5-9-1"
191 width="0.26458332"
192 height="0.26458672"
193 x="3.9687498"
194 y="294.35416" />
195 <rect
196 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
197 id="rect1509-6-9-6-8-2-2-3-1-5-4-2"
198 width="0.26458332"
199 height="0.26458672"
200 x="3.9687498"
201 y="295.14792" />
202 <rect
203 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
188 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
204189 id="rect1509-6-9-6-8-2-2-3-1-5-9-9"
205190 width="0.26458332"
206 height="0.26458672"
191 height="0.264586"
207192 x="2.3812499"
208 y="293.29584" />
209 <rect
210 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
193 y="293.82501" />
194 <rect
195 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500055;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
211196 id="rect1509-6-9-6-8-2-2-3-1-5-9-3"
212197 width="0.26458332"
213 height="0.26458672"
198 height="0.26458153"
214199 x="2.3812499"
215 y="296.20624" />
216 <rect
217 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.15813197;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
200 y="295.67709" />
201 <rect
202 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.122488;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
218203 id="rect1509-6-9-3-6-0-8-9-4-9"
219204 width="0.26458305"
220 height="2.6458344"
205 height="1.5874901"
221206 x="2.3812499"
222 y="293.56042"
207 y="294.0896"
223208 inkscape:transform-center-x="0.81559079"
224 inkscape:transform-center-y="-4.0106747" />
225 <rect
226 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.12248758;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
209 inkscape:transform-center-y="-2.40637" />
210 <rect
211 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.122488;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
227212 id="rect1509-6-9-3-6-0-2-0"
228213 width="0.26458344"
229214 height="1.5874749"
232217 inkscape:transform-center-x="0.81558972"
233218 inkscape:transform-center-y="-2.4063427" />
234219 <rect
235 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
220 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
236221 id="rect1509-6-9-6-8-2-2-3-1-5-8"
237222 width="0.26458332"
238223 height="0.26458672"
239224 x="1.3229166"
240225 y="293.82501" />
241226 <rect
242 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.05000604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
227 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
243228 id="rect1509-6-9-6-8-2-2-3-1-5-85"
244229 width="0.26458332"
245230 height="0.26458672"
246231 x="1.3229166"
247232 y="295.67709" />
248233 <rect
249 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071895;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
234 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500064;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
250235 id="rect1509-6-9-9-3-0"
251236 width="0.26458332"
252 height="0.52916938"
237 height="0.26458997"
253238 x="1.0583333"
254239 y="294.61874" />
255240 <rect
256 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071895;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
241 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.070719;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
257242 id="rect1509-6-9-9-3-0-9"
258243 width="0.26458332"
259244 height="0.52916938"
260245 x="1.8520832"
261246 y="294.61874" />
262247 <rect
263 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.07071895;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
248 style="opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500053;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
264249 id="rect1509-6-9-9-3-0-6"
265250 width="0.26458332"
266 height="0.52916938"
251 height="0.2645779"
267252 x="2.6458333"
253 y="294.88333" />
254 <rect
255 style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.141437;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
256 id="rect1509-6-9-3-1-3-6-5-6-3"
257 width="0.26458329"
258 height="2.1166682"
259 x="0.79374999"
260 y="293.82501" />
261 <rect
262 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
263 id="rect1509-6-9-6-8-2-2-3-1-5-8-6"
264 width="0.26458332"
265 height="0.26459229"
266 x="0.79374993"
267 y="295.94168" />
268 <rect
269 style="opacity:0.34;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
270 id="rect1509-6-9-6-8-2-2-9-2"
271 width="0.26458341"
272 height="0.26458672"
273 x="0.79374999"
274 y="296.20627" />
275 <rect
276 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
277 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9"
278 width="0.26458332"
279 height="0.26459229"
280 x="0.79374993"
281 y="293.56042" />
282 <rect
283 style="opacity:0.34;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
284 id="rect1509-6-9-6-8-2-2-9-2-1"
285 width="0.26458341"
286 height="0.26458672"
287 x="0.79374999"
288 y="293.29584" />
289 <rect
290 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
291 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-2"
292 width="0.26458332"
293 height="0.26459229"
294 x="2.9104166"
295 y="295.41251" />
296 <rect
297 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
298 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-0"
299 width="0.26458332"
300 height="0.26459229"
301 x="2.9104166"
302 y="294.0896" />
303 <rect
304 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
305 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-0-9"
306 width="0.26458332"
307 height="0.26459229"
308 x="2.6458333"
309 y="294.61877" />
310 <rect
311 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
312 id="rect1509-6-9-6-8-2-2-73-0"
313 width="0.26458353"
314 height="0.26458672"
315 x="1.058333"
316 y="294.88333" />
317 <rect
318 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
319 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-0-6"
320 width="0.26458332"
321 height="0.26459229"
322 x="3.4395833"
323 y="294.61877" />
324 <rect
325 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0707198;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
326 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-26"
327 width="0.26458332"
328 height="0.52918172"
329 x="-2.1525574e-08"
330 y="294.88333" />
331 <rect
332 style="opacity:0.5;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.050006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
333 id="rect1509-6-9-6-8-2-2-3-1-5-9-18"
334 width="0.26458332"
335 height="0.26458672"
336 x="0.26458338"
337 y="294.88333" />
338 <rect
339 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
340 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-7"
341 width="0.26458332"
342 height="0.26459229"
343 x="2.1166666"
344 y="293.29584" />
345 <rect
346 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
347 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-9"
348 width="0.26458332"
349 height="0.26459229"
350 x="2.1166666"
351 y="296.20627" />
352 <rect
353 style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500046;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
354 id="rect1509-6-9-9-3-8-2"
355 width="0.26458332"
356 height="0.26457065"
357 x="2.9104166"
358 y="294.35416" />
359 <rect
360 style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500046;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
361 id="rect1509-6-9-9-3-8-2-0"
362 width="0.26458332"
363 height="0.26457065"
364 x="2.9104166"
365 y="295.14792" />
366 <rect
367 style="opacity:0.34;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.070718;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
368 id="rect1509-6-9-6-8-2-2-9-2-1-2"
369 width="0.26458341"
370 height="0.52915663"
371 x="0.26458335"
372 y="294.0896" />
373 <rect
374 style="opacity:0.34;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0866123;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
375 id="rect1509-6-9-6-8-2-2-9-2-1-3"
376 width="0.26458341"
377 height="0.79374909"
378 x="0.26458335"
379 y="295.14792" />
380 <rect
381 style="opacity:0.4;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500056;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
382 id="rect1509-6-9-6-8-2-2-7-5-6-3"
383 width="0.26458332"
384 height="0.26458189"
385 x="3.9687498"
386 y="294.35416" />
387 <rect
388 style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500074;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
389 id="rect1509-6-9-3-1-3-6-5-3-6"
390 width="0.26458305"
391 height="0.26460183"
392 x="3.9687498"
268393 y="294.61874" />
394 <rect
395 style="opacity:0.66;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.0500066;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
396 id="rect1509-6-9-6-8-2-2-3-1-5-8-6-9-2-5"
397 width="0.26458332"
398 height="0.26459229"
399 x="3.7041664"
400 y="295.14792" />
269401 </g>
270402 </svg>
44 <metadata_license>FSFAP</metadata_license>
55 <project_license>GPL-3.0+</project_license>
66 <name>elektroid</name>
7 <summary>Sample transfer application</summary>
7 <summary>Transfer application for Elektron devices</summary>
88 <description>
9 <p>Elektroid is an sample transfer application for Elektron devices.</p>
10 <p>With elektroid you can easily load audio files like flac or wav into your
11 elektron sampler. You can also transfer audio samples from your elektroid
12 device to your local hard disk.</p>
9 <p>Elektroid is an transfer application for Elektron devices.</p>
10 <p>With Elektroid you can easily upload and download audio files, projects, sounds and presets to and from Elektron devices. It can also be used to send and receive MIDI SysEx files.</p>
11 <p>Elektroid has been reported to work with Model:Samples, Model:Cycles, Digitakt, Digitone and Analog Rytm MKI and MKII.</p>
1312 </description>
1413 <launchable type="desktop-id">elektroid.desktop</launchable>
1514 <provides>
00 [Desktop Entry]
11 Type=Application
22 Name=Elektroid
3 Comment=Sample transfer application for Elektron devices
4 Comment[ca]=Aplicació de transferència de mostres per a dispositius Elektron
5 Comment[de]=Sample Transfer Anwendung für Elektron Instrumente
6 Comment[es]=Aplicación de transferencia de muestras para dispositivos Elektron
7 Comment[fr]=Application de transfert d'échantillon pour les périphériques Elektron
8 Comment[pt_BR]=Aplicativo de transferência de sample para dispositivos Elektron
3 Comment=Transfer application for Elektron devices
4 Comment[ca]=Aplicació de transferència per a dispositius Elektron
5 Comment[de]=Transfer Anwendung für Elektron Instrumente
6 Comment[es]=Aplicación de transferencia para dispositivos Elektron
7 Comment[fr]=Application de transfert pour les périphériques Elektron
8 Comment[pt_BR]=Aplicativo de transferência para dispositivos Elektron
99 Categories=Music;AudioVideo;X-Sound;Audio;X-Alsa
1010 Keywords=music;alsa;realtime;standalone;
1111 Exec=elektroid
2323 <!-- interface-css-provider-path gui.css -->
2424 <!-- interface-license-type gplv3 -->
2525 <!-- interface-name Elektroid -->
26 <!-- interface-description GNU/Linux sample transfer application for Elektron devices -->
26 <!-- interface-description GNU/Linux transfer application for Elektron devices -->
2727 <!-- interface-copyright David Garc\303\255a Go\303\261i -->
2828 <object class="GtkListStore" id="devices_list_store">
2929 <columns>
256256 <object class="GtkBox">
257257 <property name="visible">True</property>
258258 <property name="can-focus">False</property>
259 <property name="margin-left">9</property>
260 <property name="margin-right">9</property>
259 <property name="margin-start">9</property>
260 <property name="margin-end">9</property>
261261 <property name="margin-top">9</property>
262262 <property name="margin-bottom">9</property>
263263 <property name="orientation">vertical</property>
354354 <object class="GtkPaned">
355355 <property name="visible">True</property>
356356 <property name="can-focus">False</property>
357 <property name="margin-left">6</property>
358 <property name="margin-right">6</property>
357 <property name="margin-start">6</property>
358 <property name="margin-end">6</property>
359359 <property name="margin-top">6</property>
360360 <property name="hexpand">True</property>
361361 <property name="vexpand">True</property>
10351035 <object class="GtkFrame">
10361036 <property name="visible">True</property>
10371037 <property name="can-focus">False</property>
1038 <property name="hexpand">True</property>
10391038 <property name="label-xalign">0</property>
1040 <property name="label-yalign">0</property>
1041 <property name="shadow-type">in</property>
1042 <child>
1043 <object class="GtkAlignment">
1039 <child>
1040 <object class="GtkDrawingArea" id="waveform_draw_area">
10441041 <property name="visible">True</property>
10451042 <property name="can-focus">False</property>
1046 <child>
1047 <object class="GtkDrawingArea" id="waveform_draw_area">
1048 <property name="visible">True</property>
1049 <property name="can-focus">False</property>
1050 <property name="hexpand">True</property>
1051 <style>
1052 <class name="local"/>
1053 </style>
1054 </object>
1055 </child>
1056 </object>
1057 </child>
1058 <child type="label">
1059 <object class="GtkLabel">
1060 <property name="can-focus">False</property>
1061 </object>
1043 <property name="hexpand">True</property>
1044 <style>
1045 <class name="local"/>
1046 <class name="waveform"/>
1047 </style>
1048 </object>
1049 </child>
1050 <child type="label_item">
1051 <placeholder/>
10621052 </child>
10631053 </object>
10641054 <packing>
1065 <property name="expand">False</property>
1055 <property name="expand">True</property>
10661056 <property name="fill">True</property>
10671057 <property name="position">1</property>
10681058 </packing>
12811271 <object class="GtkStatusbar" id="status_bar">
12821272 <property name="visible">True</property>
12831273 <property name="can-focus">False</property>
1274 <property name="halign">end</property>
12841275 <property name="orientation">vertical</property>
12851276 </object>
12861277 <packing>
12961287 <property name="visible">True</property>
12971288 <property name="can-focus">False</property>
12981289 <property name="title">Elektroid</property>
1290 <property name="has-subtitle">False</property>
12991291 <property name="show-close-button">True</property>
13001292 <child>
13011293 <object class="GtkMenuButton" id="menu_button">
13241316 <child internal-child="vbox">
13251317 <object class="GtkBox">
13261318 <property name="can-focus">False</property>
1327 <property name="margin-left">6</property>
1328 <property name="margin-right">6</property>
1319 <property name="margin-start">6</property>
1320 <property name="margin-end">6</property>
13291321 <property name="margin-top">6</property>
13301322 <property name="margin-bottom">6</property>
13311323 <property name="orientation">vertical</property>
13361328 <property name="layout-style">end</property>
13371329 <child>
13381330 <object class="GtkButton" id="name_dialog_cancel_button">
1339 <property name="label">gtk-cancel</property>
1331 <property name="label" translatable="yes">_Cancel</property>
13401332 <property name="visible">True</property>
13411333 <property name="can-focus">True</property>
13421334 <property name="receives-default">True</property>
1343 <property name="use-stock">True</property>
1335 <property name="use-underline">True</property>
13441336 </object>
13451337 <packing>
13461338 <property name="expand">False</property>
13501342 </child>
13511343 <child>
13521344 <object class="GtkButton" id="name_dialog_accept_button">
1353 <property name="label">gtk-ok</property>
1345 <property name="label" translatable="yes">_Save</property>
13541346 <property name="visible">True</property>
13551347 <property name="can-focus">True</property>
13561348 <property name="can-default">True</property>
13571349 <property name="has-default">True</property>
13581350 <property name="receives-default">False</property>
1359 <property name="use-stock">True</property>
1351 <property name="use-underline">True</property>
13601352 </object>
13611353 <packing>
13621354 <property name="expand">False</property>
14241416 <child internal-child="vbox">
14251417 <object class="GtkBox">
14261418 <property name="can-focus">False</property>
1427 <property name="margin-left">6</property>
1428 <property name="margin-right">6</property>
1419 <property name="margin-start">6</property>
1420 <property name="margin-end">6</property>
14291421 <property name="margin-top">6</property>
14301422 <property name="margin-bottom">6</property>
14311423 <property name="orientation">vertical</property>
14361428 <property name="layout-style">end</property>
14371429 <child>
14381430 <object class="GtkButton" id="progress_dialog_cancel_button">
1439 <property name="label">gtk-cancel</property>
1431 <property name="label" translatable="yes">_Cancel</property>
14401432 <property name="visible">True</property>
14411433 <property name="can-focus">True</property>
14421434 <property name="receives-default">True</property>
1443 <property name="use-stock">True</property>
1435 <property name="use-underline">True</property>
14441436 </object>
14451437 <packing>
14461438 <property name="expand">True</property>
22 GUI_LIBS = alsa gtk+-3.0 libpulse libpulse-mainloop-glib zlib json-glib-1.0 libzip
33 CLI_LIBS = alsa glib-2.0 zlib json-glib-1.0 libzip
44
5 elektroid_CFLAGS = -I$(top_srcdir)/src `$(PKG_CONFIG) --cflags $(GUI_LIBS)` $(SNDFILE_CFLAGS) $(SAMPLERATE_CFLAGS)
5 elektroid_CFLAGS = -I$(top_srcdir)/src `$(PKG_CONFIG) --cflags $(GUI_LIBS)` $(SNDFILE_CFLAGS) $(SAMPLERATE_CFLAGS) -D_GNU_SOURCE
66 elektroid_LDFLAGS = `$(PKG_CONFIG) --libs $(GUI_LIBS)` $(SNDFILE_LIBS) $(SAMPLERATE_LIBS)
7 elektroid_cli_CFLAGS = -I$(top_srcdir)/src `$(PKG_CONFIG) --cflags $(CLI_LIBS)` $(SNDFILE_CFLAGS) $(SAMPLERATE_CFLAGS)
7 elektroid_cli_CFLAGS = -I$(top_srcdir)/src `$(PKG_CONFIG) --cflags $(CLI_LIBS)` $(SNDFILE_CFLAGS) $(SAMPLERATE_CFLAGS) -D_GNU_SOURCE
88 elektroid_cli_LDFLAGS = `$(PKG_CONFIG) --libs $(CLI_LIBS)` $(SNDFILE_LIBS) $(SAMPLERATE_LIBS)
99
1010 if CLI_ONLY
2222 SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
2323 SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
2424
25 AM_CPPFLAGS = -Wall -O3 -DDATADIR='"$(datadir)"' -DLOCALEDIR=\""$(localedir)"\"
25 AM_CPPFLAGS = -Wall -O3 -DDATADIR='"$(datadir)/$(PACKAGE)"' -DLOCALEDIR='"$(localedir)"'
2323 #include <poll.h>
2424 #include <zlib.h>
2525 #include <libgen.h>
26 #include <json-glib/json-glib.h>
2726 #include "connector.h"
2827 #include "utils.h"
2928 #include "sample.h"
3029 #include "package.h"
30 #include "../config.h"
3131
3232 #define KB 1024
3333 #define BUFF_SIZE (4 * KB)
3636 #define OS_TRANSF_BLOCK_BYTES 0x800
3737 #define POLL_TIMEOUT 20
3838 #define MAX_ZIP_SIZE (128 * 1024 * 1024)
39
40 #define AFMK1_ID 0x04
41 #define AKEYS_ID 0x06
42 #define ARMK1_ID 0x08
43 #define AHMK1_ID 0x0a
44 #define DTAKT_ID 0x0c
45 #define AFMK2_ID 0x0e
46 #define ARMK2_ID 0x10
47 #define DTONE_ID 0x14
48 #define AHMK2_ID 0x16
49 #define DKEYS_ID 0x1c
50 #define MOD_S_ID 0x19
51 #define MOD_C_ID 0x1b
5239
5340 #define FS_DATA_PRJ_PREFIX "/projects"
5441 #define FS_DATA_SND_PREFIX "/soundbanks"
251238
252239 static const gchar *FS_TYPE_NAMES[] = { "+Drive", "RAM" };
253240
254 static const struct connector_device_desc ANALOG_FOUR_DESC = {
255 .name = "Analog Four",
256 .alias = "af",
257 .id = AFMK1_ID,
258 .fss = FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
259 .storages = 0
260 };
261
262 static const struct connector_device_desc ANALOG_KEYS_DESC = {
263 .name = "Analog Keys",
264 .alias = "ak",
265 .id = AKEYS_ID,
266 .fss = FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
267 .storages = 0
268 };
269
270 static const struct connector_device_desc ANALOG_RYTM_DESC = {
271 .name = "Analog Rytm",
272 .alias = "ar",
273 .id = ARMK1_ID,
274 .fss = FS_SAMPLES | FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
275 .storages = STORAGE_PLUS_DRIVE | STORAGE_RAM
276 };
277
278 static const struct connector_device_desc ANALOG_HEAT_DESC = {
279 .name = "Analog Heat",
280 .alias = "ah",
281 .id = AHMK1_ID,
282 .fss = FS_DATA_ALL | FS_DATA_SND,
283 .storages = 0
284 };
285
286 static const struct connector_device_desc DIGITAKT_DESC = {
287 .name = "Digitakt",
288 .alias = "dt",
289 .id = DTAKT_ID,
290 .fss = FS_SAMPLES | FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
291 .storages = STORAGE_PLUS_DRIVE | STORAGE_RAM
292 };
293
294 static const struct connector_device_desc ANALOG_FOUR_MKII_DESC = {
295 .name = "Analog Four MKII",
296 .alias = "af",
297 .id = AFMK2_ID,
298 .fss = FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
299 .storages = 0
300 };
301
302 static const struct connector_device_desc ANALOG_RYTM_MKII_DESC = {
303 .name = "Analog Rytm MKII",
304 .alias = "ar",
305 .id = ARMK2_ID,
306 .fss = FS_SAMPLES | FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
307 .storages = STORAGE_PLUS_DRIVE | STORAGE_RAM
308 };
309
310 static const struct connector_device_desc DIGITONE_DESC = {
311 .name = "Digitone",
312 .alias = "dn",
313 .id = DTONE_ID,
314 .fss = FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
315 .storages = 0
316 };
317
318 static const struct connector_device_desc ANALOG_HEAT_MKII_DESC = {
319 .name = "Analog Heat MKII",
320 .alias = "ah",
321 .id = AHMK2_ID,
322 .fss = FS_DATA_ALL | FS_DATA_SND,
323 .storages = 0
324 };
325
326 static const struct connector_device_desc DIGITONE_KEYS_DESC = {
327 .name = "Digitone Keys",
328 .alias = "dn",
329 .id = DKEYS_ID,
330 .fss = FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
331 .storages = 0
332 };
333
334 static const struct connector_device_desc MODEL_SAMPLES_DESC = {
335 .name = "Model:Samples",
336 .alias = "ms",
337 .id = MOD_S_ID,
338 .fss = FS_SAMPLES | FS_DATA_ALL | FS_DATA_PRJ | FS_DATA_SND,
339 .storages = STORAGE_PLUS_DRIVE | STORAGE_RAM
340 };
341
342 static const struct connector_device_desc MODEL_CYCLES_DESC = {
343 .name = "Model:Cycles",
344 .alias = "mc",
345 .id = MOD_C_ID,
346 .fss = FS_RAW_ALL | FS_RAW_PRESETS | FS_DATA_ALL | FS_DATA_PRJ,
347 .storages = STORAGE_PLUS_DRIVE
348 };
349
350 static const struct connector_device_desc *CONNECTOR_DEVICE_DESCS[] = {
351 &ANALOG_FOUR_DESC, &ANALOG_KEYS_DESC, &ANALOG_RYTM_DESC, &ANALOG_HEAT_DESC,
352 &DIGITAKT_DESC, &ANALOG_FOUR_MKII_DESC, &ANALOG_RYTM_MKII_DESC,
353 &DIGITONE_DESC, &ANALOG_HEAT_MKII_DESC, &DIGITONE_KEYS_DESC,
354 &MODEL_SAMPLES_DESC, &MODEL_CYCLES_DESC
355 };
356
357241 static const struct fs_operations FS_SAMPLES_OPERATIONS = {
358242 .fs = FS_SAMPLES,
359243 .readdir = connector_read_samples_dir,
23612245 {
23622246 free (connector->device_name);
23632247 free (connector->fw_version);
2364 free (connector->alias);
2248 free (connector->overbridge_name);
23652249 connector->device_name = NULL;
23662250 }
23672251
23822266 g_hash_table_destroy (connector->dir_cache);
23832267 connector->dir_cache = NULL;
23842268 }
2269
2270 if (connector->device_desc.name)
2271 {
2272 g_free (connector->device_desc.name);
2273 connector->device_desc.name = NULL;
2274 }
2275
2276 if (connector->device_desc.alias)
2277 {
2278 g_free (connector->device_desc.alias);
2279 connector->device_desc.alias = NULL;
2280 }
2281
23852282 }
23862283
23872284 gint
24402337 return (statfs->bsize - statfs->bfree) * 100.0 / statfs->bsize;
24412338 }
24422339
2443 static const struct connector_device_desc *
2444 connector_get_device_desc (guint8 id)
2445 {
2446 guint total =
2447 sizeof (CONNECTOR_DEVICE_DESCS) / sizeof (struct connector_device_desc *);
2448 guint i;
2449
2450 for (i = 0; i < total; i++)
2451 {
2452 if (id == CONNECTOR_DEVICE_DESCS[i]->id)
2453 {
2454 return CONNECTOR_DEVICE_DESCS[i];
2455 }
2456 }
2457 return NULL;
2458 }
2459
24602340 gint
2461 connector_init (struct connector *connector, gint card)
2462 {
2463 int err;
2341 connector_init (struct connector *connector, gint card,
2342 const char *device_filename)
2343 {
2344 gint err;
2345 guint8 id;
24642346 GByteArray *tx_msg;
24652347 GByteArray *rx_msg;
24662348 snd_rawmidi_params_t *params;
24732355 connector->rx_len = 0;
24742356 connector->pfds = NULL;
24752357 connector->dir_cache = NULL;
2358 connector->device_desc.name = NULL;
2359 connector->device_desc.alias = NULL;
24762360 if (card < 0)
24772361 {
24782362 debug_print (1, "Invalid card\n");
25612445 err = -EIO;
25622446 goto cleanup_params;
25632447 }
2564 connector->alias = strdup ((gchar *) & rx_msg->data[7 + rx_msg->data[6]]);
2565 connector->device_desc = connector_get_device_desc (rx_msg->data[5]);
2448 connector->overbridge_name =
2449 strdup ((gchar *) & rx_msg->data[7 + rx_msg->data[6]]);
2450 id = rx_msg->data[5];
25662451 free_msg (rx_msg);
2567 if (!connector->device_desc)
2452 if (load_device_desc (&connector->device_desc, id, device_filename))
25682453 {
25692454 err = -ENODEV;
25702455 goto cleanup_params;
25952480 }
25962481
25972482 snprintf (connector->device_name, LABEL_MAX, "%s %s (%s)",
2598 connector->device_desc->name,
2599 connector->fw_version, connector->alias);
2483 connector->device_desc.name,
2484 connector->fw_version, connector->overbridge_name);
26002485 debug_print (1, "Connected to %s\n", connector->device_name);
26012486 err = 0;
26022487
34183303 }
34193304
34203305 if (package_begin
3421 (&pkg, pkg_name, connector->fw_version, connector->device_desc, type))
3306 (&pkg, pkg_name, connector->fw_version, &connector->device_desc, type))
34223307 {
34233308 g_free (pkg_name);
34243309 return -1;
36193504 name = connector_get_download_name (connector, remote_iter, ops, src_fpath);
36203505 if (name)
36213506 {
3622 dl_ext = connector_get_full_ext (connector->device_desc, ops);
3507 dl_ext = connector_get_full_ext (&connector->device_desc, ops);
36233508 filename = malloc (PATH_MAX);
36243509 snprintf (filename, PATH_MAX, "%s.%s%s", name, dl_ext, md_ext);
36253510 path = chain_path (dst_dir, filename);
38083693 struct package pkg;
38093694 struct connector *connector = data;
38103695
3811 ret = package_open (&pkg, input, connector->device_desc);
3696 ret = package_open (&pkg, input, &connector->device_desc);
38123697 if (!ret)
38133698 {
38143699 ret = package_send_pkg_resources (&pkg, path, control, connector,
2727 #define SYSEX_TIMEOUT 5000
2828 #define REST_TIME 50000
2929
30 struct connector_device_desc
31 {
32 const gchar *name;
33 const gchar *alias;
34 guint8 id;
35 guint8 fss;
36 guint8 storages;
37 };
38
3930 struct connector
4031 {
41 const struct connector_device_desc *device_desc;
32 struct connector_device_desc device_desc;
4233 snd_rawmidi_t *inputp;
4334 snd_rawmidi_t *outputp;
4435 gchar *device_name;
45 gchar *alias;
36 gchar *overbridge_name;
4637 gchar *fw_version;
4738 gushort seq;
4839 GMutex mutex;
114105
115106 const struct fs_operations *connector_get_fs_operations (enum connector_fs);
116107
117 gint connector_init (struct connector *, gint);
108 gint connector_init (struct connector *, gint, const char *);
118109
119110 void connector_destroy (struct connector *);
120111
3535
3636 static struct connector connector;
3737 static struct job_control control;
38 static const char *devices_filename;
3839
3940 typedef void (*print_item) (struct item_iterator *);
4041
108109 cli_connect (const char *device_path, enum connector_fs fs)
109110 {
110111 gint card = atoi (device_path);
111 gint ret = connector_init (&connector, card);
112 if (!ret && fs && !(connector.device_desc->fss & fs))
112 gint ret = connector_init (&connector, card, devices_filename);
113 if (!ret && fs && !(connector.device_desc.filesystems & fs))
113114 {
114115 error_print ("Filesystem not supported for device '%s'\n",
115 connector.device_desc->name);
116 connector.device_desc.name);
116117 return 1;
117118 }
118119 return ret;
269270 comma = "";
270271 for (int fs = FS_SAMPLES, i = 0; fs <= FS_DATA_SND; fs <<= 1, i++)
271272 {
272 if (connector.device_desc->fss & fs)
273 if (connector.device_desc.filesystems & fs)
273274 {
274275 printf ("%s%s", comma, CLI_FSS[i]);
275276 }
306307 return EXIT_FAILURE;
307308 }
308309
309 if (!connector.device_desc->storages)
310 if (!connector.device_desc.storage)
310311 {
311312 return EXIT_FAILURE;
312313 }
317318 res = 0;
318319 for (storage = STORAGE_PLUS_DRIVE; storage <= STORAGE_RAM; storage <<= 1)
319320 {
320 if (connector.device_desc->storages & storage)
321 if (connector.device_desc.storage & storage)
321322 {
322323 res |= connector_get_storage_stats (&connector, storage, &statfs);
323324 if (res)
601602 sigaction (SIGHUP, &action, NULL);
602603 }
603604
604 while ((c = getopt (argc, argv, "v")) != -1)
605 devices_filename = NULL;
606
607 while ((c = getopt (argc, argv, "f:v")) != -1)
605608 {
606609 switch (c)
607610 {
611 case 'f':
612 devices_filename = optarg;
613 break;
608614 case 'v':
609615 vflg++;
610616 break;
2424 #include <glib-unix.h>
2525 #include <glib/gi18n.h>
2626 #include <glib/gprintf.h>
27 #define _GNU_SOURCE
2827 #include <getopt.h>
2928 #include "connector.h"
3029 #include "browser.h"
260259 enum connector_fs sel_fs)
261260 {
262261 const struct fs_operations *ops;
263
264 if (*extensions != NULL && *extensions != ELEKTROID_AUDIO_LOCAL_EXTS)
265 {
266 g_free ((*extensions)[0]);
262 gchar *mp3_ext = NULL;
263
264 if (*extensions != NULL)
265 {
266 gchar **ext = *extensions;
267 while (*ext)
268 {
269 g_free (*ext);
270 ext++;
271 }
267272 g_free (*extensions);
268273 }
274
269275 if (sel_fs == FS_SAMPLES)
270276 {
271 *extensions = ELEKTROID_AUDIO_LOCAL_EXTS;
277 gchar **ext = ELEKTROID_AUDIO_LOCAL_EXTS;
278 int known_ext = 0;
279 while (*ext)
280 {
281 known_ext++;
282 ext++;
283 }
284 known_ext++; //NULL included
285
286 int total_ext = known_ext;
287
288 if (sample_is_mp3_supported ())
289 {
290 mp3_ext = "mp3";
291 total_ext++;
292 }
293
294 *extensions = malloc (sizeof (gchar *) * total_ext);
295 ext = ELEKTROID_AUDIO_LOCAL_EXTS;
296 int i = 0;
297 while (*ext)
298 {
299 (*extensions)[i] = strdup (*ext);
300 ext++;
301 i++;
302 }
303 if (mp3_ext)
304 {
305 (*extensions)[i] = strdup (mp3_ext);
306 i++;
307 }
308 (*extensions)[i] = NULL;
309
272310 }
273311 else
274312 {
275313 ops = connector_get_fs_operations (sel_fs);
276314 *extensions = malloc (sizeof (gchar *) * 2);
277 (*extensions)[0] = connector_get_full_ext (connector.device_desc, ops);
315 (*extensions)[0] = connector_get_full_ext (&connector.device_desc, ops);
278316 (*extensions)[1] = NULL;
279317 }
280318 }
377415 for (storage = STORAGE_PLUS_DRIVE; storage <= STORAGE_RAM;
378416 storage <<= 1)
379417 {
380 if (connector.device_desc->storages & storage)
418 if (connector.device_desc.storage & storage)
381419 {
382420 res =
383421 connector_get_storage_stats (&connector, storage, &statfs);
824862 }
825863
826864 static void
827 elektroid_controls_set_sensitive (gboolean sensitive)
865 elektroid_sample_controls_set_sensitive (gboolean sensitive)
828866 {
829867 gtk_widget_set_sensitive (local_play_menuitem, sensitive);
830868 gtk_widget_set_sensitive (play_button, sensitive);
845883 {
846884 if (audio_check (&audio))
847885 {
848 elektroid_controls_set_sensitive (TRUE);
886 elektroid_sample_controls_set_sensitive (TRUE);
849887 }
850888 if (preferences.autoplay)
851889 {
13021340 GtkTreeIter iter;
13031341 gchar *sample_path;
13041342 GtkTreeModel *model;
1343 gboolean audio_controls;
13051344 struct item *item = NULL;
13061345 gint count = browser_get_selected_items_count (&local_browser);
13071346
13261365 elektroid_stop_load_thread ();
13271366 audio_reset_sample (&audio);
13281367 gtk_widget_queue_draw (waveform_draw_area);
1329 elektroid_controls_set_sensitive (FALSE);
13301368
13311369 if (item && item->type == ELEKTROID_FILE
13321370 && strcmp (item->name, audio.name))
13351373 elektroid_start_load_thread (sample_path);
13361374 strcpy (audio.name, item->name);
13371375 }
1338 gtk_widget_set_sensitive (local_open_menuitem, item
1339 && item->type == ELEKTROID_FILE);
1376
13401377 }
13411378
13421379 end:
1380 audio_controls = item && item->type == ELEKTROID_FILE && (!remote_browser.fs_ops || remote_browser.fs_ops->fs == FS_SAMPLES); //1 sample file
1381 elektroid_sample_controls_set_sensitive (audio_controls);
1382 gtk_widget_set_sensitive (local_open_menuitem, audio_controls);
1383
13431384 if (item)
13441385 {
13451386 browser_free_item (item);
24512492
24522493 for (int fs = FS_SAMPLES, i = 0; fs <= FS_DATA_SND; fs = fs << 1, i++)
24532494 {
2454 if (GUI_FSS & fs && connector.device_desc->fss & fs)
2495 if (GUI_FSS & fs && connector.device_desc.filesystems & fs)
24552496 {
24562497 gtk_list_store_insert_with_values (fs_list_store, NULL, -1,
24572498 FS_LIST_STORE_ID_FIELD,
24862527
24872528 card = g_value_get_uint (&cardv);
24882529
2489 if (connector_init (&connector, card) < 0)
2530 if (connector_init (&connector, card, NULL) < 0)
24902531 {
24912532 error_print ("Error while connecting\n");
24922533 }
28862927 GtkWidget *hostname_label;
28872928 GtkWidget *loop_button;
28882929 GtkWidget *autoplay_switch;
2889 char *glade_file = malloc (PATH_MAX);
2890 char *css_file = malloc (PATH_MAX);
2891 char hostname[LABEL_MAX];
2892
2893 if (snprintf
2894 (glade_file, PATH_MAX, "%s/%s/res/gui.glade", DATADIR,
2895 PACKAGE) >= PATH_MAX)
2896 {
2897 error_print ("Path too long\n");
2898 return -1;
2899 }
2900
2901 if (snprintf
2902 (css_file, PATH_MAX, "%s/%s/res/gui.css", DATADIR, PACKAGE) >= PATH_MAX)
2903 {
2904 error_print ("Path too long\n");
2905 return -1;
2906 }
2930 gchar *glade_file;
2931 gchar *css_file;
2932 gchar hostname[LABEL_MAX];
2933
2934 glade_file = chain_path (DATADIR, "gui.glade");
2935 css_file = chain_path (DATADIR, "gui.css");
29072936
29082937 gtk_init (&argc, &argv);
29092938 builder = gtk_builder_new ();
32593288 }
32603289
32613290 audio_destroy (&audio);
3291
32623292 return EXIT_SUCCESS;
32633293 }
32643294
177177 json_builder_add_string_value (builder, pkg->fw_version);
178178 }
179179
180 if (pkg->device_desc->fss & FS_SAMPLES)
180 if (pkg->device_desc->filesystems & FS_SAMPLES)
181181 {
182182 for (resource = pkg->resources; resource; resource = resource->next)
183183 {
406406 if (!reader)
407407 {
408408 error_print ("Unable to read from parser. Continuing...");
409 g_object_unref (reader);
410409 control->parts = 2;
411410 goto get_payload;
412411 }
683682 json_reader_end_element (reader);
684683 json_reader_end_element (reader);
685684
686 if (!(pkg->device_desc->fss & FS_SAMPLES))
687 {
688 ret = 0;
689 goto cleanup_reader;
690 }
691
692 if (!json_reader_read_member (reader, PKG_TAG_SAMPLES)
693 || !json_reader_is_array (reader))
694 {
695 debug_print (1, "No samples found\n");
685 if (!json_reader_read_member (reader, PKG_TAG_SAMPLES))
686 {
687 if (pkg->device_desc->filesystems & FS_SAMPLES)
688 {
689 debug_print (1, "No samples found\n");
690 }
696691 control->parts = 1; // Only payload and it's done.
697692 control->part = 0;
698693 set_job_control_progress (control, 1.0);
694 goto cleanup_reader;
695 }
696
697 if (!json_reader_is_array (reader))
698 {
699 error_print ("Member '%s' is not an array. Skipping samples...\n",
700 PKG_TAG_SAMPLES);
701 ret = -1;
699702 goto cleanup_reader;
700703 }
701704
2424 #include "preferences.h"
2525 #include "utils.h"
2626
27 #define CONF_DIR "~/.config/elektroid"
28 #define CONF_FILE "/preferences.json"
27 #define PREFERENCES_FILE "/preferences.json"
2928
3029 #define MEMBER_AUTOPLAY "autoplay"
3130 #define MEMBER_LOCALDIR "localDir"
4544 S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH |
4645 S_IXOTH))
4746 {
47 error_print ("Error wile creating directory `%s'\n", CONF_DIR);
4848 return 1;
4949 }
5050
5151 n = PATH_MAX - strlen (preferences_path) - 1;
52 strncat (preferences_path, CONF_FILE, n);
52 strncat (preferences_path, PREFERENCES_FILE, n);
5353 preferences_path[PATH_MAX - 1] = 0;
5454
5555 debug_print (1, "Saving preferences to '%s'...\n", preferences_path);
8989 GError *error;
9090 JsonReader *reader;
9191 JsonParser *parser = json_parser_new ();
92 gchar *preferences_file = get_expanded_dir (CONF_DIR CONF_FILE);
92 gchar *preferences_file = get_expanded_dir (CONF_DIR PREFERENCES_FILE);
9393
9494 error = NULL;
9595 json_parser_load_from_file (parser, preferences_file, &error);
9696 if (error)
9797 {
98 error_print ("Error wile loading preferences from `%s': %s\n",
99 CONF_DIR CONF_FILE, error->message);
98 debug_print (1, "Error wile loading preferences from `%s': %s\n",
99 CONF_DIR PREFERENCES_FILE, error->message);
100100 g_error_free (error);
101101 g_object_unref (parser);
102102 preferences->autoplay = TRUE;
105105 }
106106
107107 reader = json_reader_new (json_parser_get_root (parser));
108 json_reader_read_member (reader, MEMBER_AUTOPLAY);
109 preferences->autoplay = json_reader_get_boolean_value (reader);
108
109 if (json_reader_read_member (reader, MEMBER_AUTOPLAY))
110 {
111 preferences->autoplay = json_reader_get_boolean_value (reader);
112 }
113 else
114 {
115 preferences->autoplay = TRUE;
116 }
110117 json_reader_end_member (reader);
111 json_reader_read_member (reader, MEMBER_LOCALDIR);
112 preferences->local_dir = malloc (PATH_MAX);
113 n = PATH_MAX - 1;
114 strncpy (preferences->local_dir, json_reader_get_string_value (reader), n);
115 preferences->local_dir[PATH_MAX - 1] = 0;
118
119 if (json_reader_read_member (reader, MEMBER_LOCALDIR))
120 {
121 preferences->local_dir = malloc (PATH_MAX);
122 n = PATH_MAX - 1;
123 strncpy (preferences->local_dir, json_reader_get_string_value (reader),
124 n);
125 preferences->local_dir[PATH_MAX - 1] = 0;
126 }
127 else
128 {
129 preferences->local_dir = get_expanded_dir ("~");
130 }
116131 json_reader_end_member (reader);
132
117133 g_object_unref (reader);
118134 g_object_unref (parser);
119135
546546 {
547547 return sample_load_with_frames (path, sample, control, NULL);
548548 }
549
550 gboolean
551 sample_is_mp3_supported ()
552 {
553 static char buffer[LABEL_MAX];
554
555 sf_command (NULL, SFC_GET_LIB_VERSION, buffer, LABEL_MAX);
556 debug_print (1, "libsndfile version: %s...\n", buffer);
557 if (strverscmp (buffer, "libsndfile-1.1.0") >= 0)
558 {
559 return TRUE;
560 }
561
562 return FALSE;
563 }
3838 gint sample_load_with_frames (const gchar *, GByteArray *,
3939 struct job_control *, guint *);
4040
41 gboolean sample_is_mp3_supported ();
42
4143 #endif
2727
2828 #define KIB 1024
2929
30 #define DEVICES_FILE "/devices.json"
31
32 #define DEV_TAG_ID "id"
33 #define DEV_TAG_NAME "name"
34 #define DEV_TAG_ALIAS "alias"
35 #define DEV_TAG_FILESYSTEMS "filesystems"
36 #define DEV_TAG_STORAGE "storage"
37
3038 gint debug_level;
3139
3240 static guint
190198 dir = opendir (local_dir);
191199 if (dir)
192200 {
193 startup_path = malloc (PATH_MAX);
194 realpath (local_dir, startup_path);
201 startup_path = realpath (local_dir, NULL);
195202 }
196203 else
197204 {
379386 gdouble v = (double) control->part / control->parts + p / control->parts;
380387 control->callback (v);
381388 }
389
390 gint
391 load_device_desc (struct connector_device_desc *device_desc, guint8 id,
392 const char *devices_filename_)
393 {
394 gint err, devices;
395 JsonParser *parser;
396 JsonReader *reader;
397 gchar *devices_filename;
398 GError *error = NULL;
399
400 parser = json_parser_new ();
401
402 if (devices_filename_)
403 {
404 devices_filename = strdup (devices_filename_);
405
406 if (!json_parser_load_from_file (parser, devices_filename, &error))
407 {
408 error_print ("%s", error->message);
409 g_clear_error (&error);
410 err = -ENODEV;
411 goto cleanup_parser;
412 }
413 }
414 else
415 {
416 devices_filename = get_expanded_dir (CONF_DIR DEVICES_FILE);
417
418 if (!json_parser_load_from_file (parser, devices_filename, &error))
419 {
420 debug_print (1, "%s\n", error->message);
421 g_clear_error (&error);
422
423 g_free (devices_filename);
424 devices_filename = strdup (DATADIR DEVICES_FILE);
425
426 debug_print (1, "Falling back to %s...\n", devices_filename);
427
428 if (!json_parser_load_from_file (parser, devices_filename, &error))
429 {
430 error_print ("%s", error->message);
431 g_clear_error (&error);
432 err = -ENODEV;
433 goto cleanup_parser;
434 }
435 }
436 }
437
438 reader = json_reader_new (json_parser_get_root (parser));
439 if (!reader)
440 {
441 error_print ("Unable to read from parser");
442 err = -ENODEV;
443 goto cleanup_parser;
444 }
445
446 if (!json_reader_is_array (reader))
447 {
448 error_print ("Not an array\n");
449 err = -ENODEV;
450 goto cleanup_reader;
451 }
452
453 devices = json_reader_count_elements (reader);
454 if (!devices)
455 {
456 debug_print (1, "No devices found\n");
457 err = -ENODEV;
458 goto cleanup_reader;
459 }
460
461 err = -ENODEV;
462 for (int i = 0; i < devices; i++)
463 {
464 if (!json_reader_read_element (reader, i))
465 {
466 error_print ("Cannot read element %d. Continuing...\n", i);
467 continue;
468 }
469
470 if (!json_reader_read_member (reader, DEV_TAG_ID))
471 {
472 error_print ("Cannot read member '%s'. Continuing...\n",
473 DEV_TAG_ID);
474 continue;
475 }
476 device_desc->id = json_reader_get_int_value (reader);
477 json_reader_end_member (reader);
478
479 if (device_desc->id != id)
480 {
481 json_reader_end_element (reader);
482 continue;
483 }
484
485 err = 0;
486 debug_print (1, "Device %d found\n", id);
487
488 if (!json_reader_read_member (reader, DEV_TAG_NAME))
489 {
490 error_print ("Cannot read member '%s'. Stopping...\n",
491 DEV_TAG_NAME);
492 json_reader_end_element (reader);
493 err = -ENODEV;
494 break;
495 }
496 device_desc->name = strdup (json_reader_get_string_value (reader));
497 json_reader_end_member (reader);
498
499 if (!json_reader_read_member (reader, DEV_TAG_ALIAS))
500 {
501 error_print ("Cannot read member '%s'. Stopping...\n",
502 DEV_TAG_ALIAS);
503 json_reader_end_element (reader);
504 err = -ENODEV;
505 break;
506 }
507 device_desc->alias = strdup (json_reader_get_string_value (reader));
508 json_reader_end_member (reader);
509
510 if (!json_reader_read_member (reader, DEV_TAG_FILESYSTEMS))
511 {
512 error_print ("Cannot read member '%s'. Stopping...\n",
513 DEV_TAG_FILESYSTEMS);
514 json_reader_end_element (reader);
515 err = -ENODEV;
516 break;
517 }
518 device_desc->filesystems = json_reader_get_int_value (reader);
519 json_reader_end_member (reader);
520
521 if (!json_reader_read_member (reader, DEV_TAG_STORAGE))
522 {
523 error_print ("Cannot read member '%s'. Stopping...\n",
524 DEV_TAG_STORAGE);
525 json_reader_end_element (reader);
526 err = -ENODEV;
527 break;
528 }
529 device_desc->storage = json_reader_get_int_value (reader);
530 json_reader_end_member (reader);
531
532 break;
533 }
534
535 cleanup_reader:
536 g_object_unref (reader);
537 cleanup_parser:
538 g_object_unref (parser);
539 g_free (devices_filename);
540 return err;
541 }
1717 * along with Elektroid. If not, see <http://www.gnu.org/licenses/>.
1818 */
1919
20 #include <stdio.h>
21 #include <glib.h>
22
2320 #ifndef UTILS_H
2421 #define UTILS_H
22
23 #include <stdio.h>
24 #include <unistd.h>
25 #include <glib.h>
26 #include <json-glib/json-glib.h>
27 #include "../config.h"
28
29 #define CONF_DIR "~/.config/" PACKAGE
2530
2631 #define LABEL_MAX 128
2732
2934 #define ELEKTRON_SAMPLE_RATE 48000
3035
3136 #define debug_print(level, format, ...) if (level <= debug_level) fprintf(stderr, "DEBUG:" __FILE__ ":%d:(%s): " format, __LINE__, __FUNCTION__, ## __VA_ARGS__)
32 #define error_print(format, ...) fprintf(stderr, "\x1b[31mERROR:" __FILE__ ":%d:(%s): " format "\x1b[m", __LINE__, __FUNCTION__, ## __VA_ARGS__)
37 #define error_print(format, ...) fprintf(stderr, "%sERROR:" __FILE__ ":%d:(%s): " format "%s", isatty(fileno(stderr)) ? "\x1b[31m" : "", __LINE__, __FUNCTION__, ## __VA_ARGS__, isatty(fileno(stderr)) ? "\x1b[m" : "")
3338
3439 enum item_type
3540 {
116121 const gchar *extension;
117122 };
118123
124 struct connector_device_desc
125 {
126 guint32 id;
127 gchar *name;
128 gchar *alias;
129 guint8 filesystems;
130 guint8 storage;
131 };
132
119133 extern int debug_level;
120134
121135 gchar *debug_get_hex_data (gint, guint8 *, guint);
157171
158172 void set_job_control_progress (struct job_control *, gdouble);
159173
174 gint load_device_desc (struct connector_device_desc *, guint8, const char *);
175
160176 #endif
00 TESTS = sample_fs_tests.sh data_fs_tests.sh
11
22 EXTRA_DIST = \
3 $(TESTS) \
4 res/square.wav
3 $(TESTS) \
4 res/square.wav \
5 res/square_loop.wav \
6 res/SOUND.dtdata \
7 res/devices.json
58
69 AM_TESTS_ENVIRONMENT = \
7 ecli='$(abs_top_builddir)'/src/elektroid-cli; \
10 ecli='$(abs_top_builddir)/src/elektroid-cli -f $(srcdir)/res/devices.json'; \
811 export ecli;
00 #!/usr/bin/env bash
1
2 function cleanupAndExitWithError () {
3 $ecli cl-data $DEVICE:/soundbanks/H/1
4 $ecli cl-data $DEVICE:/soundbanks/H/62
5 $ecli cl-data $DEVICE:/soundbanks/H/63
6 $ecli cl-data $DEVICE:/soundbanks/H/64
7 $ecli cl-data $DEVICE:/soundbanks/H/256
8 exit 1
9 }
110
211 function get_sound_n_with_id () {
312 s="sound$1"
1625
1726 echo "Testing data copy..."
1827 $ecli cp-data $DEVICE:/soundbanks/A/1 $DEVICE:/soundbanks/H/64
19 [ $? -ne 0 ] && exit 1
28 [ $? -ne 0 ] && cleanupAndExitWithError
2029 $ecli cp-data $DEVICE:/soundbanks/A/2 $DEVICE:/soundbanks/H/63
21 [ $? -ne 0 ] && exit 1
30 [ $? -ne 0 ] && cleanupAndExitWithError
2231 output=$($ecli ls-data $DEVICE:/soundbanks/H)
2332 actual=$(echo "$output" | grep "^F 64")
2433 expected=$(get_sound_n_with_id 1 64)
25 [ "$actual" != "$expected" ] && exit 1
34 [ "$actual" != "$expected" ] && cleanupAndExitWithError
2635 actual=$(echo "$output" | grep "^F 63")
2736 expected=$(get_sound_n_with_id 2 63)
28 [ "$actual" != "$expected" ] && exit 1
37 [ "$actual" != "$expected" ] && cleanupAndExitWithError
2938
3039 echo "Testing data move..."
3140 $ecli mv-data $DEVICE:/soundbanks/H/64 $DEVICE:/soundbanks/H/62
32 [ $? -ne 0 ] && exit 1
41 [ $? -ne 0 ] && cleanupAndExitWithError
3342 output=$($ecli ls-data $DEVICE:/soundbanks/H)
3443 actual=$(echo "$output" | grep "^F 62")
3544 expected=$(get_sound_n_with_id 1 62)
36 [ "$actual" != "$expected" ] && exit 1
45 [ "$actual" != "$expected" ] && cleanupAndExitWithError
3746 actual=$(echo "$output" | grep "^F 64")
38 [ -n "$actual" ] && exit 1
47 [ -n "$actual" ] && cleanupAndExitWithError
3948
4049 echo "Testing data swap..."
4150 $ecli sw-data $DEVICE:/soundbanks/H/62 $DEVICE:/soundbanks/H/63
42 [ $? -ne 0 ] && exit 1
51 [ $? -ne 0 ] && cleanupAndExitWithError
4352 output=$($ecli ls-data $DEVICE:/soundbanks/H)
4453 actual=$(echo "$output" | grep "^F 62")
4554 expected=$(get_sound_n_with_id 2 62)
46 [ "$actual" != "$expected" ] && exit 1
55 [ "$actual" != "$expected" ] && cleanupAndExitWithError
4756 actual=$(echo "$output" | grep "^F 63")
4857 expected=$(get_sound_n_with_id 1 63)
49 [ "$actual" != "$expected" ] && exit 1
58 [ "$actual" != "$expected" ] && cleanupAndExitWithError
5059
5160 echo "Testing data clear..."
5261 $ecli cl-data $DEVICE:/soundbanks/H/63
53 [ $? -ne 0 ] && exit 1
62 [ $? -ne 0 ] && cleanupAndExitWithError
5463 $ecli cl-data $DEVICE:/soundbanks/H/62
55 [ $? -ne 0 ] && exit 1
64 [ $? -ne 0 ] && cleanupAndExitWithError
5665 output=$($ecli ls-data $DEVICE:/soundbanks/H)
57 [ $(echo "$output" | grep "^F 62" | wc -l) -ne 0 ] && exit 1
58 [ $(echo "$output" | grep "^F 63" | wc -l) -ne 0 ] && exit 1
66 [ $(echo "$output" | grep "^F 62" | wc -l) -ne 0 ] && cleanupAndExitWithError
67 [ $(echo "$output" | grep "^F 63" | wc -l) -ne 0 ] && cleanupAndExitWithError
5968
6069 echo "Testing upload..."
6170 $ecli ul-data $srcdir/res/SOUND.dtdata $DEVICE:/soundbanks/H
62 [ $? -ne 0 ] && exit 1
71 [ $? -ne 0 ] && cleanupAndExitWithError
6372 id=$($ecli ls-data $DEVICE:/soundbanks/H | grep 'SOUND$' | awk '{print $2}')
6473
6574 echo "Testing download..."
6675 $ecli dl-data $DEVICE:/soundbanks/H/$id
67 [ $? -ne 0 ] && exit 1
76 [ $? -ne 0 ] && cleanupAndExitWithError
6877 ls "SOUND.dtdata"
6978 cksum SOUND.dtdata
7079 cksum $srcdir/res/SOUND.dtdata
7180 actual_cksum="$(cksum SOUND.dtdata | awk '{print $1}')"
72 [ "$actual_cksum" != "$(cksum $srcdir/res/SOUND.dtdata | awk '{print $1}')" ] && exit 1
81 [ "$actual_cksum" != "$(cksum $srcdir/res/SOUND.dtdata | awk '{print $1}')" ] && cleanupAndExitWithError
7382 rm SOUND.dtdata
74 [ $? -ne 0 ] && exit 1
83 [ $? -ne 0 ] && cleanupAndExitWithError
7584 $ecli cl-data $DEVICE:/soundbanks/H/$id
76 [ $? -ne 0 ] && exit 1
85 [ $? -ne 0 ] && cleanupAndExitWithError
7786
7887 echo "Testing upload..."
79 $ecli ul-data $srcdir/res/SOUND.dtdata $DEVICE:/soundbanks/H
80 [ $? -ne 0 ] && exit 1
81 id=$($ecli ls-data $DEVICE:/soundbanks/H/256 | grep 'SOUND$' | awk '{print $2}')
82 [ $id != 256 ] && exit 1
88 $ecli ul-data $srcdir/res/SOUND.dtdata $DEVICE:/soundbanks/H/256
89 [ $? -ne 0 ] && cleanupAndExitWithError
90 id=$($ecli ls-data $DEVICE:/soundbanks/H | grep 'SOUND$' | awk '{print $2}')
91 [ $id != 256 ] && cleanupAndExitWithError
8392
8493 echo "Testing data clear..."
8594 $ecli cl-data $DEVICE:/soundbanks/H/256
86 [ $? -ne 0 ] && exit 1
95 [ $? -ne 0 ] && cleanupAndExitWithError
8796
8897 exit 0
Binary diff not shown
0 [{
1 "id": 12,
2 "name": "Digitakt",
3 "alias": "dt",
4 "filesystems": 57,
5 "storage": 3
6 }]
3434 [ $? -ne 0 ] && exit 1
3535
3636 output=$($ecli ls $DEVICE:/$TEST_NAME)
37 echo $output
38 type=$(echo $output | awk '{print $1}')
39 size=$(echo $output | awk '{print $2}')
40 name=$(echo $output | awk '{print $4}')
37 echo "$output"
38 type=$(echo "$output" | head -n 1 | awk '{print $1}')
39 size=$(echo "$output" | head -n 1 | awk '{print $2}')
40 name=$(echo "$output" | head -n 1 | awk '{print $4}')
4141 [ "$type" != "F" ] || [ "$size" != "93.81KiB" ] || [ "$name" != "square" ] && exit 1
4242
4343 echo "Testing upload (nonexistent source)..."