Encoding Data in Dubstep Drops
blog.benjojo.co.uk
blog.benjojo.co.uk
https://www.magneticmag.com/2012/08/the-aphex-face-visualizi...
https://raw.githubusercontent.com/trailofbits/ctf/master/doc...
Edit: looked closer at the post, the DC offset lasts for over 100ms per cycle.. yeah that's a problem
What this guy is showing is not a digital signal. It is an analog signal that has been generated from digital data. Not sure what the point of all of this was, but thanks, I needed a break from finding this bug I've been trying to squash.
A zero-order hold is just one possible way of turning a digital signal into an analog one which you can then measure with your oscilloscope. But the output of the zero-order hold is not the digital signal, because the digital signal is only defined at discrete sample points.
With sigma-delta modulation you can trade sample rate for bit depth and vice versa.
Also worth noting that an ideal D/A converter will give you the exact waveform back, but such a device does not exist (but you can get pretty close).
I then found upon this application note[2] which states a full-bridge class D shares the benefits of a traditional bridge tied load[3] amplifier, like not requiring DC blocking capacitors.
Not sure how common this is, but clearly blocking caps is not something to be assumed.
[1]: https://www.ti.com/product/PCM5102A#product-details##feature...
[2]: https://www.maximintegrated.com/en/design/technical-document...
[3]: https://en.wikipedia.org/wiki/Bridged_and_paralleled_amplifi...
Having damaging audio signal is a new one for me.
In a normal 2 or 3 way speaker cabinet, you'll have an analog crossover which consists of something like a capacitor in series with the tweeter (high pass filter), and an inductor in series with the woofer (low pass filter).
In that case, the tweeter is protected from DC, but the woofer isn't.
(() => {
const message = 'asdf';
const messageBinary = message.split('').map(c => c.charCodeAt(0).toString(2)).join('').split('').map(Number);
const bitDurationSeconds = 0.1;
const shiftSize = 0.1;
return wavtool.mapSamplesCommand((sample, index, channelData, settings, context) => {
const bitIndex = Math.floor(index / (bitDurationSeconds * context.sampleRate));
const shift = bitIndex < messageBinary.length
? (2 * (messageBinary[bitIndex] - 0.5)) // [0,1] => [-1,1]
: 0;
return sample + shift * shiftSize;
});
})()The technique described could be used on any bass-heavy music, and is in no way related to dubstep or its data-sounding-ness.
I wonder how well it'd work with something like this https://www.youtube.com/watch?v=VEAf_ZztCP0
Personally, I'm not a fan of this shift. I prefer EDM from the era of the track you linked to, and/or contemporary artists who emulate the older styles.
Mainstream it is not, and THANK GOD for that
Listen to dnb from two decades ago you can still see where current stuff comes from. Compare early Digital Mystikz stuff with Skrillex and you wouldn’t call them the same thing.
On the other hand I love Fonik, for example.
I love even more Deadmau5, E.T.H, ...
To save a click... It’s the garage track largely credited as the birth of dubstep
Here are some other "true" dubstep tracks, in no particular order:
- Burial - Archangel https://www.youtube.com/watch?v=3J1gvgwHblI
- Rusko - Jahova https://www.youtube.com/watch?v=1OE_jjJkkD8
- Coleco - Taostic https://www.youtube.com/watch?v=krGadL6Je6A
- Kode9 - 9 Samurai https://www.youtube.com/watch?v=1-rEAe4C8gk
- Skream - Mignight Request Line https://www.youtube.com/watch?v=vJGXRQ9vBoU
Express: https://youtu.be/SLbXmPvtZXA
A lot of proto-wobble in this one.
Side anecdote... My oldest bro was in a band with her brother Davey in school and my second oldest bro was in her class.
The Loefah track in the parent comment though, I can get behind that.
I hate that guy.
That is, it's no longer nifty and fashionable to listen to this type of "Brostep", but people who liked it without regard to its social status may continue listening to new material as though nothing changed, while others may have grown tired of the sound or the social clout it may have brought them to be "in the know" or part of some zeitgeist and simply kept up with "today's hits".
The same is true of lots of genres IMHO.
I'll take this as my only chance I'll probably get to post dubstep on HN in a valid discussion:
https://www.youtube.com/watch?v=rc85cGTlKLY
https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-st... is one of my favorites.
- Apply an EQ filter that lowers the volume of the 0-100Hz band by 6dB (this happened because he halved the amplitude of the 100Hz band)
- Add a slow binary digital signal at around ~4 baud (2Hz fundamental), with slopes smoothed to around 10% of the bit time.
This has nothing to do with dubstep or bass drops - it would work for any song. It's just modulating data in infrasound, at 2Hz, which is well below the threshold of human hearing. The problem here is that he's also needlessly reducing the level of the 0-100Hz band to half the amplitude (6dB), which completely kills the bass feel of the original song. Dubstep fans will not approve (and he needs better speakers if he can't hear the difference).
A much simpler, more sensible process would be to just do this:
- Apply a steep highpass filter at 20Hz (the limit of human hearing), to remove any inaudible low-frequency (infra)sounds.
- Reduce the volume of the overall song by, say, around 1dB, to make a bit of headroom for the modulated digital signal
- Encode whatever you want in those 20Hz in the headroom you created (the amplitude can be quite low, e.g. 5%, it doesn't need to move the whole waveform over).
Then to decode it just lowpass the signal at 20Hz and do your bit detection after that - the filter will remove the audio, leaving only your signal, so it doesn't matter that your signal isn't a whole 50% of the output power. Now the song is only 1dB quieter. You can use as simple or as fancy a modulation technique as you want in that 20Hz band. You could use (normal) ASK as he did, just lowpass it to remove any high frequency components. You could use FSK. You could use QAM. Whatever.
* His process actually also messes up the original 100Hz band by modulating it with a ~4Hz square waveform due to the way he does the modulation by inverting and interpolating, which is going to create harmonics and other ickiness around the transitions, as well as does not guarantee the absence of clipping due to the way he only reduced the amplitude of the low 100Hz band (this process can actually increase peak levels, as can happen any time you use frequency filtering - try his high-pass filter command on this file and watch sox complain of clipping, even though the original file does not clip: https://mrcn.st/t/filtering_clips.wav ), so I would not recommend trying to emulate his approach precisely even if you want to achieve the same actual effect, since it's actually quite a silly way of going about doing it :)
https://twitter.com/chibitech/status/1237326756672983040
Infrasound only works digitally because no speaker system can reproduce frequencies that low, and many analog systems will corrupt them (e.g. AC coupling). Ultrasound is therefore used most of the time in practice, but I believe infrasound has been used in digital song watermarking for DRM/copyright tracking purposes.
I don't have a link to the paper handy (sorry!) but IIRC I found a white paper on ArXiv called "Dolphin Attack" or similar that demonstrated this. It was a fun read.
Frequencies outside the range of a speaker are often filtered out as it can create distortion or even damage. And the job of lossy compression is to remove everything that you can't hear in order to save bytes, and limiting the bandwidth to what you can hear is the most basic step.
Instead, DRM systems typically encode data over a wide range of frequencies (spread spectrum), well within the audible range. It is designed in such a way that you could hear it in theory, but don't notice it because it blends with background noise. It is very robust, resisting compression, recording and even deliberate attacks. In fact, it is one of the techniques used by the military radios to resist jamming.
https://en.wikipedia.org/wiki/Rotary_woofer
If you feed a 20Hz signal to a typical home subwoofer (or even most club systems) and hear something, you aren't hearing 20Hz. You are hearing a bunch of high frequency rubbing noises as the speaker cone moves at 20Hz, trying and utterly failing to couple any amount of energy at that frequency into the air. This is why many songs these days are produced with "bass maximizers" and why modern laptops can sometimes have "decent bass". It's not bass, it's a filter that purposely distorts the bass, which your speakers can't reproduce, into higher frequencies, which it can and which we've learned to associate with heavy bass played through systems that can't reproduce it but distort instead.
Just for reference, I believe these are the subs we use at Euskal Encounter. I can vouch for the fact that they can make the floor shake in a massive event hall venue. Low end response: down to 28Hz. No more.
https://jblpro.com/en/products/vtx-b18
It is indeed better to modulate data in ultrasound since you have a lot more bandwidth - except for the fact that any lossy compression applied to your file is going to completely destroy your data. This is one thing the author got absolutely right.
The best picture/audio tool is probably Metasynth - as used by Aphex Twin. It's been around since the 90s and seems to be in development limbo at the moment, but with a bit of taming it will make all those classic dubstep/brostep sounds out of carefully selected images. Which can be graphic images of text.