Är nu på jobbet

så jag har bara dessa länkar som är hela bibliotek med samples
http://www.4shared.com/file/x4bHUwUL/Me ... brary.html De är midi-sysex filer då de överförs med mididump. En fil kan innehålla upp till 10 stycken samples, alltså olika ljud, beroende på hur hårt man slår. Filen innehåller även settings med två uppsättningar filter, det finns även loop-funktionalitet och pitch-bend etc. Processorn i dessa moduler är Motorola 68k, och dessa filer gjordes även på gamla Mac-datorer som har samma processor. Vet ej om det spelar roll. Settings och filter inställningar är relativt knäckta redan av en snubbe som heter Bill Piland, här finns dokumentation av hans arbete:
http://home.comcast.net/~bill.piland/si ... a021d73f28
Kan väl tillägga att formatet alltså komprimerar audiodata upp till 8x har jag för mig. Det är dock inte FFT eller liknande, jag gissar att det är ren datakomprimering, efter som datorerna på den tiden inte hade speciellt mycket kapacitet till avancerade codecs.
Han som jobbade med filformatet när det begav sig, svarade mig så här:
The file has INSTRUMENT_FILE_BLOCK and x number of SAMPLE_FILE_BLOCK.
Then all is packed from 8 to 7 bit into MIDI sysex.
Han bifogade också följade i en txt-fil:
Kod: Markera allt
/***************************************************************/
#define FILE_NAME_SIZE 31
#define MAX_VARIATION 10
#define MAX_PARBLOCK 10
#define MAX_SAMPLE 10
#define MAX_FREQPOINTS 8
/***************************************************************/
typedef struct{ // size = 20
SBYTE mParBlockFlag[MAX_PARBLOCK];
SBYTE mRandomFlag[MAX_PARBLOCK];
}VARIATION;
typedef struct{ // size = 24
UWORD mStartBlock;
UWORD mBlockCount;
UWORD mLoopBlockCount;
UBYTE mFreqPoint[MAX_FREQPOINTS];
UBYTE mFreqPointUsed;
UBYTE mFiller[5];
void *mFileMapEntry; // initialized at channel update
}DD4_SAMPLE;
typedef struct{ // not in instrument
UBYTE mGainVel[32];
UBYTE mGainPos[8];
UWORD mOutSelect;
UWORD mOutGain1;
UWORD mOutGain2;
UWORD mOutGain3;
UWORD mOutGain4;
UWORD mGain;
UWORD mGainOffset;
SWORD mGainPedal;
SLONG *mF1TabPtr;
SLONG *mF2TabPtr;
SWORD mF1Freq;
SWORD mF1FreqVel;
SWORD mF1Gain;
SWORD mF1GainVel;
SWORD mF1GainDecay;
SWORD mF2Freq;
SWORD mF2Gain;
SWORD mF2Q;
SWORD mF2FreqJump;
SWORD mF2FreqDva;
SWORD mPitchRes;
SWORD mPitchPress; // was mPitchPressure
SWORD mPitchEnvAmt;
SLONG mPitchEnvDecay;
SWORD mPitchEnvAmtVel;
SWORD mPitchEnvAmtDva;
SWORD mAmpEnvDecayRes;
SWORD mAmpEnvDecayVel;
SWORD mAmpEnvDecayPress; // was mDecayPressure
SWORD mAmpEnvDecayPedal;
SWORD mAmpEnvAttack;
SWORD mAmpEnvAttackVel;
DD4_SAMPLE *mSample;
}PB_EXTRA;
typedef struct{ // size = 50
// Sample select
SBYTE mSampleNr;
// Miscellaneous
SBYTE mF2FreqDva;
SBYTE mDiverse;
SBYTE mAmpEnvDecayPedal;
// Gain Scaling
UBYTE mGainVel[8];
UBYTE mGainPos[8];
// Pitch
SBYTE mPitch;
SBYTE mPitchFine;
SBYTE mPitchPress; // was mPitchPressure
SBYTE mPitchPanel;
SBYTE mPitchEnvDecay;
SBYTE mPitchEnvAmt;
SBYTE mPitchEnvAmtVel;
SBYTE mPitchEnvAmtDva; // Drumhead Vibration Algorythm
// Amp
SBYTE mAmp;
SBYTE mAmpVelCurve;
SBYTE mAmpEnvAttack;
SBYTE mAmpEnvAttackVel;
SBYTE mAmpEnvDecay;
SBYTE mAmpEnvDecayVel;
SBYTE mAmpEnvDecayPress; // was mDecayPressure
SBYTE mAmpEnvDecayPanel;
// Filter1
SBYTE mF1Freq;
SBYTE mF1FreqVel;
SBYTE mF1Gain;
SBYTE mF1GainVel;
SBYTE mF1Q;
SBYTE mF1GainDecay;
// Filter2
SBYTE mF2Freq;
SBYTE mF2Gain;
SBYTE mF2Q;
SBYTE mF2FreqJump;
PB_EXTRA *mPBExtraPtr; // initialized at channel update
}PARBLOCK;
/***************************************************************/
typedef struct{ // size = 960 (must be 960)
UBYTE mVersion;
UBYTE mClass;
UBYTE mFiller[18];
VARIATION mVariation[MAX_VARIATION]; // size = 20*10 = 200, offs = 20
PARBLOCK mParBlock[MAX_PARBLOCK]; // size = 50*10 = 500, offs = 220
DD4_SAMPLE mSample[MAX_SAMPLE]; // size = 24*10 = 240, offs = 720
}INSTRUMENT;
typedef struct{ // size = 60 (must be 60)
char mFileName[FILE_NAME_SIZE + 1];
ULONG mFileType;
ULONG mFileSize;
ULONG mFileDate;
UWORD mBlockCount; // Including block containing file header
UBYTE mReserved[14];
}FILE_HEADER;
/***************************************************************/
typedef struct{ // size = 1020 (must be 1020)
FILE_HEADER mFileInfo;
INSTRUMENT mFileInstrument;
}INSTRUMENT_FILE_BLOCK;
/***************************************************************/
#define C_PREOVERLAP_SIZE 2
#define C_DATA_SIZE 880
#define C_OVERLAP_SIZE 44
#define C_POSTOVERLAP_SIZE 2
#define C_OVERRUN_START (C_PREOVERLAP_SIZE+C_DATA_SIZE)
#define C_TOTDATA_SIZE (C_PREOVERLAP_SIZE+C_DATA_SIZE+C_OVERLAP_SIZE+C_POSTOVERLAP_SIZE)
typedef struct{ // size = 1020 (must be 1020)
SBYTE mData8bit[C_TOTDATA_SIZE];
SWORD mData16bit[C_OVERLAP_SIZE];
SBYTE mRateIdx;
SBYTE mExponentIdx;
SBYTE mEmphasis;
SBYTE mFiller;
}SAMPLE_FILE_BLOCK;
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.