The Pass Pub: The High-End Off Topic Thread

Ah, the happy times of peace!
When I was young, everyone built Quad 405s, including me.
I was lucky because the DATASAAB D223 computer I was an operator of had a lot of 2N3773s in its peripherals.
They were in the MDS tape drives and, if I remember correctly, in the CDC 9762 80MB removable disk drives.
I prayed a little to the maintenance engineers and they brought me some real 2N3773 transistors. In fact, I got two National LM301AH op amps in TO-99-8 packages. I immediately ruined one of them because I put it in the wrong place. Youth, foolishness.
It's only gotten worse over the years.
I really should build one.
But I have so much other things to build.
 

Attachments

  • Quad 405 PCB.jpg
    Quad 405 PCB.jpg
    546.4 KB · Views: 8
  • Like
Reactions: Plott
Nice one Plott.

I’ve had my mouth full with work for a while but once in a while I’ve been programming a controller for my diy-stack of gear.

The general idea is to skip all on/off switches and instead use relays, and MCU control everything.

My stack today is TT and RIAA as one source and a Bluesound Nano for digital as the other source.

As for outputs I have headphones with separate amp as one output or speakers/pwramps as the other. The pwramps is fed by an active xover that feeds an unbalanced to balanced converter that has a receiver at the amp/speaker sides that can output either balanced or single ended signals to the amps.

There is also relays on the spkr cables for safety.

In between those is a preamp doing its thing and conducting the in/out.

I wanted to keep it ”user friendly simple” and lean so the goal was to be able control everything with only four buttons, basically:
1. Input Phono on/off
2. Input Digital on/off
3. Output Speakers on/off
4. Output Headphones on/off

Then apply rules (conditions) to those. For example not being able to switch on output before having an input going to avoid hard pops in the spkrs if an input is started with an output live etc.

Every ”on” push either turns on an input or an output depending on which button , or if it is already on it just changes from one to the other. If it turns an input or output ”chain” on it does it in a determined order with delays in between.

Well, to long post already. Here’s the YAML code anyway. I have done rudimentary tests and it works so far.

The HW is an ESP32, coded for EspHome, it integrates good with Home Assistant. It’s also two shift registers on the output in lack of pins on the MCU.





YAML:
esphome:
  name: olimex-esp32-poe-iso-1
  friendly_name: Music Rack Control
  min_version: 2025.2.1
  name_add_mac_suffix: true
p
esp32:
  board: esp32-poe-iso
  framework:
    type: esp-idf

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO17_OUT
  phy_addr: 0
  power_pin:
    number: GPIO12
    ignore_strapping_warning: true

  # Optional manual IP
  manual_ip:
    static_ip: 192.168.1.80
    gateway: 192.168.1.1
    subnet: 255.255.255.0

api:
logger:
ota:
  - platform: esphome
    id: ota_esphome

button:
  - platform: safe_mode
    id: button_safe_mode
    name: Safe Mode Boot

  - platform: factory_reset
    id: factory_reset_btn
    name: Factory reset


binary_sensor:  

#Digital On by short press
  - platform: gpio
    name: "Input Digital"
    id: switch_1
    pin:
      number: GPIO5
      inverted: True
      mode:
        input: True
    on_click:
      - min_length: 20ms
        max_length: 499ms        
        then:
#This only Changes input from Phono to Digital
        - if:
            condition:
              switch.is_on: pin_3
            then:
              - switch.turn_off: pin_3
              - delay: 100ms        
              - switch.turn_on: pin_2
#This turns on all Digital source and input related
            else:
              - switch.turn_on: pin_0
              - delay: 3s
              - switch.turn_on: pin_1
              - delay: 500ms
              - switch.turn_off: pin_3
              - delay: 1s
              - switch.turn_on: pin_2
              - switch.turn_on: pin_14

#Digital Off by long press
      - min_length: 500ms
        max_length: 3s
        then:
