telephone hold-on music
The basic idea is that the DC voltage on the telephone line is low (less than 10V) whenever any phone is off-hook. When all phones are on-hook, the voltage rises above 10V. If there were no hold circuit, it would rise to something on the order of 48V.

Let's assume that there's a call in progress, which means that the line voltage is less than 10V. All of the transistors are off.

The pushbutton initiates the "hold" feature, which charges up C1 and turns on TR1 and TR3, which starts up the melody device and turns on TR4. Note that TR4 has a 33K resistor in its collector path, which functions as the load that keeps the circuit "on hold" from the phone company's point of view. Note that TR3 is basically saturated at this point, which means that its collector is essentially at the same voltage as the telephone line itself. Feedback through R3 keeps TR1 turned on, even after the pushbutton is released.

When the person who put the line on hold subsequently hangs up his phone, this allows the DC voltage on the line to rise above 10V. This turns on TR2 via ZD1 and D5. TR2 has two diodes connected to its collector. D4 discharges C1, turning off TR1, but D3 keeps TR3 turned on and the music continues to play.

Finally, when anyone picks up any phone on the line, the line voltage drops below 10V again. This causes TR2 to stop conducting, turning off TR3, shutting off the music and releasing the "hold" condition. After this, when the phone is hung up again (without activating S1 a second time), the call will terminate normally.

The LED lights up whenever the music is playing, and D6 provides a little extra forward voltage drop to control the music device.

There's one tweak I would make to this circuit: I would add some capacitance at the base of TR2, and maybe increase the value of R7. This would provide a bit of debouncing in case someone is sloppy about hanging up the phone or picking it up the second time, preventing the TR2 from terminating the hold condition prematurely if they "rattle" the hookswitch.