22 ms·
Encoding Data in Dubstep Drops
- arilotter 6y agoA DC offset, which amplitude-shift keying like this introduces, isn't so nice to your speakers. It might cause them to heat up as the offset waveform holds the magnet out in one direction. I do love the idea of hiding data in "messy" audio, though :)
- isoprophlex 6y agoAlso, if the data rate is low enough, compression will probably also remove such dc components?
- tekstar 6y agoIf it's audio rate how is it different than a squarewave? Edit: looked closer at the post, the DC offset lasts for over 100ms per cycle.. yeah that's a problem
- virgil_disgr4ce 6y agoThe problem is not the waveform, it's the DC offset requiring more constant current to the voice coil.
- mkr-hn 6y agoAll waves are made of sine waves. DC offset is when the signal is too much one way or another.
- dylan604 6y agoMaybe in analog, but in digital, they are squares and what not type of waves.
- layoutIfNeeded 6y agoSigh... No, digital signals are not “square waves”. https://youtu.be/cIQ9IXSUzuM https://youtu.be/cIQ9IXSUzuM
- _underfl0w_ 6y agoYour comment might be more helpful (i.e. more likely to be read by others who could use the information you're providing) without the snark.
- dylan604 6y agoSigh... you are wanting to show me that we can do A/D and D/A again? Thanks, I was totally unawares that we could do that. I've never heard an audio signal played back once it was digitized. My life is now complete. 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.
- nitrogen 6y agoI recommend watching the video again, all the way through -- no skipping. It's pretty great.
- bhj 6y agoI always laugh when vinyl is described as more “pure”. There’s nothing more pure than math, and that’s digital PCM audio. Sure, it’s stored as discreet samples, but that’s not how it comes out of speakers. The digital->analog converter will give you 1:1 perfect representation of the original waveform as long as you sample at 2x the highest frequency desired and there’s a low-pass filter in place.
- dylan604 6y agoHave you ever played with an Arduino or similar device? Comparing inputs signals on a digital pin vs an analog pin? Hopefully, you'll agree it's the same concept. If you haven't, I'd encourage you to try one out. They are loads of fun. I am a huge fan of analog, yet digital is just so damn convenient. If you have played with one, you'll understand why your comment makes me smile and chuckle.
- magicalhippo 6y agoIn a traditional amplifier the DC should be blocked by the DC blocking capacitors, but I guess with modern full-bridge class-D amplifiers which don't require those it'll have to be done on the software/digital side?
- analog31 6y agoA switch mode amp is still likely to have the blocking caps.
- magicalhippo 6y agoI'm no expert at all, I just saw that the DAC[1] I picked up for a project specifically states no blocking caps are needed. 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##features https://www.ti.com/product/PCM5102A#product-details##feature... [2]: https://www.maximintegrated.com/en/design/technical-documents/app-notes/3/3977.html https://www.maximintegrated.com/en/design/technical-document... [3]: https://en.wikipedia.org/wiki/Bridged_and_paralleled_amplifiers#Bridged_amplifier https://en.wikipedia.org/wiki/Bridged_and_paralleled_amplifi...
- analog31 6y agoAh, that's a good observation. Looking at the datasheet for that TI chip, it is powered by + 3.3 V, but contains an internal charge pump that generates a - 3.3 V supply. So the output can swing across ground. That's what eliminates the need for blocking caps. And it specifies a DC offset error of +/- 1 millivolt. So they've designed around the need for blocking caps with internal circuitry and a guaranteed maximum output offset. Now what happens if there is an input offset, such as a constant stream of input words other than zero? That's where the system designer has to take care of things. And there are offsets even when blocking caps are used. The caps only prevent compounding those offsets from one stage to the next. And a certain amount of offset won't kill your speakers. It just has to be kept within reasonable bounds. I've noticed when using the audio input of a PC for measurement, that there is a constant offset, which is just an artifact of the ADC. The audio recording software has a function for removing that offset. In fact I would consider an audio recording with a large residual offset to be a poor engineering practice. Often, switchmode amplifiers with BTL output have a large normal mode offset, so they can be powered by a single supply. And single-supply audio circuits tend to be festooned with blocking caps. ;-)
- arcticbull 6y agoAren't all speakers AC coupled? Should be filtered out by somthing as simple as a blocking capacitor no?
- arilotter 6y agoYes, it's unlikely to cause problems in any real-world setup, but it's theoretically possible :P I've edited my original comment to clarify that it won't always be the case.
- lostlogin 6y agoSignal that can damage hardware is something that used to be discussed with CRT monitors back in those ancient times, and rumours existed of a virus that played on this. Having damaging audio signal is a new one for me.
- Unklejoe 6y agoNot necessarily. The amplifiers sometimes are though. 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.
- arcticbull 6y agoVery cool thank you!
- userbinator 6y agoThat reminds me of this curious item from a few years ago: https://news.ycombinator.com/item?id=7205759 https://news.ycombinator.com/item?id=7205759
- corytheboyd 6y agoBig shout out to the ideas like this that are just someone having fun and being excited enough about the outcome to share with the world :)
- petercooper 6y agoBen's blog is full of this stuff, it's fantastic, definitely my favorite 'doing fun stuff with tech' blogger of recent years. https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-storage-dnsfs https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-st... is one of my favorites.
- have_faith 6y agoa "Big shout out" is very appropriate for a post about dubstep
- tekstar 6y agoReminds me of Aphex Twin (and some other artists) embedding images in the spectrograph render of their songs: https://www.magneticmag.com/2012/08/the-aphex-face-visualizing-the-sound-spectrum/ https://www.magneticmag.com/2012/08/the-aphex-face-visualizi...
- 1vuio0pswjnm7 6y ago"... and CTF challenge authors love to encode text into audio waveforms, which you can see using the spectogram view (although a specialized tool called Sonic Visualiser is better for this task in particular)." https://raw.githubusercontent.com/trailofbits/ctf/master/docs/forensics/index.html https://raw.githubusercontent.com/trailofbits/ctf/master/doc...
- tekstar 6y agoStenography is common, but usually it's just modifying the last bits of an image or hiding the extra payload after the image data. This is "drawing" within the audio spectrum, making the image out of audio that will be audible.
- BugsJustFindMe 6y agoSteganography. Stenography is something else. :)
- tekstar 6y agoThis gets me every. Time. Lol
- pishpash 6y agoWas this hidden in the audio or just some garbage noise?
- pierrec 6y agoThe "Aphex face" manifests as an clearly audible weird abstract sound at the end of the track. It sits nicely in the mix, but it's also distinct from the actual music - I would say it comes across like a signature rather than a musical element. The other examples in GP's linked article made more effort to produce things that are both musical and paintings in the spectrum, especially the Plaid track.
- sneak 6y agoI was hoping that this would be encoding the data in the audible, data-sounding part of the sound. The technique described could be used on any bass-heavy music, and is in no way related to dubstep or its data-sounding-ness.
- dimnsionofsound 6y agoI was thinking it’d be something more like this: http://www.windytan.com/2015/10/pea-whistle-steganography.html http://www.windytan.com/2015/10/pea-whistle-steganography.ht...
- brianzelip 6y agoJust going to drop this here then, https://www.youtube.com/watch?v=eTNx_SsApu4 https://www.youtube.com/watch?v=eTNx_SsApu4
- iamacyborg 6y agoWhatever that music is, it sure ain't dubstep. I wonder how well it'd work with something like this https://www.youtube.com/watch?v=VEAf_ZztCP0 https://www.youtube.com/watch?v=VEAf_ZztCP0
- djxfade 6y agoYeah, this is the American "Dubstep" commonly referred to as "Brostep". Damn I miss the real Dubstep sound!
- iamacyborg 6y agoStill some bangers being released on Sentry records, Deep Medi, Bandulu and a bunch of other labels.
- oarabbus_ 6y agoThis fell out of style for the most part in America 5+ years ago, FYI.
- _underfl0w_ 6y agoCan confirm this is no longer the new thing, but FWIW, jazz music similarly fell out of style ages ago, but that doesn't make new stuff in the genre uninteresting to those who enjoy it irrespective of hype value. 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.
- 1MachineElf 6y agoSkrillex is actually regarded as a leader in Brostep, a subgenre and/or style of Dubstep. At least in the USA, Brostep has practically supplanted Dubstep and co-opted the name. This has been occuring for about the past 10 years. A big factor is the "drop" part of Brostep sounding very attractive to non-EDM people who head-bang, and to whom traditional Dubstep would be percieved as "boring" or not stimulating enough (without intoxication). This has led to a re-enforcing cycle where domestic EDM festivals reach greater audiences, and so they keep promoting Brostep as Dubstep. 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.
- adamddev1 6y agoThis is really cool. Can the author or anybody else tell me how he made those gif sketches with the moving waveforms and equations?
- marcan_42 6y agoThe way the author went about doing and explaining this is somewhat confusing. What he arrived through that strange band split/merge process is actually ~identical* to: - 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 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 :)
- IIAOPSW 6y ago
- TheActualWalko 6y agoHey cool! Here's essentially the same encoder in a few lines of JS, you can run this on https://wavtool.com https://wavtool.com by pressing cmd+; (() => { 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; }); })()
- tomcam 6y agoYou legend. Thanks.
- tomcam 6y agoHog’s heaven for me. I like dubstep, and this is good dubstep. I like tutorials, and this is a good tutorial. +1
- RedditKon 6y ago0-100hz Skrillex is clearly the best Skrillex