Sida 1 av 2
Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 11:43:49
av Krillo
Jag är moderator på ett forum för ddrum eltrummor. Där har diskuterats möjligheten att knäcka Clavias gamla ljudformat för deras ddrum4 modul. Clavia är ett svenskt företag och de sålde rättigheterna till ddrum namnet för ett antal år sedan till amerikanska Armadillo. De tillverkar skitdåliga akustiska trummor samt importerar elektroniska skräptrummor (samma som säljs under namnet Medeli) från Kina. Så varken Clavia eller Armadillo har koll på detta längre, och bryr sig inte heller. Vi är flera stycken som har mailat dem och även en av snubbarna som jobbade med detta på den tiden.
Själv kan jag inte så mycket om sånt här, men tänker att det säkert finns någon här som skulle kunna klura ut det hela. Tveksamt om det finns speciellt mycket pengar i det hela, men om någon skulle lyckas, skulle denna kunna göra ett program för att göra egna sådana filer, och det vet jag folk skulle betala för.
Om det finns intresse så svara gärna i denna tråd

Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 11:44:45
av Nerre
Har du ett exempel på en ljudfil?
Trumljud är väl rätt korta så det borde vara rätt små filer?
Sen kanske schema på en eltrumma skulle ge ledtrådar, t.ex. se vad för D/A-omvandlare som används, om det kanske är flera "kanaler" etc.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 12:57:50
av pbgp
Det kan ju vara ett roligt projekt. Börja med att beskriva vad ni kommit fram till hitintills.
Edit: Hittade manualen:
http://www.clavia.se/ddrum/Files/ddrum4 ... manual.pdf
och där står:
7. SOUND FORMATS AND MIDI
The sounds in the ddrum4 SE reside in a memory that is technically called a Flash ROM. This means
that besides storing sounds, you can delete sounds that you do not want and replace them with new ones.
The Flash ROM also retains its content when the power is switched off. You can load sounds into the
ddrum4 SE module via MIDI in two different formats, the ddrum4 format and the MIDI SDS (Sample
Dump Standard) format. Sounds in the ddrum4 format can be accessed from the Clavia web site, free of
charge. Point your browser to
http://www.clavia.se/ for more information.
DDRUM4 SOUNDS
A ddrum4 sound contains one or more samples that have been converted to a proprietary format. It has
been carefully edited by the Clavia crew and finally compressed (by a factor 3-6 times). The compression
technology allows for the sounds to take up less memory so that we can put more of them into the
ddrum4 SE. Each ddrum4 sound has a unique name, which assigns it to the appropriate sound group.
The sound numbers do not have to be consecutive. A ddrum4 sound can also contain a couple of varia-
tions, which are different sets of functions that affect the sound and how it behaves when played back.
These special functions/parameters cannot be edited by the user. One type of variation function would
be the crossfade information for multi samples or dynamic filter settings.
Det låter som det egna formatet är lite mer avancerat än bara en sampling. Det här kan nog vara svårt utan ytterligare dokumentation.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 13:07:14
av Krillo
Ä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;
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 13:16:23
av Glenn
Skulle man börja profitera på det där skulle säkerligen den som äger grejerna skicka en fet stämmning.
Anledningen att jag skrev det är för att du skrev det sista, om nån däremot knäcker det och släpper fritt så lär det bli mindre problem, även om det kan strula till sej där med.
..Jag har förut dragit exemplet på min hårdvara som jag saknade manual till, och det svenska företaget som ahde gjort den var HELT ointresserade av att hjälpa mej och sa att dom inte hade några manualer kvar osv.. varvid jag genom lite luskande på forum hittar en kille som har samma hårdvasra, och manualen, så jag scannar hela manualen som en snygg PDF och sen glr jag det dumma, jag mailar företaget och frågar om dom vill ha den för att lägga ut på deras websida eller maila till folk som frågar, till svar får jag en RIKTIGT elak utskällning att jag ABSOLUT inte får scanna nån manual, och att dom tänker vidtaga rättsliga åtgärder om jag gör det blablabla.. ..vilket kändes lite märkligt när dom precis innan var helt ointresserade av produkten.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 13:52:24
av pbgp
Filformatet verkar ganska väl kartlagt av Bill. Så det borde gå att få ut den komprimerade samplingen utan några större omsvep. Men att lista ut hur det funkar... ptja.. hade man en okomprimerad version av någon samling så kanske. Och om man var lite mer erfaren vad det gäller komprimeringsrutiner så.
Kanske skulle det vara lättare att försöka skruva upp en maskin och se om det finns några ROM:ar man kan dumpa och hitta en rutin för avkodning i. Men det börjar gå långt över mina förmågor.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 19:31:01
av Krillo
Här är en länk till ett program som nissen som gav mig infon har gjort:
http://www.mediafire.com/download/glijz ... um4wav.exe
Detta program extraherar de individuella samplingarna från dd4-formatet. Kanske man kan kika på hur programmet är gjort för att kunna "stoppa in filer i formatet". Vad vet jag

Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 22:42:00
av Josasp
Som vanligt på internet, man får göra det gratis och släppa under något nickname.
Då orkar ingen leta reda på den skyldige om de inte bryr sig enormt mycket.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 5 juni 2014, 23:56:22
av Findecanor
Krillo skrev: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.
Det enda det säger mig att datat troligen är big-endian.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 6 juni 2014, 01:37:52
av blueint
Öppna maskinen läs av ROM-PROM-EPROM-EEPROM etc. Använd disassembler mm.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 9 juni 2014, 21:08:49
av Krillo
Nån som har i sin ägo pryttlar att läsa av eprom? Kretsen har jag.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 10 juni 2014, 00:42:50
av blueint
Beteckning? Kapsel? Landsända?
Re: Avkoda / knäcka gammalt ljudformat
Postat: 10 juni 2014, 08:42:21
av Krillo
Jag får rycka bort ettiketten å kolla. De äldre modulerna hade två eprom, märkta H och L (hi low), men jag tror det bara är ett i denna. Länge sen jag kollade. Stockholm.
Re: Avkoda / knäcka gammalt ljudformat
Postat: 16 juli 2014, 12:01:28
av mounte
Vore intressant att kika på ett paket med enbart komprimerad sample, kan du skicka/ladda upp så kikar jag gärna.
Jag skulle gissa på att komprimeringen är någon form av LZ / LZW och/eller Huffman (entropi-baserad kodning) då det går relativt kvickt att dekomprimera.
T.ex så andvänder zlib dessa
http://www.zlib.net/feldspar.html
Sen finns golomb-coding, har lite sämre pejl på hur utbrett det är...
Kan ju finnas något dsp-chip som sköter avkodning etc...
(dessa är nya ... men någon form kan ju finnas...)
http://www.digikey.com/en/articles/tech ... ontrollers
http://www.ti.com/lit/an/slaa361/slaa361.pdf
mer data:
http://www.hydrogenaud.io/forums/index. ... 0&p=713942&
http://wiki.hydrogenaud.io/index.php?ti ... comparison
Re: Avkoda / knäcka gammalt ljudformat
Postat: 16 juli 2014, 14:23:22
av blueint
krillo skrev:dessa filer gjordes även på gamla Mac-datorer som har samma processor.
Då bör det finnas ett program som kan disassembleras för att få fram funktionen. Man skulle t.om kunna göra C-kod av assemblern så har man något att köra direkt.