#This turns Off all Digital related source and Input
#when All Output is Off and Phono In is Off
          if:
            condition:
              and:
                - switch.is_off: pin_3
                - switch.is_off: pin_6
                - switch.is_off: pin_11
            then:
              - switch.turn_off: pin_14
              - delay: 100ms
              - switch.turn_off: pin_2
              - delay: 100ms
              - switch.turn_off: pin_1
              - delay: 1s      
              - switch.turn_off: pin_0
#This only turns off the Digital Input but leaves Preamp On
#for Phono
            else:
              - switch.turn_off: pin_2
              - delay: 100ms
              - switch.turn_on: pin_3

#Phono On by short press
  - platform: gpio
    name: "Input Phono"
    id: switch_2
    pin:
      number: GPIO13
      inverted: True
      mode:
        input: True
    on_click:
      - min_length: 20ms
        max_length: 499ms        
        then:
#This only Changes input from Digital to Phono when both Digital
#Analog is On
        - if:
            condition:
              and:
                - switch.is_on: pin_2
                - switch.is_on: pin_4
                - switch.is_on: pin_5
            then:
              - switch.turn_off: pin_2
              - delay: 100ms        
              - switch.turn_on: pin_3
#This turns on all phono source and input related
            else:
              - switch.turn_on: pin_0
              - delay: 3s
              - switch.turn_on: pin_5
              - delay: 100ms
              - switch.turn_on: pin_4
              - delay: 500ms
              - switch.turn_on: pin_1
              - delay: 500ms
              - switch.turn_off: pin_2
              - delay: 1s
              - switch.turn_on: pin_3
              - switch.turn_on: pin_14

#Phono Off by long press
      - min_length: 500ms
        max_length: 3s
        then:
#This turns Off all Phono related source and Input
#when All Output is Off and Digital In is Off
          if:
            condition:
              and:
                - switch.is_off: pin_2
                - switch.is_off: pin_8
                - switch.is_off: pin_13
            then:
              - switch.turn_off: pin_14
              - delay: 100ms
              - switch.turn_off: pin_3
              - delay: 100ms
              - switch.turn_off: pin_1
              - delay: 100ms
              - switch.turn_off: pin_4
              - delay: 100ms
              - switch.turn_off: pin_5
              - delay: 100ms      
              - switch.turn_off: pin_0
#This only turns off the phono related gear but leaves Preamp On
#for Digital
            else:
              - switch.turn_off: pin_3
              - delay: 100ms
              - switch.turn_off: pin_4
              - delay: 100ms
              - switch.turn_off: pin_5
              - delay: 100ms
              - switch.turn_on: pin_2



#Speaker Output

  - platform: gpio
    name: "Output Speakers"
    id: switch_3
    pin:
      number: GPIO15
      inverted: True
      mode:
        input: True
    on_click:
      - min_length: 20ms
        max_length: 499ms        
        then:
#This only Changes output from Headphones to Speakers when
#any Input, Headamp & Speakers are already On
        - if:
            condition:
              all:
                - switch.is_on: pin_14
                - switch.is_on: pin_7
                - switch.is_on: pin_11
            then:
              - switch.turn_off: pin_11
              - delay: 100ms        
              - switch.turn_on: pin_6
#This turns on all Speaker related gear and sets Speakers as Output on Pre
            else:
              - switch.turn_on: pin_6
              - delay: 100ms
              - switch.turn_on: pin_7
              - delay: 2s
              - switch.turn_on: pin_8
              - delay: 100ms
              - switch.turn_on: pin_9
              - delay: 500ms
              - switch.turn_on: pin_10

#Speakers Off by long press
      - min_length: 500ms
        max_length: 3s
        then:
#This turns Off Speakers when Input is On
          if:
            condition:
              switch.is_on: pin_14
            then:
              - switch.turn_off: pin_10
              - delay: 100ms
              - switch.turn_off: pin_9
              - delay: 100ms
              - switch.turn_off: pin_8
              - delay: 100ms
              - switch.turn_off: pin_7
              - delay: 100ms
              - switch.turn_off: pin_6

#This turns off X
#            else:
#              - switch.turn_off: pin_3
#              - delay: 100ms
#              - switch.turn_off: pin_4
#              - delay: 100ms
#              - switch.turn_off: pin_5


