Analog Sine Oscillator - Proof of Concept
date: 2026-01

Before designing a minimal modular setup, ordering parts, and building it I wanted to build an sound-making circuit with parts already available at the local Fab Lab. This way, I wanted to find out about small, non-obvious pitfalls in the design and the fabrication process.
I wanted it to be a sine oscillator, because that was a fundamental sound source in my sound design workflow so far. Furthermore, there are many videos on how to make simple sawtooth or square wave oscillators, but for a sine oscillator I needed to research a bit more, which made it interesting.
Files
- audio jack footprint
- KiCad design files (archived project)
- BoM
- gerber files
- bitmaps
- toolpath
Available Parts & KiCad Library
The parts available at our Fab Lab overlap with the ones listed at the Fab Academy inventory. However, not every part listed at the inventory is available at the Fab Lab. Therefore, I needed to check the drawers at the lab. Below you can see a picture for reference. Note that this is only a snapshot taken in January 2026. The set of available parts at the lab might have changed since then.

Apart from the drawers, there are other places where SMD parts are stored. However, I did not find them significantly relevant for my project. For this proof of concept, I only used parts from the drawers. The full list of parts I used in the end can be checked at the bottom of this page in the BOM.
The footprints of the parts in the Fab Academy inventory are available in the corresponding KiCad library.
Parts I ended up using from the Lab were
- opamp 505-AD8605ARTZ-REEL7CT-ND
- 3.5mm SMD audio jacks
- The footprint of this part was not part of the library. Downloading the footprint via DigiKey (Models -> SnapMagic -> Select Download Format) did not work. Instead I downloaded it directly from SnapMagic. The footprint is available at the bottom of this page.
- resistors
- capacitors
- pin headers
- diodes
- There were no silicon diodes available, only shottky and zener diodes. I used shottky diodes as drop-in replacement for silicon diodes. Details will be explained below.
The Wien Bridge Oscillator (WBO)
For the oscillator I looked for a synthesizer as simple as possible. I found the RC phase shift oscillator and the Wien bridge oscillator (WBO). For the WBO less parts are needed, so I decided to implement that one. I these two videos explaining the WBO: video on the concept of the WBO, implementation of the WBO and correction on some component dimensions. The video is transcribed below.
The idea of the circuit is that there is an amplifier (non-inverting amplifier to be specific) whose output is fed back to the input thus forming a positive feedback loop. In the feedback loop there is a band pass so only that frequency is amplified that passes through the filter. The cutoff frequency of the band pass filter is f = 1 / (2πRC).

A side note: when I think of implementing a band pass, I naively think about concatenating a low pass and a high pass. However, the given filter circuit looks somehow different. Still, the two circuits (concatenated low and high pass and the one given in the video) are equivalent with respect to the in- and output voltage, as shown in this calculation.
The gain of the non-inverting amplifier is 1 + R1/R2. The gain of the amplifier has to be equal to 3 for a stable oscillation. The sine wave in this circuit has to be built up from noise. However, the gain of 3 is valid only for the steady state, i.e. when the oscillation has reached the desired amplitude. Until then, when the signal is weak, the gain needs to be a little bit higher than that. To achieve that, a gain control mechanism is needed. Here, it is implemented using diodes in the following way.

This circuit leverages the property of diodes that they only conduct once their voltage threshold is exceeded. When this happens, there is another resistor (R3) in parallel to R1 and the amplification factor of the non-inverting amplifier is decreased. R1, R2, R3 need to be chosen so that 1 + R1/R2 is a bit higher than 3 and 1 + (R1||R3)/R2 equal to 3 in theory. In practice, however, I took the values given in the second video:
R1 = 33kOhmR2 = 10kOhmR3 = 22kOhm
The filter values I chose for the cutoff frequency to be around 800Hz while using components available at the Fab Lab. The opamp that is used in the video is the LM741. I used a different one.
Design & Simulation
For the simulation I initially chose arbitrary resistor values so that the amplifier gain is 3 and the values of the two resistors and the two capacitors of the band pass are equal. The exact values will be chosen later. For simulating I used the web application circuitjs. The automatic gain control is omitted for the simulation.

The opamp is a real instead of an ideal one, since I would create the schematic based on the simulation. A DC voltage supply needs to be added. There needs to be a positive, a negative, and a ground potential. To achieve that, a voltage divider is added. Its resistors should be as large as possible, since the only reason for the voltage divider is to determine the ground potential. The current flowing through the divider should be as low as possible. The reason for the buffer is that it provides the same potential (here: ground) at its output as it is present at its input while not draining any current from the input. At the output, however, the buffer can supply considerably high current. This way there are no unwanted side effects between the voltage supply and other parts of the circuit due to unwanted currents.

