Skip to content

Commit 9289083

Browse files
committed
* Added reading support for S5000/S6000 AKP format.
* User Interface * Moved several setting to a specific Settings dialog. * Updated button icons. * Fixed: Tuning value was set for panning. * Kontakt * Fixed: Tuning was not written correctly. * MPC Keygroups * New: Added an option to ignore loops
1 parent 84aadd9 commit 9289083

88 files changed

Lines changed: 3299 additions & 940 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

documentation/CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
# Changes
22

3-
## 15.5.2 (unreleased)
3+
## 16.0.0
44

5+
* Added reading support for S5000/S6000 AKP format.
6+
* User Interface
7+
* Moved several setting to a specific Settings dialog.
8+
* Updated button icons.
9+
* Fixed: Tuning value was set for panning.
10+
* Kontakt
11+
* Fixed: Tuning was not written correctly.
512
* MPC Keygroups
613
* New: Added an option to ignore loops
714

documentation/README-FORMATS.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ The following multi-sample formats are supported:
3535
- [1010music blackbox, tangerine, bitbox](#1010music-blackbox-tangerine-bitbox)
3636
- [Ableton Sampler](#ableton-sampler)
3737
- [Akai MPC Keygroups / Drum](#akai-mpc-keygroups--drum)
38+
- [Akai S5000/S6000](#akai-s5000s6000)
3839
- [Bitwig Multisample](#bitwig-multisample)
3940
- [CWITEC TX16Wx](#cwitec-tx16wx)
4041
- [DecentSampler](#decentsampler)
@@ -110,10 +111,20 @@ Restrictions are:
110111
* A round robin keygroup can only contain up to 4/8 layers (groups). An error is displayed in this case but the file is converted anyway.
111112
* Only 128 keygroups are allowed. An error is displayed in this case but the file is written anyway but might not be loadable.
112113

114+
### Source Options
115+
116+
* Ignore Loops: There are XPM files which do not contain loops but there related WAV files do (seems to happen with the MPC Autosampler). ConvertWithMoss uses the loops from the WAV files in that case. This might not be what you intended if a multi-sample should be one-shot. Enable this option to ignore the loops.
117+
113118
### Destination Options
114119

115120
* Limit layers to: MPC Firmware 3.4 increased the number of possible layers in a keygroup to 8. This option allows you to choose between 4 (for older firmware revisions) or 8.
116121

122+
## Akai S5000/S6000
123+
124+
This format uses a chunk based binary format with the ending AKP. It supports up to 99 key-groups. A key-group covers a note range with up to 4 velocity layers. AKM files are a multi configuration of up to 32 AKP preset files. The AKP files are only referenced from the AKM. Available parameters are the MIDI channel, panning, volume and key-range.
125+
AKP files are used if destination is Preset or Preset Library. AKM files are used if destination is Performance or Performance Library.
126+
Only reading of the AKP/AKM formats is supported.
127+
117128
## Bitwig Multisample
118129

119130
This open format is currently supported by the stock sampler in Bitwig Studio and Presonus Studio One. A multisample file is a zip archive which contains all samples in WAV format and a metadata file in XML format.
-3.09 KB
Binary file not shown.

icons/Analyse.pdn

-1.18 KB
Binary file not shown.

icons/Analyse.png

-580 Bytes
Loading

pom.xml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>de.mossgrabers</groupId>
77
<artifactId>convertwithmoss</artifactId>
8-
<version>15.5.2</version>
8+
<version>16.0.0</version>
99
<packaging>jar</packaging>
1010
<name>ConvertWithMoss</name>
1111
<organization>
@@ -31,11 +31,7 @@
3131
</repositories>
3232

3333
<dependencies>
34-
<dependency>
35-
<groupId>org.openjfx</groupId>
36-
<artifactId>javafx-controls</artifactId>
37-
<version>25.0.2</version>
38-
</dependency>
34+
<!-- Audio file support -->
3935
<dependency>
4036
<groupId>com.github.trilarion</groupId>
4137
<artifactId>java-vorbis-support</artifactId>
@@ -45,17 +41,30 @@
4541
<groupId>com.io7m.flannel</groupId>
4642
<artifactId>com.io7m.flannel.core</artifactId>
4743
<version>1.0.0</version>
48-
</dependency>
44+
</dependency>
45+
<!-- Command line support -->
4946
<dependency>
5047
<groupId>info.picocli</groupId>
5148
<artifactId>picocli</artifactId>
5249
<version>4.7.7</version>
5350
</dependency>
51+
<!-- User interface support -->
52+
<dependency>
53+
<groupId>org.openjfx</groupId>
54+
<artifactId>javafx-controls</artifactId>
55+
<version>25.0.2</version>
56+
</dependency>
5457
<dependency>
5558
<artifactId>uitools</artifactId>
5659
<groupId>de.mossgrabers</groupId>
5760
<version>2.0.1</version>
5861
</dependency>
62+
<!-- JSON support -->
63+
<dependency>
64+
<groupId>com.fasterxml.jackson.core</groupId>
65+
<artifactId>jackson-databind</artifactId>
66+
<version>2.21.0</version>
67+
</dependency>
5968
</dependencies>
6069

6170
<build>

src/main/java/de/mossgrabers/convertwithmoss/core/ConverterBackend.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@
2222
import de.mossgrabers.convertwithmoss.file.CSVRenameFile;
2323
import de.mossgrabers.convertwithmoss.format.ableton.AbletonCreator;
2424
import de.mossgrabers.convertwithmoss.format.ableton.AbletonDetector;
25-
import de.mossgrabers.convertwithmoss.format.akai.MPCKeygroupCreator;
26-
import de.mossgrabers.convertwithmoss.format.akai.MPCKeygroupDetector;
25+
import de.mossgrabers.convertwithmoss.format.akai.mpc.xpm.MPCKeygroupCreator;
26+
import de.mossgrabers.convertwithmoss.format.akai.mpc.xpm.MPCKeygroupDetector;
27+
import de.mossgrabers.convertwithmoss.format.akai.s5000.S5000Detector;
2728
import de.mossgrabers.convertwithmoss.format.bitwig.BitwigMultisampleCreator;
2829
import de.mossgrabers.convertwithmoss.format.bitwig.BitwigMultisampleDetector;
2930
import de.mossgrabers.convertwithmoss.format.decentsampler.DecentSamplerCreator;
@@ -105,6 +106,8 @@ public ConverterBackend (final INotifier notifier)
105106
new Music1010Detector (notifier),
106107
new AbletonDetector (notifier),
107108
new MPCKeygroupDetector (notifier),
109+
// TODO new XtyDetector (notifier),
110+
new S5000Detector (notifier),
108111
new BitwigMultisampleDetector (notifier),
109112
new TX16WxDetector (notifier),
110113
new DecentSamplerDetector (notifier),

src/main/java/de/mossgrabers/convertwithmoss/core/creator/AbstractWavCreator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,15 @@
3636
import de.mossgrabers.convertwithmoss.core.model.ISampleZone;
3737
import de.mossgrabers.convertwithmoss.core.settings.WavChunkSettingsUI;
3838
import de.mossgrabers.convertwithmoss.file.AudioFileUtils;
39-
import de.mossgrabers.convertwithmoss.file.riff.RiffID;
39+
import de.mossgrabers.convertwithmoss.file.riff.CommonRiffChunkId;
4040
import de.mossgrabers.convertwithmoss.file.wav.BroadcastAudioExtensionChunk;
4141
import de.mossgrabers.convertwithmoss.file.wav.DataChunk;
4242
import de.mossgrabers.convertwithmoss.file.wav.FormatChunk;
4343
import de.mossgrabers.convertwithmoss.file.wav.InstrumentChunk;
4444
import de.mossgrabers.convertwithmoss.file.wav.SampleChunk;
4545
import de.mossgrabers.convertwithmoss.file.wav.SampleChunk.SampleChunkLoop;
4646
import de.mossgrabers.convertwithmoss.file.wav.WaveFile;
47+
import de.mossgrabers.convertwithmoss.file.wav.WaveRiffChunkId;
4748
import de.mossgrabers.tools.XMLUtils;
4849

4950

@@ -283,7 +284,7 @@ private void rewriteFile (final IMetadata metadata, final ISampleZone zone, fina
283284
if (this.settingsConfiguration.isUpdateSampleChunk ())
284285
updateSampleChunk (zone, wavFile, unityNote);
285286
if (this.settingsConfiguration.isRemoveJunkChunks ())
286-
wavFile.removeChunks (RiffID.JUNK_ID, RiffID.JUNK2_ID, RiffID.FILLER_ID, RiffID.MD5_ID);
287+
wavFile.removeChunks (CommonRiffChunkId.JUNK_ID, CommonRiffChunkId.JUNK2_ID, WaveRiffChunkId.FILLER_ID, WaveRiffChunkId.MD5_ID);
287288

288289
wavFile.write (outputStream);
289290
}

src/main/java/de/mossgrabers/convertwithmoss/core/detector/AbstractDetector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private void handlePerformanceFile (final File file)
232232
{
233233
try
234234
{
235-
final List<IPerformanceSource> performances = this.readPerformanceFiles (file);
235+
final List<IPerformanceSource> performances = this.readPerformanceFile (file);
236236
if (performances.isEmpty () || this.waitForDelivery ())
237237
return;
238238

@@ -268,7 +268,7 @@ private void handlePerformanceFile (final File file)
268268
* @param sourceFile The file to process
269269
* @return The parsed performance(s)
270270
*/
271-
protected List<IPerformanceSource> readPerformanceFiles (final File sourceFile)
271+
protected List<IPerformanceSource> readPerformanceFile (final File sourceFile)
272272
{
273273
throw new RuntimeException (this.getClass ().getName () + " does not support Performance files.");
274274
}

src/main/java/de/mossgrabers/convertwithmoss/core/model/implementation/DefaultSampleZone.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ public void fillMetadata (final ISampleZone other)
549549
this.velocityCrossfadeLow = other.getVelocityCrossfadeLow ();
550550
this.velocityCrossfadeHigh = other.getVelocityCrossfadeHigh ();
551551
this.gain = other.getGain ();
552-
this.panning = other.getTuning ();
552+
this.panning = other.getPanning ();
553553
this.tune = other.getTuning ();
554554
this.keyTracking = other.getKeyTracking ();
555555
this.bendUp = other.getBendUp ();

0 commit comments

Comments
 (0)