#Headphones On by short press

  - platform: gpio
    name: "Output Headphones"
    id: switch_4
    pin:
      number: GPIO16
      inverted: True
      mode:
        input: True
    on_click:
      - min_length: 20ms
        max_length: 499ms        
        then:
#This only Changes output from Speakers to Headphones when
#any Input, Headamp & Speakers are already On
        - if:
            condition:
              all:
                - switch.is_on: pin_14
                - switch.is_on: pin_6
                - switch.is_on: pin_12
            then:
              - switch.turn_off: pin_6
              - delay: 100ms        
              - switch.turn_on: pin_11
              - delay: 100ms        
              - switch.turn_on: pin_13

#This turns on all Headphones related gear and sets Headamp as Output on Pre
            else:
              - switch.turn_on: pin_11
              - delay: 100ms
              - switch.turn_on: pin_12
              - delay: 2s
              - switch.turn_on: pin_13

#Headphones Off by long press
      - min_length: 500ms
        max_length: 3s
        then:
#This turns Off Headphones when Input is On
          if:
            condition:
              switch.is_on: pin_14
            then:
              - switch.turn_off: pin_13
              - delay: 100ms
              - switch.turn_off: pin_12
              - delay: 100ms
              - switch.turn_off: pin_11

#This turns off X
#            else:
#              - switch.turn_off: pin_3
#              - delay: 100ms
#              - switch.turn_off: pin_4
#              - delay: 100ms
#              - switch.turn_off: pin_5


sn74hc595:
  - id: 'sn74hc595_hub'
    data_pin: GPIO14
    clock_pin: GPIO33
    latch_pin: GPIO32
#    oe_pin: GPIOXX
    sr_count: 2

switch:
  - platform: gpio
    name: "00 12v PSU"
    id: pin_0
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 0
      number: 0
      inverted: false

  - platform: gpio
    name: "01 Preamp PSU"
    id: pin_1
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 1
      number: 1
      inverted: false

  - platform: gpio
    name: "02 Pre Digital In"
    id: pin_2
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 2
      number: 2
      inverted: false

  - platform: gpio
    name: "03 Pre Phono In"
    id: pin_3
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 3
      number: 3
      inverted: false

  - platform: gpio
    name: "04 RIAA PSU"
    id: pin_4
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 4
      number: 4
      inverted: false

  - platform: gpio
    name: "05 Turntable"
    id: pin_5
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 5
      number: 5
      inverted: false

  - platform: gpio
    name: "06 Pre Xover Out"
    id: pin_6
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 6
      inverted: false

  - platform: gpio
    name: "07 Xover PSU"
    id: pin_7
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 7
      number: 7
      inverted: false

  - platform: gpio
    name: "08 Xover Out"
    id: pin_8
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 8
      number: 8
      inverted: false


  - platform: gpio
    name: "09 Remote Left"
    id: pin_9
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 8
      number: 9
      inverted: false

  - platform: gpio
    name: "10 Remote Right"
    id: pin_10
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 10
      number: 10
      inverted: false

  - platform: gpio
    name: "11 Pre Headamp Out"
    id: pin_11
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 11
      number: 11
      inverted: false

  - platform: gpio
    name: "12 Headamp PSU"
    id: pin_12
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 12
      number: 12
      inverted: false

  - platform: gpio
    name: "13 Headamp Out"
    id: pin_13
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 13
      number: 13
      inverted: false

  - platform: gpio
    name: "14 Output Selectable"
    id: pin_14
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 13
      number: 14
      inverted: false

  - platform: gpio
    name: "15 Extra"
    id: pin_15
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 15
      number: 15
      inverted: false
 
