Skip to content

Commit 08fdfa7

Browse files
committed
Finished reading Akai S1000/S3000 series image.
1 parent 593fd6f commit 08fdfa7

15 files changed

Lines changed: 185 additions & 55 deletions

File tree

documentation/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## 16.2.0 (unreleased)
44

5+
* Added support for Akai S1000/1100 images (*.iso)
6+
* Fixed: Gain could not be set below +0.125dB
57
* Ableton ADV, Sf2, TX16W, Yamaha YSFC
68
* Fixed: Negative fine tuning values could be off by 1 when written.
79
* Akai AKP, MPC XPJ/XTY, TAL Sampler, TX16W

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
@@ -383,7 +383,7 @@ public void setVelocityCrossfadeHigh (final int crossfadeHigh)
383383
@Override
384384
public void setGain (final double gain)
385385
{
386-
this.gain = Math.clamp (gain, 0.125, 24.0);
386+
this.gain = Math.min (gain, 24.0);
387387
}
388388

389389

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiDirEntry.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiDirEntry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
/**
88
* An entry in the Akai directory.

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiDiskElement.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiDiskElement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiDiskImage.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiDiskImage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.File;
88
import java.io.IOException;

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiEnvelope.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiEnvelope.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiKeygroup.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiKeygroup.java

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88

@@ -35,7 +35,8 @@ public class AkaiKeygroup
3535
// -50..50
3636
private byte envelope2ToFilter;
3737

38-
private final AkaiEnvelope [] envelopes = new AkaiEnvelope [2];
38+
private final AkaiEnvelope amplitudeEnvelope;
39+
private final AkaiEnvelope auxEnvelope;
3940

4041
// -50..50
4142
@SuppressWarnings("unused")
@@ -87,8 +88,8 @@ public AkaiKeygroup (final AkaiDiskImage disk) throws IOException
8788
this.pressureToFilter = disk.readInt8 ();
8889
this.envelope2ToFilter = disk.readInt8 ();
8990

90-
for (int i = 0; i < 2; i++)
91-
this.envelopes[i] = new AkaiEnvelope (disk);
91+
this.amplitudeEnvelope = new AkaiEnvelope (disk);
92+
this.auxEnvelope = new AkaiEnvelope (disk);
9293

9394
this.velocityToEnvelope2ToFilter = disk.readInt8 ();
9495
this.envelope2ToPitch = disk.readInt8 ();
@@ -105,9 +106,8 @@ public AkaiKeygroup (final AkaiDiskImage disk) throws IOException
105106
this.beatDetune = disk.readInt8 ();
106107
this.holdAttackUntilLoop = disk.readInt8 () != 0;
107108

108-
// TODO check if this should be == 0!
109109
for (int i = 0; i < 4; i++)
110-
this.sampleKeyTracking[i] = disk.readInt8 () != 0;
110+
this.sampleKeyTracking[i] = disk.readInt8 () == 0;
111111

112112
for (int i = 0; i < 4; i++)
113113
this.sampleAuxOutOffset[i] = disk.readInt8 ();
@@ -198,6 +198,28 @@ public byte getVelocityToFilter ()
198198
}
199199

200200

201+
/**
202+
* Get the amplitude envelope (envelope 1).
203+
*
204+
* @return The envelope
205+
*/
206+
public AkaiEnvelope getAmplitudeEnvelope ()
207+
{
208+
return this.amplitudeEnvelope;
209+
}
210+
211+
212+
/**
213+
* Get the auxiliary envelope (envelope 2) which might be used for filter cutoff or pitch.
214+
*
215+
* @return The envelope
216+
*/
217+
public AkaiEnvelope getAuxEnvelope ()
218+
{
219+
return this.auxEnvelope;
220+
}
221+
222+
201223
/**
202224
* The intensity of the 2nd envelope on the filter cutoff.
203225
*

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiKeygroupSample.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiKeygroupSample.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88

@@ -149,9 +149,26 @@ public byte getPan ()
149149

150150

151151
/**
152-
* Get the loop mode.
152+
* Get the loop mode. 0=AS_SAMPLE 1=LOOP_IN_REL, 2=LOOP_UNTIL_REL 3=NO_LOOP, 4=PLAY_TO_END
153+
* <p>
154+
* AS_SAMPLE: Get the loop mode setting from the sample.
155+
* <p>
156+
* LOOP_IN_REL: when a key is pressed, the sample will play through all the loops until the
157+
* first HOLD loop is reached. When the key is released, the HOLD loop will continue to play as
158+
* the release falls away.
159+
* <p>
160+
* LOOP_UNTIL_REL: Again, the sample will play, with all loops, until the first HOLD loop is
161+
* reached. However, when the key is released, the loop will end, and the remaining portion of
162+
* the sample (if any) will be played.
163+
* <p>
164+
* NO LOOPING: it plays the sample through without loops for as long as the key is held down. As
165+
* soon as the key is released, the sound will start to decay.
166+
* <p>
167+
* PLAY_TO_END (= one-shot): no loops are played, but an instantaneous trigger signal or key
168+
* press will play the whole of the sample (the key does not have to be pressed for the whole
169+
* length of the sample).
153170
*
154-
* @return The loop mode: 0=AS_SAMPLE 1=LOOP_IN_REL, 2=LOOP_UNTIL_REL 3=NO_LOOP, 4=PLAY_TO_END
171+
* @return The loop mode
155172
*/
156173
public byte getLoopMode ()
157174
{

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiPartition.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiPartition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88
import java.util.ArrayList;

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s3000/AkaiProgram.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiProgram.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// (c) 2019-2026
33
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
44

5-
package de.mossgrabers.convertwithmoss.format.akai.s3000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000;
66

77
import java.io.IOException;
88

0 commit comments

Comments
 (0)