If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
ESQ1 Project
Re: ESQ1 Project
I plan to look more closely at ROM 1 today (jeez I hope that one is ok!).
I've now cross checked several randomly chosen wavs extracted from ROM 1 with the same ones specified in the AIFF file list, and they were all the same shape.
So it seems the issue is with the ROM images 2-4 and that ROM 1 image and WSR values etc are OK.
Since this topic is really for the ESQ-1 only, that’s quite a relief!
I’m a little disappointed that I probably won’t be getting all those additional SQ80 waves directly from the ROM images but I can personally make use of the AIFF files in any case.
Cheers
Spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: ESQ1 Project
Thanks! But there's no magic to it. It's marshalling. From the extractor I loaded the ROM, but instead of saving the individual waveforms, I split them, converted them to float value arrays, created hashes with name and data keys, stored those in another array and sent that to the first input. Then I added two methods (see chapter 8 of the user guide), called "load_state" and "save_state" and thus made sure that the content of @ins[0] is saved with the schematic (and loaded to @ins[0], when the schematic is loaded).Spogg wrote:That’s an amazing tool you have tulamide!
I can see you are indexing data and name arrays but where have you hidden them? This is a Ruby magic trick I need to learn.
That sounds plausible to me. However, since we have them now in float format without dc offset, those are the absolute realistic, original sounds. As soon as they are multi-sampled to waves, we can make a comparison (if we find examples that play the original waves without filters or modulations)Spogg wrote:Regarding the question of rendering the wave data to useful audio I have to say that I don’t know what’s for the best. I don’t think that a dc offset of 0.39% (due to missing zero sample value) is at all critical though. What matters most is the authenticity of the sound, but without A/B/C testing and without clean examples of the actual instrument sounds it’s not easy to decide. I do think the 8 bit quantisation noise is an important characteristic and interpolating that out is probably not desirable in an emulation (but possibly OK in an “inspired by” project).
For the rest of the post - I create another topic to outsource it, since, as you said, it is not about ESQ1 (because the ROM extraction of that one worked).
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: ESQ1 Project
Thanks tulamide. Good idea to have a separate topic.
I threw together a simple test tool to audition the individual waveforms (not as multisamples), compare with index reading Vs. Wavetable creation for rendering and to check and analyse tuning.
You can play the waves polyphonically and adjust ADSR settings etc.
Maybe this will be useful. If you can think of something I need to add or change, to assist us, I’m happy to make changes.
Cheers
Spogg
I threw together a simple test tool to audition the individual waveforms (not as multisamples), compare with index reading Vs. Wavetable creation for rendering and to check and analyse tuning.
You can play the waves polyphonically and adjust ADSR settings etc.
Maybe this will be useful. If you can think of something I need to add or change, to assist us, I’m happy to make changes.
Cheers
Spogg
- Attachments
-
- ESQ-1 & SQ80 waveform tester dev 10.zip
- (713.87 KiB) Downloaded 931 times
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: ESQ1 Project
A cool tool! The visualization helped me. The audio not so much (the index reader doesn't loop and used as wavetable they all sound strange).
The visuals however make me wonder, if all waveforms were extracted correctly. For example, 45_formt.3 shows silence for more than half of the view. No stop bytes there, since it would be -1 then, but also not the perfectly looped waveform I'd expect either. Or does the view not vary its range depending on float array size?
The visuals however make me wonder, if all waveforms were extracted correctly. For example, 45_formt.3 shows silence for more than half of the view. No stop bytes there, since it would be -1 then, but also not the perfectly looped waveform I'd expect either. Or does the view not vary its range depending on float array size?
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: ESQ1 Project
It gets frustrating! I just made a comparison of that frmt.3 waveform from two sources. The upper one is my extraction from following the start page and WSR value. The second one is from a guy who converted some of the waveforms for Apple Macintosh.
(Slight differences in sample length are to be expected, they come from the resampling, the guy did)
https://www.dropbox.com/s/7ass8j46hg5nrlj/waveform%20comparison.png?dl=0
As you can see, the start page/WSR values are once again misleading (or did we miss something in the process of finding out their usage, Spogg?)
(Slight differences in sample length are to be expected, they come from the resampling, the guy did)
https://www.dropbox.com/s/7ass8j46hg5nrlj/waveform%20comparison.png?dl=0
As you can see, the start page/WSR values are once again misleading (or did we miss something in the process of finding out their usage, Spogg?)
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: ESQ1 Project
I don’t understand why the looping doesn’t work for you. You have to click on the blue LED to swap between Single (shot) and Looped modes. Single is for 1-shot sounds like attack or percussion and Looped is for waveforms (for oscillator mode). Maybe the labelling isn’t clear.
Anyway, I’ve attached the latest version of the tool. This now takes into account the wave size in terms of pages. This is like the Resolution register in the WSR values, so the pitch remains constant with differing waveform lengths. It’s based on a minimum size of 256 samples (1 page). It’s not good to keep a constant reading rate because longer waveforms would then play at a lower pitch. I’m still experimenting so the tool may change and I’ll upload any new versions.
One of the reasons I made the tool was to compare using an indexed reader with a wavetable system. The wavetable reader works ok with some waveforms and not others. Longer waveforms are the worst but, as you said before, we can never predict which band limited table will be chosen so I’m now totally convinced not to bother with wavetables for this project.
You are correct to note that the “scopes” display a complete float array irrespective of the size of the array.
Now to the extracted waveforms issue. I extracted the formant 3 waveform manually, using the spreadsheet data only. I then compared this with the extraction from your tool and also Christian’s extraction (the guy who did the AIFFs). I’ve attached all 3 wav files and I hope the file names explain which is which.
[I’m sad to report that your tool was what added those trailing zeros because the manual extraction didn’t. Your tool has evaluated the WSR as leading to 512 samples but it should be 256. The spreadsheet specifies a start at 46,592 and length of 256, not 512.]
This is wrong! I misread the WSR value. YOUR version is correct!
[Also my manual extraction differs somewhat from Christian’s. It’s my view that he edited the file length to what he thought was correct and it was not due to resampling. As I understand it resampling should alter the sample rate and/or bit depth, but not length (duration).] He did edit it! See my next post!
A typical formant sound should consist of a short package of waves (usually sine-based) with some silence or very low level. Listening to his versus my manual one, I think mine sounds better and certainly slightly different. But without the original hardware we can’t be absolutely sure. However, the fact the Christian’s wave is shorter makes me believe that he edited the length. See next post!
What fun!
Cheers
Spogg
Anyway, I’ve attached the latest version of the tool. This now takes into account the wave size in terms of pages. This is like the Resolution register in the WSR values, so the pitch remains constant with differing waveform lengths. It’s based on a minimum size of 256 samples (1 page). It’s not good to keep a constant reading rate because longer waveforms would then play at a lower pitch. I’m still experimenting so the tool may change and I’ll upload any new versions.
One of the reasons I made the tool was to compare using an indexed reader with a wavetable system. The wavetable reader works ok with some waveforms and not others. Longer waveforms are the worst but, as you said before, we can never predict which band limited table will be chosen so I’m now totally convinced not to bother with wavetables for this project.
You are correct to note that the “scopes” display a complete float array irrespective of the size of the array.
Now to the extracted waveforms issue. I extracted the formant 3 waveform manually, using the spreadsheet data only. I then compared this with the extraction from your tool and also Christian’s extraction (the guy who did the AIFFs). I’ve attached all 3 wav files and I hope the file names explain which is which.
[I’m sad to report that your tool was what added those trailing zeros because the manual extraction didn’t. Your tool has evaluated the WSR as leading to 512 samples but it should be 256. The spreadsheet specifies a start at 46,592 and length of 256, not 512.]
This is wrong! I misread the WSR value. YOUR version is correct!
[Also my manual extraction differs somewhat from Christian’s. It’s my view that he edited the file length to what he thought was correct and it was not due to resampling. As I understand it resampling should alter the sample rate and/or bit depth, but not length (duration).] He did edit it! See my next post!
A typical formant sound should consist of a short package of waves (usually sine-based) with some silence or very low level. Listening to his versus my manual one, I think mine sounds better and certainly slightly different. But without the original hardware we can’t be absolutely sure. However, the fact the Christian’s wave is shorter makes me believe that he edited the length. See next post!
What fun!
Cheers
Spogg
- Attachments
-
- Formant 3 issue.zip
- (1.7 KiB) Downloaded 888 times
-
- SQ80 waveform tester dev 13.zip
- (703.74 KiB) Downloaded 924 times
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: ESQ1 Project
Many apologies for my previous post. I made a stupid mistake!
Apart from your tool being perfect, you had doubts about whether the extraction of formant 3 was correct. Well, we’ve been very lucky and my unlikely dream has come true.
A guy played the first 27 basic waves from an ESQ-1 on YouTube, four different notes for each one. I ripped the sounds and edited them and your extraction is correct. If you zoom into Formant 3 you’ll see a waveform identical to yours.
You’ll also get to hear just how rough this thing sounded with noise and aliasing very apparent:
https://www.youtube.com/watch?v=8otfiEWQk84
The link below is to the complete sound file, and I’ve also extracted and named the individual sections. I read the wave names off the synth’s display on YouTube.
https://www.dropbox.com/s/29wmrcatvljtz ... v.zip?dl=0
This also makes me question the accuracy of Christian's extraction in general of course.
Cheers
Spogg
Apart from your tool being perfect, you had doubts about whether the extraction of formant 3 was correct. Well, we’ve been very lucky and my unlikely dream has come true.
A guy played the first 27 basic waves from an ESQ-1 on YouTube, four different notes for each one. I ripped the sounds and edited them and your extraction is correct. If you zoom into Formant 3 you’ll see a waveform identical to yours.
You’ll also get to hear just how rough this thing sounded with noise and aliasing very apparent:
https://www.youtube.com/watch?v=8otfiEWQk84
The link below is to the complete sound file, and I’ve also extracted and named the individual sections. I read the wave names off the synth’s display on YouTube.
https://www.dropbox.com/s/29wmrcatvljtz ... v.zip?dl=0
This also makes me question the accuracy of Christian's extraction in general of course.
Cheers
Spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: ESQ1 Project
First and foremost, let me thank you for having done that work! It is not a walk in the park to go through a youtube video sound track and extract all those waveforms!
It also is a great relief that the extractor works correctly! Now with confidence in it I can base all further issues on other possible sources.
What an awesome find! Yes, the sound is very rough and (apart from the specialties of both) it reminds me a bit of the D-50. Defintely could hear some other waves of which I wasn't sure and they sounded as the extractions. When I zoomed in on formant 3 it was such a relief. I could also see the potential later on in the video (and it frightens me a little bit as well, because the filter sounds amazing), when he played some patches and modulated them.
(A and B original sample rate and changed sample rate without interpolation)
But that is not desirable. With interpolation it will result in
which follows the original shape. We now have a waveform that sounds like the original one and is in the same pitch, but with a rate of 200 Hz.
Let me thank you once again for the finding of that video and the work you did on it!
It also is a great relief that the extractor works correctly! Now with confidence in it I can base all further issues on other possible sources.
Spogg wrote:A guy played the first 27 basic waves from an ESQ-1 on YouTube, four different notes for each one. I ripped the sounds and edited them and your extraction is correct. If you zoom into Formant 3 you’ll see a waveform identical to yours.
You’ll also get to hear just how rough this thing sounded with noise and aliasing very apparent:
https://www.youtube.com/watch?v=8otfiEWQk84
What an awesome find! Yes, the sound is very rough and (apart from the specialties of both) it reminds me a bit of the D-50. Defintely could hear some other waves of which I wasn't sure and they sounded as the extractions. When I zoomed in on formant 3 it was such a relief. I could also see the potential later on in the video (and it frightens me a little bit as well, because the filter sounds amazing), when he played some patches and modulated them.
It doesn't make me question it. They are bad, at least for our purpose. Regarding resampling, the goal is to move a waveform/sample from one rate to another. What happens if you just play the same sample at different rates, is well known. It changes its pitch. But resampling is a method to move the withform to another rate without changing the pitch. A sample with 100 samplepoints and a rate of 100 Hz plays the sample points within 1 second. If I just change the rate to 200 Hz, it will play the sample points twice within 1 second. That's not the goal, but to have a new "base frequency" without altering the pitch. So resampling to 200 Hz will double the amount of sample points. That's why resampling requires an interpolation method. In this extreme example to fill the gap on every other sample. Without interpolation something like this will happenSpogg wrote:This also makes me question the accuracy of Christian's extraction in general of course.
- Code: Select all
A: 1 0.5 -1 -0.5
B: 1 1 0.5 0.5 -1 -1 -0.5 -0.5
(A and B original sample rate and changed sample rate without interpolation)
But that is not desirable. With interpolation it will result in
- Code: Select all
A: 1 0.5 -1 -0.5
B: 1 0.75 0.5 -0.25 -1 -0.75 -0.5 0.25
which follows the original shape. We now have a waveform that sounds like the original one and is in the same pitch, but with a rate of 200 Hz.
Let me thank you once again for the finding of that video and the work you did on it!
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: ESQ1 Project
Thank you sir!
I'm really enjoying this collaboration.
I’ve made another version of my tool. I removed the wavetable stuff because it’s of no value to us.
I’ve added a filter for the wave reader to compare fundamental pitches with the reference oscillator. It’s not so easy with complex waves with a low fundamental level, so this helped.
I’ve changed a few other things too but those are the main ones. The page ratio thing seems to work nicely on all the periodic waveforms I tried.
The base tuning of the wavs needs to be increased by 7.234 semitones, then all is well. I guess this is due to the odd clock frequencies/sample rate of the original. I didn’t calculate it but maybe you could account for it; I just checked it against the reference osc.
You can now switch between the WAV file and the Float Array file and actually see that 0 value jump, if you look closely.
I’ve tried to make sense of the semitone and fine tune values in the spreadsheet but no luck yet. Christian had no idea either. I tuned a few waveforms that had these values listed, noted the tuning offset, but I couldn’t yet relate these tuning offsets to the spreadsheet values. If I do crack it I’ll post my solution. I may need the Enigma machine.
Cheers
Spogg
I'm really enjoying this collaboration.
I’ve made another version of my tool. I removed the wavetable stuff because it’s of no value to us.
I’ve added a filter for the wave reader to compare fundamental pitches with the reference oscillator. It’s not so easy with complex waves with a low fundamental level, so this helped.
I’ve changed a few other things too but those are the main ones. The page ratio thing seems to work nicely on all the periodic waveforms I tried.
The base tuning of the wavs needs to be increased by 7.234 semitones, then all is well. I guess this is due to the odd clock frequencies/sample rate of the original. I didn’t calculate it but maybe you could account for it; I just checked it against the reference osc.
You can now switch between the WAV file and the Float Array file and actually see that 0 value jump, if you look closely.
I’ve tried to make sense of the semitone and fine tune values in the spreadsheet but no luck yet. Christian had no idea either. I tuned a few waveforms that had these values listed, noted the tuning offset, but I couldn’t yet relate these tuning offsets to the spreadsheet values. If I do crack it I’ll post my solution. I may need the Enigma machine.
Cheers
Spogg
- Attachments
-
- SQ80 waveform tester dev 17.zip
- (725 KiB) Downloaded 929 times
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: ESQ1 Project
Before I test all of this, just from the theory here's my findings:
The difference from (1MHz/26) to 44.100kHz would be in semitones: 2.3683462374897073
The difference from (1MHz/26) to Nyquist (in this case 22.050 kHz) would be: -9.631653762510295
That puzzles me already! I trust your eyes and ears, but the value is so different from what I'd expect.
EDIT: Wait a second. If I add your value to -9.~ I get -2.3976~. Given that you did it manually, I would say it is pretty much the exact negative of the first value I mentioned. But the sign doesn't make sense. (It would mean you're a real quint above the fundamental if the nyquist calculation is to be used)
Edit2: Sorry, in English it reads "perfect fifth", not "real quint".
The difference from (1MHz/26) to 44.100kHz would be in semitones: 2.3683462374897073
The difference from (1MHz/26) to Nyquist (in this case 22.050 kHz) would be: -9.631653762510295
That puzzles me already! I trust your eyes and ears, but the value is so different from what I'd expect.
EDIT: Wait a second. If I add your value to -9.~ I get -2.3976~. Given that you did it manually, I would say it is pretty much the exact negative of the first value I mentioned. But the sign doesn't make sense. (It would mean you're a real quint above the fundamental if the nyquist calculation is to be used)
Edit2: Sorry, in English it reads "perfect fifth", not "real quint".
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Who is online
Users browsing this forum: No registered users and 21 guests