GSOC 2019 Project Summary Signal Scope

Goal of this project:

The goal of this project is to create an Oscilloscope view for each Synthesis in ZynAddSubFX.

Users should be able to view intermediate waveform between different effect.

This allow users easily to see how different function affect waveform.

Describe my work briefly:

  • Implemented Oscilloscope view
  • Implemented a edge triggering system for Oscilloscope
  • Implemented relevant UI
  • Extend Watch Points
  • Testing for above

What is done:

  • Extend watch point for Additive Synthesis
  • Extend watch point for Subtractive Synthesis
  • Extend watch point for PAD synthesis
  • Implemented Edge triggering with multiple note mechanism and multiple watch point sync
  • Implemented UI for Oscilloscope in Additive Synthesis
  • Implemented UI for Oscilloscope in Subtractive Synthesis
  • Implemented UI for Oscilloscope in PAD synthesis
Oscilloscope view

Screenshot of the oscilloscope view

Commit link:

Adding Watch point, triggering and testing:

Front end Oscilloscope view:

Future work:

  • Extend more watch points
  • Further UI improvement based on user feed back
  • Implement a spectrum

More Detailed Description:

Why we want oscilloscope view in ZynAddSubFX?

ZynAddSubFX has three synthesis engine, ADsynth, Subsynth and PADsynth.

Here each synthesis engine is describe briefly:

  • Adsynth engine: Combine number voices into a single voice
  • SubSynth engine: generating white noise and subtracting harmonics from it
  • PadSynth engine: generating wavetables
synth diagram Without the oscilloscope, all the processes involved in synthesis sound are black box process to users. With newly implemented oscilloscope feature, you can now look at the waveform at different synthesis stage and see what happen when a voice is mixed as in ADsynth or a harmonics is filtered in SubSynth.


The Triggering system of oscilloscope view in ZynAddSubFX:


The purpose of the triggering system is to stabilize waveform displayed.
This make it more eye pleasing to user compare to really unstable waveform.
In ZynAddSubFX, the type of triggering system implemented is simple edge. In short, it compare the current input with previous input value. If there is a rising edge i.e. previous value is less than 0 and current value is equal or greater than 0. It will start to capture value.



By Micky.Y.Chan (michiboo)