Repaired Presonus HP4 v1 Headphone/Monitor Amp

My very useful Presonus HP4 v1 headphone amp fried last Fall. I found another on eBay for not too much, but I hung onto the old one. Turns out they’re full of this quad amp IC, MC33079P, and one on the input stage failed. The chip is obsolete, but I replaced it with an MC33079PG that seems to be the same. Or at least compatible.

The hardest part was un-soldering a 14-pin IC without destroying the PC board. I added a socket in case something else had (and would again) aggravated the chip, but after several long days’ use it seems to be doing fine.

What spurred me on to do this was that channel 1 of the replacement HP4 failed. A check with a VOM from the power pins to the signal pins shows the same lack of potential (15V DC) across one of the amp’s pins. The power supplies seem good, so I think it is the chip that’s failing, and not the power supply or a current limiting resistor.

Next project is to replace the channel 1 chip on the replacement HP4 and try to make two complete units.


Update: after receiving a question about suppliers, here’s where I found the IC and the socket (thanks, Jordan):
MC33079PG IC
14-pin Socket

Update II:
– Apparently these amps are version 1 which use a 16V AC power supply. The latest ones seem to use a 12V DC power supply. I’m not sure what other components have changed. Since I can’t find the original ICs, it’s a good bet, they’ve changed in the newer ones as well.
– 3 months later the repaired HP4 is working great.
– I repaired my other one with a bad channel 1 and a scratchy channel 4. Made the same IC replacement. So far, so good.

Shrinkify Arduino Project – LED Pumpkin Candle

I just successfully completed my first “shrinkified” project – a flickering LED pumpkin candle.

I built the project on an Arduino Uno and then using a tutorial from the High-Low Tech group at MIT, I flashed a ATtiny85 with the code and freed up my Arduino.

The LED candle flickers randomly and occasionally glares angry red for a few seconds before returning to flickering. The LEDs are tri-color and flickering is accomplished changing the green color value (against steady red) and the overall brightness of the LED. 3 LEDs seem to be enough and can be safely powered directly from the ATtiny85 pins. They pull a max of 6mA. The tiny85 can handle 40mA/pin with a max of 200mA/chip.


  • 3 Tri-color LEDs
  • ATtiny85
  • 2 220 ohm resistors I had pulled from something in the last 20 years
  • 5-volt power supply
  • Candle glass and ceramic drill bit for making a wiring hole in the bottom
  • shrink tubing and wire
  • Uh, a pumpkin


  • Connect the resistors in series to the red and green LED pins
  • Connect the red LED pins to ground, pin 4 on the tiny85
  • Connect the common anode LED pin to pin 5 (PWM/digital pin 0) on the tiny85
  • Connect the green LED pin to pin 6 (PWM/digital pin 1) on the tiny85
  • Connect ground, pin 4 and Vcc, pin 8 on the tiny85 to a 5V power supply.
  • Frost candle glass (I bought from Target) with white candle wax. I lined the back with tin foil for reflection. I drilled a hole in the bottom of the candle glass with a ceramic drill bit to feed the wires through so they wouldn’t be visible.

Pictures. The angry red glare doesn’t show up in the pictures. When it’s activated, the flicking stops and it transforms to solid red. After a few seconds it transforms back to where it was and resumes flickering.

Here’s the code:

// pin assignments - Red is full on (Gnd), Blue is full off (+5V or disconnected)
int intensityPin = 0;  // common anode pin (+5v for full)  
int triGreenPin = 1;  // green LED pin

// green LED is modulated for flickering, common anode is modulated for intensity
int flickerHigh = 100; // outdide of pumpkin - 44, inside - 
int flickerLow = 40; // outdide of pumpkin - 28, inside - 
int flickerRed = 0;
int flickerVal = flickerHigh;  //starting val for flicker level
int triGreenVal = flickerVal;

int flickerDelayMin = 40;  // min & max time betweeen flickers
int flickerDelayMax = 100;

int intensityLow = 216;  // intensity min & max
int intensityHigh = 255;
int intensityVal = intensityHigh;  // intensity starts off

int cycleCount = 0;
int glareBaseCount = 500;
int glareTimer = 0;

void setup() {
  glareTimer = getGlareTimer();

void loop() {
  int i = 0;
  int j = 0;
  int glareTask = 0;
  // is it time for a glare?
  if (cycleCount>(glareBaseCount+glareTimer)) {
    glareTask = 1;
    cycleCount = 0;
    glareTimer = getGlareTimer();

  int intensityVal = random(intensityLow,intensityHigh+1);
  if (glareTask == 0) {
    // flicker mode - "normal"
    flickerVal = flickerVal + randomInc();
    if (flickerVal < flickerLow) { flickerVal = flickerLow; }
    if (flickerVal > flickerHigh) { flickerVal = flickerHigh; }
    delay(random(flickerDelayMin,flickerDelayMax)); // flicker delay
  } else {
    //  fade down to red
    j = intensityVal;
    for (i=flickerVal; i>= flickerRed; i--) {
      j = j + (flickerVal-flickerRed)/(255-intensityVal);
    //  fade back up from red
    for (i=flickerRed; i<= flickerVal; i++) {


// set flicker and intensity LED values
void setLED(int flick, int intensity) {

// random flicker change (up or down)
int randomInc() {
  int val = random(17) - 8; // -8 to +8 range
//  Serial.println(val);
  return val;

void rampUpLED(int flick, int intensity) {
   int i = 0;
   for (i=0; i < intensity; i++) {

int getGlareTimer() {
  int t=random(1,glareBaseCount+1);
  return t;

Getting Started

Setting up a quick web site after no having touched my old one for the last, um, fives years (since my daughter was born). Have loads more to add, but this’ll get me started.