Created by Olli Niemitalo on 2009-08-28, last modified 2015-05-03

Olli's portrait, 2013


My name is Olli Niemitalo. I live in Oulu, Finland.

You can reach me at o@iki.fi.

I write here of technical and creative things that I am doing.

UltraNav TrackPoint sensitivity hack

I have Lenovo ThinkPad X220 on which I am using the Synaptics UltraNav TrackPoint stick as mouse. Upgrade to Windows 10 made mouse slow enough to cause strain because of the extra force required, even when the Windows mouse speed setting was maxed out. In Windows 10 64-bit the latest ...
Read More

Teardrop simulation

For more info see this Mathematics StackExchange post with my reply ...
Read More

Enumeration of functions

I am interested in an enumeration of functions that starts with simple functions and progresses to more computationally expensive functions. Such an enumeration would enable to systematically try all useful functions for some task. For efficiency, it would be nice if the enumeration did not contain duplicate copies of the ...
Read More

Dial boxes

I obtained a few Silicon Graphics (SGI) dial boxes. They have RS-232 serial port interfaces. I figured out the pinouts based on the circuit boards and plan to use these as controllers for some audio generators. Some of the PCB is blank and could be removed to clear room for buttons ...
Read More

Aigo GE-5 Driver

I bought an Aigo GE-5 microscope years ago. If someone needs, here is the driver for it. GE5-mikroskooppi.zip Thanks to Pauli for salvaging this from the CD my CD drive could no longer read ...
Read More

Is this site safe?

As far as I know, yehar.com is safe to visit. But I've had some problems with anti-malware or Internet security companies categorizing yehar.com as malicious. So far these have been false alerts. McAfee Currently I have no problems with McAfee's SiteAdvisor. I recall I had to ask for a ...
Read More

Microwave oven spot welder

Microwave oven transformer spot welder. Later I have replaced the welding pulse activation switch with a foot switch. I made a spot welder out of a microwave oven transformer and a starter cable. Those are quite popular actually. They use a solid state relay to switch the transformer on ...
Read More

Ellipse–circle and ellipse–ellipse collision detection

Closed-form solution To detect ellipse–circle collision (intersection or one being inside another), the point on the ellipse can be found from which a line perpendicular to the ellipse tangent at that point goes through the circle center. The point on the side closer to the circle center should be taken, not ...
Read More

On DyersLIST

P.S. DyersLIST no longer exists. DyersLIST is "an internet mailing list intended for the discussion of technical questions, problems and information related to immersion dyeing and to the surface application of synthetic dyes, textile pigments and related chemicals, to fabric and fiber" (list.emich.edu) owned by East Michigan University. I was ...
Read More


These are building instructions for a modern variant of a 5-string kantele, a traditional Finnish folk-musical instrument. Raw sound samples of the instrument (download for higher fidelity): http://soundcloud.com/yehar/diy-kantele-sample-raw The finished kantele before painting I built a kantele for my Russian friend Dmitry, who during his visit lusted after the rather crude ...
Read More


Bytebeat is a music synthesis technique that was discovered by Ville-Matias Heikkilä (viznut/pwp). Kragen Javier Sitaker has a good writeup on the subject. The way it works is that you generate a stream ...
Read More

DNA- ja RNA-laskenta

Laskentaa DNA- ja RNA-molekyyleillä (docx, pdf), Olli Niemitalo, 7.12.2011 Deoksiribonukleiinihappo- (DNA) ja ribonukleiinihappomolekyyleille (RNA) on hahmoteltu käyttötapoja laskuvälineinä. Tämän kirjallisuustutkielman tarkoitus on selvittää, miten DNA- ja RNA-laskennan menetelmät toimivat ja mihin niitä voi käyttää. Tutkimusala lähti liikkeelle toivosta siitä, että molekyylien välisiin vuorovaikutuksiin perustuvat tietokoneet voisivat ratkaista suuria laskennallisia ...
Read More


