Skip to content

Commit f3df6c7

Browse files
committed
Cleanup.
1 parent 08fdfa7 commit f3df6c7

14 files changed

Lines changed: 111 additions & 93 deletions

documentation/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 16.2.0 (unreleased)
44

5-
* Added support for Akai S1000/1100 images (*.iso)
5+
* Added support for reading Akai S1000/S3000 series images (*.iso)
66
* Fixed: Gain could not be set below +0.125dB
77
* Ableton ADV, Sf2, TX16W, Yamaha YSFC
88
* Fixed: Negative fine tuning values could be off by 1 when written.

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiDirEntry.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000s3000/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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

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

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

Lines changed: 2 additions & 2 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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

@@ -33,7 +33,7 @@ public abstract class AkaiDiskElement
3333
/** Type ID for S1000 format. */
3434
protected static final int AKAI_VOLUME_TYPE_S1000 = 1;
3535
/** Type ID for S3000 format. */
36-
protected static final int AKAI_VOLUME_TYPE_S3000 = 3;
36+
protected static final int AKAI_VOLUME_TYPE_S3000 = 7;
3737

3838
/** ID for a program structure. */
3939
protected static final int AKAI_PROGRAM_ID = 1;

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

Lines changed: 16 additions & 2 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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.File;
88
import java.io.IOException;
@@ -30,23 +30,37 @@ public class AkaiDiskImage implements AutoCloseable
3030
private final int size;
3131
private byte [] cache = new byte [DISK_CLUSTER_SIZE];
3232
private final List<AkaiPartition> partitions = new ArrayList<> ();
33+
private final boolean isS3000;
3334

3435

3536
/**
3637
* Open an image from a file path.
3738
*
3839
* @param file The AKAI image file to access
40+
* @param isS3000 True if it is a S3000 series image otherwise S1000 series
3941
* @throws IOException If file cannot be opened or partitions could not be loaded
4042
*/
41-
public AkaiDiskImage (final File file) throws IOException
43+
public AkaiDiskImage (final File file, final boolean isS3000) throws IOException
4244
{
45+
this.isS3000 = isS3000;
4346
this.randomAccessFile = new RandomAccessFile (file, "r");
4447
this.size = (int) file.length ();
4548

4649
this.loadPartitions ();
4750
}
4851

4952

53+
/**
54+
* Check if it is a S3000 series image otherwise S1000 series.
55+
*
56+
* @return True if it is a S3000 series image otherwise S1000 series
57+
*/
58+
public boolean isS3000 ()
59+
{
60+
return this.isS3000;
61+
}
62+
63+
5064
/** {@inheritDoc} */
5165
@Override
5266
public void close () throws IOException

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiEnvelope.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000s3000/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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiKeygroup.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000s3000/AkaiKeygroup.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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiKeygroupSample.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000s3000/AkaiKeygroupSample.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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

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

Lines changed: 24 additions & 32 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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88
import java.util.ArrayList;
@@ -34,34 +34,6 @@ public AkaiPartition (final AkaiDiskImage disk, final int partitionIndex) throws
3434
{
3535
this.name = String.valueOf ((char) ('A' + partitionIndex));
3636

37-
this.listVolumes (disk);
38-
}
39-
40-
41-
/**
42-
* Get the name of the partition.
43-
*
44-
* @return A, B, C, ...
45-
*/
46-
public String getName ()
47-
{
48-
return this.name;
49-
}
50-
51-
52-
/**
53-
* Get all volumes of the partition.
54-
*
55-
* @return The volumes
56-
*/
57-
public List<AkaiVolume> getVolumes ()
58-
{
59-
return this.volumes;
60-
}
61-
62-
63-
private void listVolumes (final AkaiDiskImage disk) throws IOException
64-
{
6537
for (int i = 0; i < AKAI_MAX_DIR_ENTRIES; i++)
6638
{
6739
final AkaiDirEntry dirEntry = new AkaiDirEntry ();
@@ -73,7 +45,6 @@ private void listVolumes (final AkaiDiskImage disk) throws IOException
7345
{
7446
case AKAI_VOLUME_TYPE_S1000:
7547
case AKAI_VOLUME_TYPE_S3000:
76-
// TODO Test S3000
7748
final AkaiVolume volume = new AkaiVolume (disk, this, dirEntry);
7849
if (!volume.isEmpty ())
7950
this.volumes.add (volume);
@@ -84,10 +55,31 @@ private void listVolumes (final AkaiDiskImage disk) throws IOException
8455
break;
8556

8657
default:
87-
// TODO remove
88-
System.out.println ("Unsupported directory entry type: " + type + " - " + dirEntry.getName ());
58+
// Ignore
8959
break;
9060
}
9161
}
9262
}
63+
64+
65+
/**
66+
* Get the name of the partition.
67+
*
68+
* @return A, B, C, ...
69+
*/
70+
public String getName ()
71+
{
72+
return this.name;
73+
}
74+
75+
76+
/**
77+
* Get all volumes of the partition.
78+
*
79+
* @return The volumes
80+
*/
81+
public List<AkaiVolume> getVolumes ()
82+
{
83+
return this.volumes;
84+
}
9385
}

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

Lines changed: 5 additions & 2 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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

@@ -220,12 +220,15 @@ public AkaiProgram (final AkaiDiskImage disk, final AkaiVolume parent, final Aka
220220
this.voiceOutputScale = disk.readInt8 ();
221221
this.stereoOutputScale = disk.readInt8 ();
222222

223+
// Bytes 73-150 are not used, key-groups start at 150
224+
223225
// Read key-groups
226+
int headerSize = disk.isS3000 () ? 192 : 150;
224227
final int numKeygroups = this.numberOfKeygroups & 0xFF;
225228
this.keygroups = new AkaiKeygroup [numKeygroups];
226229
for (int i = 0; i < numKeygroups; i++)
227230
{
228-
disk.setPos (parent.getPartition ().getOffset () + dirEntry.getStart () * AKAI_BLOCK_SIZE + 150 * (i + 1), AkaiStreamWhence.START);
231+
disk.setPos (parent.getPartition ().getOffset () + dirEntry.getStart () * AKAI_BLOCK_SIZE + headerSize * (i + 1), AkaiStreamWhence.START);
229232
this.keygroups[i] = new AkaiKeygroup (disk);
230233
}
231234

src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000/AkaiSample.java renamed to src/main/java/de/mossgrabers/convertwithmoss/format/akai/s1000s3000/AkaiSample.java

Lines changed: 2 additions & 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.s1000;
5+
package de.mossgrabers.convertwithmoss.format.akai.s1000s3000;
66

77
import java.io.IOException;
88

@@ -92,6 +92,7 @@ public AkaiSample (final AkaiDiskImage disk, final AkaiVolume volume, final Akai
9292
// 0, 0, 255, 255 - skip
9393
disk.readInt32 ();
9494
this.samplingFrequency = disk.readInt16 () & 0xFFFF;
95+
// Only valid on S3000 series
9596
this.loopTuneOffset = disk.readInt8 ();
9697

9798
this.imageOffset = volume.getPartition ().getOffset () + dirEntry.getStart () * AKAI_BLOCK_SIZE + 150;

0 commit comments

Comments
 (0)