The component values are now adjusted. Possible values can be seen in the Available Parts section. Additional values could be achieved when soldering two components of the same size on top of each other. For resistors, this halves the resistance value and for capacitors, this doubles it. The resistors at the voltage divider at the power supply were increased to 10kOhm each. R1 and R2 are chosen to be 330kOhm and 100kOhm according to the values in the video. The values are multiplied by 10. There were no other parts available, but the ratio is maintained, so this is not a problem. The values of the band pass R and C are chosen to be 10k and 20nF (two 10nF capacitors in parallel). This leads to a frequency of around 796Hz and uses components available in the Lab.

One can see that the output clips. This is due to the higher gain. I assumed that the problem would be fixed when the gain control with the 22kOhm resistor is added. However, this means that the output waveform can be changed by the user if R1 is replaced by a potentiometer.
If the out potential would be taken as the output, that might draw currents from that node thus changing the functionality of the circuit. Therefore, an output buffer is added. In case the out node is connected to ground accidentally, a 1kOhm resistor is added after the buffer, as written in this forum post. The voltage divider is added to scale down the signal level. Here, I made a mistake to put the voltage divider in front of the buffer, as I noticed after making the circuit. Fortunately, after fabrication everything worked well, but next time, I will change the design accordingly. A reason why everything still worked is that the voltage divider probably did not draw too much current from the oscillator to have a too large effect.

When adding the automatic gain control with a 250kOhm resistor (this is the resistance closest to the relation used in the video I could build with the available components), the oscillation is not stable in the simulation. I assume this is due to the simulation not being 100% realistic.

If we want to follow line level it is fine to scale the output signal to around +-0.447V to +-1V. For Eurorack, which I will be using for future projects, the audio signal level is maximum +-5V (peak to peak).
Fabricating the Circuit
For fabricating the circuit, I drew the schematic in KiCad. The parts I soldered on top of each other to halve (resistors) / double (capacitors) the values are marked accordingly in the PCB. For a final product it would be nice not to do that. I would order appropriate resistance values beforehand. For this prototype, however, it keeps the schematic and the milled footprint minimal.
In the Fab Lab there were no silicon diodes, only Schottky and Zener diodes. According to Wikipedia Silicon diodes have a threshold voltage of 0.7V. Schottky diodes have a threshold voltage from 0.15V to 0.45V. The data sheet for the schottky diodes were hard to find so I had to take the values from Wikipedia as a rough estimation. Instead of one silicon diode I added three Schottky diodes in series in the design.

Below, the PCB layout can be seen. I used footprints of type 1206.
To add the new footprint for the audio jack I did the following steps:
- symbol editor -> add library (kicad_sym file)
- footprint editor -> open kicad_mod file
- save kicad_mod file, create new library, same folder as kicad_sym
- done. Maybe one needs to add the footprint to the symbol. This can be done by adding the symbol to the schematic and then editing it.
- add 3D model: footprint editor -> configure footprint -> 3D models tab



From this layout, the PCB is fabricated. How to fabricate a PCB using subtraction milling is described here. The resulting is shown below.

First, I did not solder the schottky diodes to check how the output signal looks without automatic gain control.

Testing
First, I tested the circuit without soldering the diodes and the resistor for the gain control to check if it is working in principle. I expected a distorted oscillation as simulated. The outcome was something similar to that with rounded rising and falling edges.

In a later version one could use this property and add a potentiometer to increase the gain of the amplifier to shape the wave from a sine to a distorted one.
Next, I added the gain control. The output was a clean sine wave. The amplitude, however was a bit low (156mV peak).

Later I would play around with scaling the output, but first, I wanted to know how the output looks without gain control and with an amplification gain of exactly 3. For that I removed the 100kOhm resistor (R2) and replaced it by two 330kOhm resistors in parallel plus I removed the resistor that connects the gain control.

The output still was a nicely-shaped sine wave, but its amplitude is varying slowly to a small extend, which might be undesirable.
Afterwards, I changed back to configuration with R1=330kOhm, R2=100kOhm, and gain control. The output voltage was then around 130mV. I do not know why, but it was late and I did not have the time to debug this. I played around with the voltage divider changing it from 5k,1k (g1: 1/6) to 500k,330k (g2: 33/83). This should change the amplification of the signal with a factor of 1/g1 * g2 = 6/1 * 33/83 = 2.39. The expected output peak voltage was something around 300mV. The actual peak voltage was 288mV which is quite fitting.
What I Learned
- How to use a voltage divider for scaling down a signal.
- How to design an output stage.
- How to create a virtual ground node from just one power supply.
- How to build a (at least temporarily) stable Wien bridge oscillator.
- The automatic gain control using diodes is indeed reasonable and should be used.
- The circuit seemed to stop working with very high voltage. Around 11V, the circuit started sounding weird. This sound did not change by turning the supply back to 9V, so I assume the change was irreversable. The datasheet sais that the range of operation is 2.7V to 5.5V. This is not suitable for an operation using eurorack voltage level.
What to Improve
- The traces on the PCB were too small. Next time I should make them wider.
- I covered output signal levels a bit, but only considering their peak voltages. As far as I know there is a characterization based on the RMS value of a signal as well. Here, I need to research a bit more to adjust the output stages accordingly.
- Voltage dividers should be put after the output buffer.