2011-10-26 I'm going to call this musical instrument (or rather a tone generator) Rotolaserator: Here's how it sounds like, with reverb, gating and echo added: And here it is giving the bassline to music (in the first half there's also the softer bassline from Korg Monotron, look for the "power-line-like" sound for ...
Read More

LCD inverter repair

2011-10-25 I found from a dumpster a Hyundai L17T LCD TV, pretty much a monitor with an analog TV tuner. I tried to turn it on, but the power indicator light was simply flickering slowly, indicating a short circuit somewhere. Nothing on the screen. The monitor was trying to power up, ...
Read More

About IMDb Top 250

2011-04-07 The Internet Movie Database (IMDb) offers their Top 250 list of movies. The list consists of movies that have been received the highest rating from IMDb users. The ratings by which the list is sorted are weighted by the number of votes in a Bayesian manner ...
Read More

Black Deck

  Black Deck, an electro-optical musical instrument Insides of Black Deck Black Deck EP: http://soundcloud.com/black-deck-project/sets/black-deck-ep/ Tech demo: During the Christmas holidays of 2005, I started to build Black Deck, an opto-electric musical instrument that superficially resembles a record player. The name Black Deck comes from a philosophy of recycling and a ...
Read More


I partook in the music project Oneironaut during 2010-2011 (and more rarely in 2012), playing Black Deck and more rarely other instruments, and doing video editing. "Oneironaut mixes various sound sources and effects to create music both for dancing and for private listening.  Oneironaut's music is a ...
Read More

Cable hanger

This is how one can construct a rather useful cable hanger from some random stuff. The spring is from an old Hewlett-Packard scanner, where its function was to guide and protect cables running inside it. The function of the cotton string is to pull the spring against the ...
Read More

Sound Blaster amplifiers

EDIT: These days, please harvest amplifier chips from active computer speakers instead. They are plentiful and contain only what you need in a nice package. For a project of mine, I needed a stereo amplifier. I had some old Sound Blaster ISA cards (and later got more, which are also now ...
Read More

Circularly symmetric convolution and lens blur

This article describes approaches for efficient isotropic two-dimensional convolution with disc-like and arbitrary circularly symmetric convolution kernels, and also discusses lens blur effects. Keywords: depth of field, circle of confusion, bokeh, circular blur, lens blur, hexagonal blur, octagonal blur, real-time, DOF Gaussian function approach The circularly symmetric 2-d Gaussian kernel is linearly separable; ...
Read More


2010-09-06 I have a problem with the halftone patterns that have recently become fashionable: They are not made correctly. For example, have a look at this detail from an image made using Rasterbator (v1.2 or earlier): Or any of these random examples from various sources: What you see in each case is ...
Read More

Natural dyes

Bilberry I have started eperimenting with natural dyes to be used in a CD cover art project. The first one of vegetable dyes is bilberry juice (Vaccinium myrtillus, maybe you know it as mustikka or blueberry). It seems quite versatile! I knew from beforehand that the color of the juice ...
Read More

Disabling the ThinkPad X200 master control for wireless radios switch

2010-08-18 I became very annoyed by the reoccurring disturbances to Internet connectivity by the overly sensitive master control for wireless radios switch of my ThinkPad X200 laptop. So I superglued it to ON position. No help. The glitches were still there, shutting down WLAN randomly and whenever I pressed my palm ...
Read More

Sine wave look-up table generation

2010-03-05 Here is a method for generating a sine look-up table in case you have little (a few kilobytes of) program memory. The idea goes like this: Let's say you have a sine wave lookup table of length 1024 with a 24-bit amplitude range. If you take the difference between successive ...
Read More

Photos: Kilpisjärvi, 2006

Teksti: Antti Mehtomaa. Muutama kuva on muiden kuin itseni ottama. 1.4.2006 ja kello löi 8 aamulla. Neljä (takaisin) luontoon haluavaa miestä saapui oulun bussiasemalle. Tästä siis lähdettiin ja mukana oli Antti (möylä), Mursu, Aarni (Junnu) ja Olli. Bussi oli ihan täynnä porukkaa ja tavaratilakin oikein odotti meidän rinkkoja ja ahkioita ...
Read More


2009-11-30 After the first snow had fallen, me and my colleague Fumi were given permission to pick the apples of the botanical garden at our university. There were about 30 kg of them. That yielded 14 half a litre bottles of cider (batch 2009/1). I used a centrifuge-type juicer from Lidl, ...
Read More

Dreadlock tool

2009/11/23 When I had my dreadlocks made, I had little idea how to take care of them. I tried different things. By now, I have a routine. I wash the dreadlocks with water every morning and after sports. Once a week, I wash them with non-silicone shampoo, twice at a time, ...
Read More


Miscellaneous works and designs 2008-08-08 This was sold along with tickets for Histoni's NED parties. The stuff in the tube is a combination of glue and a phosphorescent powder intended for fish lures. 2008-01 For the shirt I used a coat as a model for the pieces. 2007-09-19 2003-12-25 ...
Read More

Marginal notes

These are miscellaneous notes and recipes. Mapping a pair of integers to an integer 2011-05-26 How to map from a pair of integers to an integer? Negative or positive, independent of the size of the two integers, you can convert them into balanced ternary to get rid of the signs and then ...
Read More

Older, mostly tracked music

Here is a collection of "early" music by me in mp3, ogg, and tracker formats. Some of my songs have probably got lost forever due to hard disk failures, but most of the nicer ones have continued to live thanks to the safe haven that is the Internet. I made ...
Read More

Tuna pie

2009/4/28 This is how to make tuna pie. Heat oven to 225 °C (200 °C is better if you can wait longer). Take a plate. Take a can of tuna. Do not discard the oil! Spread the oily tuna on the plate. Spread mashed potatoes from yesterday, on top. Put ...
Read More


2009/12/05 2009/01/23 2008/09/04 2008/03/13 ...
Read More

Polynomial interpolation

Polynomial Interpolators for High-Quality Resampling of Oversampled Audio Revised version (October 2001): deip.pdf (501 KiB) Abstract: "This paper discusses piece-wise polynomial interpolators used in audio resampling and presents new low-order designs that are optimized for high-quality resampling of oversampled audio. Source code and useful tables for using the interpolators are included." Scarcely documented ...
Read More


Sometimes I get an idea that I think may be worth something, maybe not much, but something. But then I forget it. Better write it down, here. 2017-09-07 Automated safe pledging waits for critical mass A service that lets people pledge something on the condition that enough people do the same. One application ...
Read More

Imaging spectrophotometer

2009/07/03 OK, I have an idea: A spectrophotometer that can take 2D-images, like a normal camera, but from each pixel you get a complete visible spectrum instead of just red, green, and blue intensities. Pictured is one possible way to construct an imaging spectrophotometer. An image of a subject is focused on ...
Read More


2009/07/14 Tällä ohjeella tulee 1,5 L raikasta savulohi-vihannesmössöä, jota voi laittaa vaikka kolmioleipiin. 1 L maustamatonta jugurttia (tein vähälaktoosisesta UHT-kevytmaidosta, juurena bulgarianjugurtti) 800 g savustettua lohta (3/4 kokonaisesta 2 kg lohesta) 1 kurkku 7 retiisiä 2 punasipulia 1 ruukullinen tuoretta persiljaa 2 rkl viinietikkaa 2 tlk sitruunamehua Valuta jugurtista nestettä pois yön yli kankaan läpi, nakkaa neste pois. Sekoita ...
Read More

Adlib / OPL2 / YM3812

This page is devoted to the classic PC soundcard, Adlib, and compatibles. Reverse-engineering report 2008-04-20 Me and Matthew Gambrell reverse-engineered the YM3812/YMF262 ROM tables. These are the pictures we took: The bits of dirt are from my fingers, sorry about ...
Read More

Screen printing 2

2008/12/01 My second screen printing project. I found some burgundy bedsheets on sale in Anttila, and made a blanket cover from them for my mmmmmm-so-warm camel hair blanket from Lidl. (Thanks to Tiina for helping out with sewing!) I started to think that a subtle silvery plant pattern along the sides ...
Read More

Screen printing 1

2008/11/21 My first screen printing project, logo patches for our football team shirts. Evolution of the logo: Real silk! ...and photoresist. Exposed by ultraviolet light through two duplicate layers of photocopier transparencies. The frames are hardwood photo frames that were on sale, 2 EUR each. Not perfect registration ...
Read More

One-sided Chebyshev-type inequalities for bounded probability distributions

2007-12-14 Chebyshev's inequality states that, for any probability distribution, at most $1/k^2$ of the area of the probability density function lies more than $k$ standard deviations away from the mean. We can do better, if we know that the distribution is bounded and we know the bounds. Let $X$ be a random ...
Read More

Euro coins as standard weights

What if you suddenly need a scale, accurate to one gram? Here is the solution, in case you live in the euro zone. (Something like this has actually been done before!) The physical mass of each euro coin is actually standardized. So they can be used to measure mass ...
Read More

Dye Mixer v1.1 (java)

2006/08/10 [APPLET HERE] Problems running Java applets? If you have Windows 7, go to Control Panel, search for Java, go to Java Control Panel tab Java, change Java Runtime Environments settings by adding -Djava.net.preferIPv4Stack=true to the runtime parameters. Or try this alternative page of Dye Mixer. Introduction Hello, fellow dyer! If the Dye Mixer won't ...
Read More

Impulse response measurements

2006/08/10 To measure the impulse response of a noisy system, you don't want to just send an impulse and see what comes out. Instead, you will play a signal that has succifiently high energy (long instead of loud), record the outcome and deconvolve from it your original signal, giving you the ...
Read More

Evolutionary real variable optimization in C++

2006/08/10 If you have a problem where you need to find the optimal values for a set of real variables, try this library written by Magnus Jonsson and me. opti.cpp opti.hpp- Optimization library MersenneTwister.h - Mersenne Twister random number generator required by the library (by Rick Wagner) optitest.cpp Read More

DIY Canon EOS 300D AC adapter

2005-08-26 Doing the following will void the warranty of your camera and also might destroy your camera, although I don't think that should happen. If this is OK with you, please read on! Introduction A network adapter will be handy for a camera if you intend to take a lot of pictures ...
Read More

Hilbert transform

This is probably the most efficient structure for implementing a Hilbert transform. Actually, it's not a Hilbert transform, but two all-pass IIR filters whose phase difference is approximately 90 degrees over a range of frequencies symmetric around Nyquist/2. Laurent de Soras uses these kind of filters in his HIIR ...
Read More

Digital sound processing tutorial for the braindead!

In 1998, I had some extra time while others were reading for final exams of the senior high school, and got into digital signal processing. I wrote as I learned, and here is the result. It is not entirely accurate in places but may serve as a nice tutorial into ...
Read More

The #musicdsp adventures

2001/10/27 I have occasionally been a regular on the EFNet #musicdsp IRC channel. This ASCII art comic is my perverted view of some of the #musicdsp characters. ___ __ _ _ _ _ __ | | | | _|__|_ |\ /| | | / \ | / ` | \ / ...
Read More

C++ EPS plotting library

2001/08/09 epsplot.zip - simple C++ EPS plotting library With this simple library you can plot Encapsulated PostScript files straight from your C++ program. Nearly all the pictures in Polynomial Interpolators for High-Quality Resampling of Oversampled Audio were generated with this ...
Read More


  1. Great blog :D

    Comment by joxer — 2010-01-26 @ 22:40

  2. Hi Olli,
    I have just started on the maddening journey into audio/dsp programming and came across this link from Tobybear.
    He notes it as a must read for this kinda journeys start, but alas I don’t find the destination…
    Any help would be most welcome

    Comment by colin — 2010-09-27 @ 07:02

  3. Colin,

    Thanks for pointing this out! The article had disappeared from the right hand menu due to a bug. Now it’s back in there. A direct link: http://yehar.com/blog/?p=121

    Comment by Olli Niemitalo — 2010-09-27 @ 09:24

  4. Hi Olli
    Last night I asked for info on where to find “www.student.oulu.fi/~oniemita
    /DSP/DSPSTUFF.TXT”…I was directed to you from Tobybear.
    Well I also downloaded his flex filter explorer, and within was said document…
    So I have it and have just started to read…A very good place to start so it appears
    AND a very big thanx for putting it together,

    Comment by colin — 2010-09-27 @ 15:54

  5. I was so keen to get into it , I made this comment b4 reading the comments.
    So big thanx 4 getting back so quick…am well impressed.
    Cheers, now to twist my poor ragged brain cell some more..ha!

    Comment by Olli — 2010-09-27 @ 15:58

  6. Hey Olli! Just wanted to thank you for your easily readable work. Better than uni courses. ;) I’m enjoying reading your interpolation paper over and over at the moment.
    I’ve just started started coding DSP – and it’s so much fun i forget to make music. :)

    Comment by Dennis Tapper — 2010-12-09 @ 15:43

  7. Thanks Dennis! By the way, I have enjoyed listening to your music in a few occasions over the years as well. :-)

    Comment by Olli Niemitalo — 2010-12-10 @ 14:59

  8. The resampling paper on this site is incredibly useful. Thanks for making it available!

    Comment by Evan Balster — 2011-08-19 @ 08:17

  9. I found your re-sampling paper very interesting, and I wanted to know if your algorithms have ever been adopted in any products that I might have heard of?…

    Comment by Richard Murison — 2011-11-17 @ 21:54

  10. Richard: An early version of Fruity Loops used a resonant lowpass filter from me. Of others I don’t know.

    Comment by Olli Niemitalo — 2011-11-18 @ 00:25

  11. How would the SRC algorithm in your paper rate against popular algorithms like those found in iZotope and SoX?

    Comment by Tim — 2012-01-13 @ 02:54

  12. Tim, I’m guessing your question is about the maximum achievable quality. I don’t give a single algorithm or complete sample rate converter implementations, but properly implemented in a sample rate converter some of the algorithms in the paper would give better than “good enough” results. Also iZotope and SoX are better than “good enough”. To go further in the comparison of maximum quality achievable would not make practical sense.

    Comment by Olli Niemitalo — 2012-01-13 @ 03:57

  13. Have you ever looked at the challenge of DSD-to-PCM conversion? Do you have any special insights into that problem?

    Comment by Richard — 2012-02-20 @ 21:55

  14. Richard: No, I haven’t done anything related to DSD

    Comment by Olli Niemitalo — 2012-02-20 @ 23:02

  15. hey Olli. just discovered your site (you were the yehar guy?) didn’t you used to have a SHARCPAGE or something?

    good to see you at the dsp.stackexchange .


    r b-j

    Comment by robert bristow-johnson — 2015-04-14 @ 20:21

  16. Yep Robert, that’s me! I don’t think I had a SHARC page, but I did have a collection of SHARC documents at the past ee.oulu.fi/~ollinie.

    Comment by Olli Niemitalo — 2015-05-02 @ 12:54

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress