33 #if !defined(_CARBON_) && !defined(__APPLE__) && !defined(WIN32) 44 #include <sys/types.h> 46 #include <sys/fcntl.h> 48 #if defined(_CARBON_) || defined(__APPLE__) || LINUX 49 # include <sys/ioctl.h> 53 typedef unsigned int uint;
56 # include <linux/cdrom.h> 93 # define CD_FRAMESIZE 2048 96 #define DISK_CLUSTER_SIZE 61440 98 typedef std::string
String;
119 virtual int GetPos()
const;
122 virtual int Available (uint WordSize = 1);
123 virtual int Read (
void* pData, uint WordCount, uint WordSize);
125 void ReadInt8(uint8_t* pData, uint WordCount);
126 void ReadInt16(uint16_t* pData, uint WordCount);
127 void ReadInt32(uint32_t* pData, uint WordCount);
149 #elif defined _CARBON_ || defined(__APPLE__) || LINUX 307 int Read(
void* pBuffer, uint SampleCount);
603 std::list<AkaiSample*> mpSamples;
627 uint
ListSamples(std::list<AkaiDirEntry>& rSamples);
645 std::list<AkaiProgram*> mpPrograms;
646 std::list<AkaiSample*> mpSamples;
664 uint
ListVolumes(std::list<AkaiDirEntry>& rVolumes);
681 std::list<AkaiVolume*> mpVolumes;
706 std::list<AkaiPartition*> mpPartitions;
709 #define AKAI_FILE_ENTRY_SIZE 24 710 #define AKAI_DIR_ENTRY_OFFSET 0xca 711 #define AKAI_DIR_ENTRY_SIZE 16 712 #define AKAI_ROOT_ENTRY_OFFSET 0x0 714 #define AKAI_PARTITION_END_MARK 0x8000 715 #define AKAI_BLOCK_SIZE 0x2000 717 #define AKAI_FAT_OFFSET 0x70a 719 #define AKAI_MAX_FILE_ENTRIES_S1000 125 //should be 128 ?? 720 #define AKAI_MAX_FILE_ENTRIES_S3000 509 // should be 512 ?? 721 #define AKAI_MAX_DIR_ENTRIES 100 722 #define AKAI_TYPE_DIR_S1000 1 723 #define AKAI_TYPE_DIR_S3000 3 725 #define AKAI_PROGRAM_ID 1 726 #define AKAI_KEYGROUP_ID 2 727 #define AKAI_SAMPLE_ID 3
uint8_t mMidiProgramNumber
AkaiPartition * GetPartition(uint count)
uint8_t mPressureToFilter
AkaiEnveloppe mEnveloppes[2]
uint8_t mModulationToLFODepth
AkaiDirEntry GetDirEntry()
uint8_t mStereoOutputScale
AkaiDirEntry GetDirEntry()
uint8_t mSampleAuxOutOffset[4]
bool WriteImage(const char *path)
Extract Akai data track and write it into a regular file.
virtual int Available(uint WordSize=1)
uint8_t mVelocityToFilter
void SetOffset(uint Offset)
virtual int GetPos() const
int8_t mSoftpedToTuneSemitones
Encapsulates one disk partition of an AKAI disk.
virtual uint GetError() const
int8_t mSoftpedToTuneCents
virtual int SetPos(int Where, akai_stream_whence_t Whence=akai_stream_start)
void swapBytes_32(void *Word)
uint8_t mVoiceOutputScale
DiskImage(const char *path)
Open an image from a file.
uint ListPrograms(std::list< AkaiDirEntry > &rPrograms)
uint8_t mEnveloppe2ToFilter
int8_t mKeyToDecayAndRelease
Toplevel AKAI image interpreter.
AkaiVolume * GetVolume(uint Index)
void OpenStream(const char *path)
int8_t mOffVelocityToRelease
int8_t mVelocityToVolumeOffset[4]
int ReadFAT(DiskImage *pDisk, AkaiPartition *pPartition, int block)
AkaiSample * GetSample(uint Index)
int8_t mVelocityToEnveloppe2ToFilter
uint16_t mSamplingFrequency
bool LoadSampleData()
Load sample into RAM.
int Read(void *pBuffer, uint SampleCount)
Use this method and SetPos() if you don't want to load the sample into RAM, thus for disk streaming.
AkaiKeygroupSample mSamples[4]
Accessing AKAI image either from file or a drive (i.e.
uint ListSamples(std::list< AkaiDirEntry > &rSamples)
AkaiDirEntry GetDirEntry()
void AkaiToAscii(char *buffer, int length)
uint ListSamples(std::list< String > &rSamples)
bool mHoldAttackUntilLoop
int16_t mVelocityToSampleStart[4]
bool mSampleKeyTracking[4]
int8_t mVelocityToRelease
AkaiProgram * GetProgram(uint Index)
uint8_t mVelocityToLFODepth
AkaiDiskElement(uint Offset=0)
int8_t mEnveloppe2ToPitch
uint8_t mNumberOfKeygroups
AKAI instrument definition.
int SetPos(int Where, akai_stream_whence_t Whence=akai_stream_start)
Use this method and Read() if you don't want to load the sample into RAM, thus for disk streaming.
bool mVelocityZoneCrossfade
AkaiDisk(DiskImage *pDisk)
void ReleaseSampleData()
release the samples once you used them if you don't want to be bothered to
Subdivision of an AKAI disk partition.
uint32_t mNumberOfSamples
uint8_t mPressureToLFODepth
AkaiSample * GetSample(uint Index)
AkaiPartition * GetParent()
virtual int Read(void *pData, uint WordCount, uint WordSize)
Returns number of successfully read words.
AkaiKeygroup * mpKeygroups
bool ReadDirEntry(DiskImage *pDisk, AkaiPartition *pPartition, AkaiDirEntry &rEntry, int block, int pos)
virtual akai_stream_state_t GetState() const
int8_t mKeyTemperament[11]
uint ListVolumes(std::list< AkaiDirEntry > &rVolumes)
void swapBytes_16(void *Word)