Last edited:
Ah, the happy times of peace!
When I was young, everyone built Quad 405s, including me.
I was lucky because the DATASAAB D223 computer I was an operator of had a lot of 2N3773s in its peripherals.
They were in the MDS tape drives and, if I remember correctly, in the CDC 9762 80MB removable disk drives.
I prayed a little to the maintenance engineers and they brought me some real 2N3773 transistors. In fact, I got two National LM301AH op amps in TO-99-8 packages. I immediately ruined one of them because I put it in the wrong place. Youth, foolishness.
It's only gotten worse over the years.
I really should build one.
But I have so much other things to build.
Oh well, the famous boards!
Take your time and build your Quad, Gyuri. Even though the days are over when the Quad 405 was the best amp "available" to us, far above of Orion and Videoton, a Quad is still great.
 
DATASAAB D223
I grew up near the SAAB headquarters in Trollhättan. A very engineer-heavy company in tradition. Svenska-Aeroplan-Aktie-Bolaget (Swedish-Aeroplane-ltd) was somewhat ahead of its time tech-wise. Pioneering in the early cars that inherited the aerodynamics of their airplanes, and then broadening in to all kinds of engineering. I’m sure their mainframes were decent but it was hard to compete with IBM worldwide. Today they make advance defense utility, like stealth submarines and 4th-gen fighter jets. Very big in microwaves as well I think
 
I once had to explain what a home-built red LED light was for (preserving night vision); I think the 9V battery and the switch made them nervous. Eventually they let me keep it.

On the other hand, the Swiss Customs & Border people are more relaxed: In the late eighties I imported a time-of-flight system (custom built particle detector) into Switzerland, driving it across the border. Reams of paper work, inspection of the truck, yada-yada-yada, but all went well. When I got to my destination, I realized the customs agent had changed the classification from 'time-of-flight system' to 'flight guidance system' (which is a one letter difference in german)...
Gotta love the Swiss!

In the 00s I built an "audiophile" mobile player. Used an early Android phone, a USB DAC, USB storage, battery pack and a DIY amplifier in a small metal mint box, with red LED light, and a headset. The bundle was held up with BIG rubber bands.

I managed to take it on a few trips but the hassle was a PITA. When I presented that to TSA they pretty much went nuts, because it looked like an explosive device that MacGyver would disassemble on a regular basis.

It might have been the big RED LED light?
 
This is really off-off-topic, but that Swedish/Hungarian DI 3 locomotive reminded me quite a bit of an EMD E8. And indeed it's based on the F7, using the same engine: https://en.wikipedia.org/wiki/NSB_Di_3

You haven't lived with trains until you had to stop at the train crossing and waited for a 200 car train to go by.... you know you're in trouble when six yellow Union Pacific locomotives go by pulling it... There's enough time to cue and listen to a whole bunch of music... while you count cars.

Because... you count the cars as they go by, right? 112, 113, 114..... 189...

BTW, you ought to see UP freight climb the Cajon pass. The 15 goes alongside, on the East side of the valley. From the freeway you can hear the roar of the locomotives as they work up the grade. I've seen as many as eight locomotives pulling up the train up the grade.

This is a good video of trains going at the top of the pass. The Cajon Pass is the main train line going in and out of SoCal. This video gives you an idea, many of those trains go in and out of the LA/Long Beach ports.

Anyhow, if you like trains, you'll love watching it. 90, 91, 92..... 127...

Oh, EDIT... here's the link to the video... sorry


Check out at 9:30...
 
Last edited:
1747169508916.png

Absolutely. Are there even people who do not count train cars??
The EJE line ran right by the east entrance to my old lab, and after the Canadian National takeover the train frequency increased significantly.
Especially annoying is when you hear that all-too-familiar 'thunk' approach and go buy (deceleration traveling backwards through the train, compressing the coupler slack), followed by a hundredfold screech, and that darn train slows to a halt!
 
  • Like
Reactions: tonyEE
[...]
BTW, you ought to see UP freight climb the Cajon pass. The 15 goes alongside, on the East side of the valley. From the freeway you can hear the roar of the locomotives as they work up the grade. I've seen as many as eight locomotives pulling up the train up the grade.
[...]
Still planning to visit Cajon and Tehachapi. Too bad there are no turbines around anymore. Supposedly in the early 60s UP used to run them over Cajon Pass. Must have been quite the sound...