MichD

@MichDdev
96 Followers
113 Following
449 Posts
Android Dev in #Kotlin by day, #Electronics / #synthesizers tinkerer and more coding at night. | Music as Cimylium @ soundcloud.com/cimylium 🏳️‍🌈
Pronounsthey/them
Personal websitehttps://michd.me
Githubhttps://github.com/michd

39C3 — Recreating Sandstorm [Roland JP-8000 Patch].

“Sandstorm” is powered by the Roland Supersaw, and synth nerds have argued for a decade about how it’s made. The JP-8000 is a digital synthesizer, though, so it’s just code, run through custom DSP chips. If you could reverse engineer these chips, make a virtual machine, and send them the right program, you could get the sound 100% right. Think MAME but for synthesizers. That brings us to [giulioz]’s talk at the 39th Chaos Communication Congress, where he dives deep into the custom DSP chip at the heart of the JP-8000.

https://media.ccc.de/v/39c3-from-silicon-to-darude-sand-storm-breaking-famous-synthesizer-dsps

#roland #jp8000 #synthesizer #custom #dsp #chip #reverse #engineering #recreating #sandstorm #patch #music #maker #tech #ccc #media #39c3 #news

From my happy folder.

#Caturday

Couple days of hyperfocus refactoring later I would just like to declare:

`sealed interface` is my absolutely favorite in #kotlin

Carefully designed types are extremely powerful.

I do love how Compose means the only limitations to how you can creatively reuse and adapt components are the limitations of #Kotlin itself, and I've yet to run into anything I want to accomplish that I cannot. Kotlin's got some amazing options for flexible type design. #androiddev

Working on a relatively old Android project, it's always aggravating when I need to make a change to a bit of UI that's still in in XML views, but the change isn't large enough to warrant rewriting the entire bit in Compose.

Glad to say I got to do a fairly substantial rewrite-in-compose in a way that enables lots of code re-use recently though.

#androiddev

All I want is the role colors in names (and for those colors to be picked to be legible on whatever background I've got). I don't want avatars or any other crud surrounding someone's name. When I click on someone's name I want to see their pronouns and what they wrote in their bio field, and sure, their status. I don't want to have to prepare for whatever flashy animated nonsense or painful to the eyes colours to suddenly burst on the screen.

I love Discord to bits... but holy shit can they please stop adding new visual noise every other month? Emoji in names, server tags, gradients, now weird fancy word art fonts? That's not to speak of all the crap that you can apply to profile cards. I really would love an option (or series of options) in the appearance or accessibility settings where I can tailor the max amount of fuckery.

Adding #actuallyautistic because that's probably why it bothers me so much

Started building the lil' web tool to help reverse engineer this. Screenshot description: A webpage with 2 sections: "Pick file" and "Graphs". Graphs has a config subsection where you can set a time window in milliseconds, currently set to 100. There there are two rows of 8 square boxes each, each with a number at the top. The first two display a waveform: two cycles of a sine wave, and two cycles of a saw-tooth. The rest are blank, only showing a reticle.

The graphs are fake data for now.

Once I've got those formats figured out, that should be the core part of it done. I'll want to then figure out as much as I can of the configuration traffic, and then actually learn how to turn it into an ALSA driver (or something more userspace that's easier to develop, first).

I intend to write a little web tool that I can stick this blob of data into, which will draw 16 graphs, and then I can poke around in javascript to try and arrange said data into the independent PCM streams, drawn to said graphs.

Then I'll put a known signal with a simple waveform into one of the inputs (like a sine wave), capture the packets, and process them, until my visualizers show the waveform I expect, where I expect it.

And then I can do the same thing for data flowing the other way.