-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Other drum machine roms #42
Comments
Just asking since theres a fairly large archive of vintage synth roms |
Hi @waldnzwrld, I watched a HR16 demo on youtube - I didn't know the drum machine before. For the SQ80, I see it's just patches (similar to DX7) - i.e. these can't be used so directly, you'd need an emulator for the synth. I recently reworked the sources and removed the TR707 or TR909 samples - I'm working on a way for the user to then flash these ROMs independently of the actual firmware. If you have any tips for interesting old hardware (like HR16), just post them here. |
The hr16 was one of the great dm's of the early 90's dance sound Edit: Oops was replying from my phone and didn't notice you had posted the same link. LOL |
After some research, there are two sound eeproms for the HR16B which contain 49 samples. With 2 x 512KB = 1MB sample data already quite a bit for the Teensy 4.0 (2MB Flash)...
Method of DecodingDecoding the sample should be fairly simple. Let's assume we have a couple of helper functions that load the raw ROM image into an array, and write an array of floats out as a standard sound file (for instance, .WAV). We need to read through the sample, and divide the output by two every time we hit a zero (and skip the zero so it doesn't get output). To do this, we might use something like this: // output multiplier, start off at unity gain
mult = 1;
// output pointer, lets us skip zeroes
outptr = 0;
// loop through each byte
for (i = 0; i < SAMPLE_SIZE; i++) {
// get the sample
s = input[i];
if (s == 0) {
mult = mult / 2; // drop by 6dB
} else {
// put it in the output array, and bump the pointer
output[outptr] = (1-(s/128)) * mult;
outptr++;
}
} Note that this does not attempt to find the start and end of samples, or deal with any "odd bytes" that some samples seem to have. If this decoder produces correct results for the "factory" Alesis samples, it may be used to confirm that the encoder software is doing the right thing. |
these are sampled old machines, not ROMs attaching their licence |
Out of curiosity would it be possible to say grab an hr16 rom dump and use it
Or maybe a linndrum or ensoniq sq80
?
The text was updated successfully, but these errors were encountered: