When I did the SVG images for illustrating the website, I created a tiny drawing program to facilitate drawing Bézier curves. Why not just use an existing drawing program? Because I’m not too fond of the drawing programs I’ve tried: they’re too complicated and too influenced by the WYSIWYG (“what you see is what you… Continue reading Drawing curves with Bezd
Author: admin
What is hidden in Aphex Twin’s WAV files?
WAV files (or WAVE as they would be called if the Quick and Dirty Operating System hadn’t had a three-character limit on file extensions), probably the most common kind of files for uncompressed PCM audio, follow a loosely defined format with ancient roots, where sections have four-character labels. Each file consists of a single “RIFF”… Continue reading What is hidden in Aphex Twin’s WAV files?
The size of silence (and other quirks in streaming FLAC to browsers)
Streaming music from the Klipspringer hub requires three components to interact asynchronously – the Java process that encodes and transmits the data, the web browser with the client-side code that receives and plays it, and the HTTP server that ties them together – so no wonder it’s been stuck in deadlock many times during development.… Continue reading The size of silence (and other quirks in streaming FLAC to browsers)
Never implement doHickey
I sometimes feel like an impostor when I talk about code design because I have absolutely no formal education in it, and I’ve been imprinted with the attitude that it’s the algorithms, their correctness and efficiency, that you’re supposed to worry about. Working on larger projects, in companies and on my own, I’ve come to… Continue reading Never implement doHickey
Capturing audio for streaming and recording
Since version 3.2, the Klipspringer hub includes the possibility to capture audio from an input device. My idea is to use it for getting music from my vinyl records into digital files, or just to listen to the records digitally with headphones when I’m sitting on the balcony or somewhere else away from my stereo. To… Continue reading Capturing audio for streaming and recording
Optimization by doing the same thing and expecting different results
The point with a compiler is obviously that it lets us write code in language that’s easier to read than assembly code, and modern optimizing compilers can make it more readable still by saving us from obfuscating hand-optimization. For instance, in the 1980s, it may have been good for the performance of your C code to… Continue reading Optimization by doing the same thing and expecting different results
Computing the integer size of a sample
In PCM audio processing, each sample is an integer of at most 32 bits. This blog post is about finding the number of bytes (octets) that can hold a sample, which is nontrivial when the number of bytes is restricted to match an integer type. Easy case: 1, 2, 3, 4 The smallest number of… Continue reading Computing the integer size of a sample
Screenshots of Klipspringer, now streaming
This post describes my setup of the Klipsringer hub, with screenshots. Since version 3.1 the purpose not only to play music on the speakers in my living room, but also to stream the same music collection to my mobile phone, to let me listen to it with headphones whenever I’m within reach of the wifi in my apartment.
Pattern for an asynchronous resource
While I have been working on streaming capability for the Klipspringer hub (and refactored existing code in the process), a need for asynchronously providing a resource has repeatedly come up and confused me. It’s confusing because it doesn’t immediately fall in line with Javascript’s promise construct. This post describes the problem in a general way,… Continue reading Pattern for an asynchronous resource
The subtle choice of sound output device
Recently, I realized that I hadn’t made use of the full sound quality capability of my stereo for a couple of years, because I had got the sound device setting on my stereo computer wrong. Read on to learn from my mistake. I mainly listen to music from a computer I’ve got for that purpose,… Continue reading The subtle choice of sound output device