Skip to content

GSOC Ideas 2019

Mark McCurry edited this page Mar 10, 2019 · 12 revisions

This page is being used to collect ideas and proposals for GSOC 2019 projects.

Each idea should look like:

A short descriptive title

Description

What is the problem that motivates the project? What does it roughly involve doing?

Expected outcome

What should the student be expected to deliver at the end of the summer?

Skills preferred

What technologies does an individual need some experience in to accomplish this particular project?

Possible mentors

Who within the zynaddsubfx organization could help guide the student?

Difficulty

How challenging will it be to finish the deliverable in the time available to the student?

Type

What category would you place this project in?

Oversampling for modulation anti-aliasing

Description

When modulating an audio signal higher frequency harmonics are typically produced. These higher frequency harmonics become undesirable if they exceed the nyqust frequency, creating aliasing. It is possible to avoid aliasing by processing the modulation at a higher sampling rate (oversampling), removing high frequency components, and downsampling. The addition of oversampling would greatly improve the quality of existing modulation options. The GSOC student would implement oversampling with the additive synthesis engine, adjust the input frequencies being streamed into the oversampled section of code, and provide user control to the level of oversampling.

Expected outcome

Basic user configurable 1x, 2x, and 4x oversampling should be available for Zyn’s Add Synth.

Skills preferred

embedded C/C++ preferred, math background with very basic exposure to signal processing preferred

Possible mentors

fundamental (Mark McCurry)

Difficulty

Moderate

Type

Signal Processing Infrastructure

Extended Envelope curves

Description

Envelopes for amplitude/frequency/filters control parameters over time. The envelopes in ZynAddSubFX provide the opportunity to define output values at selected times which are interpolated between with linear interpolation or logarithmic interpolation. Extending the interpolation to be user-parameterize-able will increase the versatility of envelopes. The GSoC student will work on extending the interpolation methods of envelopes and provide intuitive methods for the user to interact with the new degrees of freedom.

Expected outcome

new User control-able envelope shapes will be exposed in the user interface with an intuitive way of manipulating the new controls.

Possible mentors

caoliver (Christopher A. Oliver)

Skills preferred

Ruby and light C/C++ experience preferred

Difficulty

Easy unless scope is increased

Type

User interface/parameter control

True Mono Mode

Description

Synthesizers either play multiple notes (polyphonic) or only a single note at a time (monophonic). ZynAddSubFX has a pseudo-monophonic mode, for it to be a true monophonic mode however, the existing note needs to be updated rather than the current approach. Currently, ZynAddSubFX creates a new note and simply releases the old note. To correct the current behavior, envelopes on the existing note will need to be re-triggered, and oscillators will need to be updated in place. This becomes more complex when taking smooth frequency changes into account (via portamento). The GSoC student would replace the existing monophonic mode with one designed to replicate the behavior of a classical analog synthesizer.

Expected outcome

An updated monophonic mode which would retrigger envelopes in place and update existing wavetables in a smooth fashion.

Possible mentors

fundamental (Mark McCurry)

Difficulty

Easy-to-Moderate

Skills preferred

C/C++

Type

Infrastructure

BPM sync

Description

Add beat based synchronization to the LFOs (and possibly other things, like envelopes) using an external signal to establish the beat frequency and phase.

Expected outcome

User controls to set LFO phase and frequency to a scaled version of the host provided BPM. User can write a song in a DAW of choice (Ardour, LMMS, …​) to demonstrate that it is working. For zyn’s LV2 plugin, the TimePosition packet shall be used to get the time from the host (as long as it is valid). An LFO should be synched exactly if zyn is running host-controlled and the time packets are marked valid and the LFO is being marked to synch in the GUI (default should be no synch, in order to not change the LFO speed of loaded presets).

Possible mentors

DrSegfault (Johannes Lorenz)

Difficulty

Easy

Skills preferred

C/C++

Type

Host integration

Signal Scopes

Description

Within a synthesizer like ZynAddSubFX, there are a large number of intermediate values and signals. When learning about Zyn in particular or sound design in general, these intermediaries are a useful tool for understanding what is occurring under the hood. As of 3.0.0, Zyn has a signal tapping system designed to watch live intermediary values including the envelope/LFO states. The GSoC student will be responsible for extending the system to capture waveform data in a low overhead implementation. Once waveform data is captured, then it will be presented in the user interface using an oscilloscope like view. If time permits, then an additional spectrum view would also be useful.

Expected outcome

The GSoC student is expected to provide oscilloscope like views of intermediate signals for Add synth, Sub synth, Pad synth, and the distortion effect.

Possible mentors

fundamental (Mark McCurry)

Difficulty

Medium

Skills preferred

C/C++ & some Ruby

Type

Infrastructure

Enhanced Automation Control

Description

ZynAddSubFX provides an automation system to streamline parameter control from plugin hosts and from hardware MIDI devices. As automation is built for fast manipulation of complex parameters in Zyn, there is a variety of usability challenges. Quickly viewing or changing mappings, for instance, can take longer than expected and as such can be enhanced with additional visualizations and tuned workflows. Non-linear mappings are not currently implemented, but the underlying infrastructure can be generalized to support them. Design trade-offs between MIDI devices and host automations are still in flux. Additional details can be seen here and here.

Expected outcome

The GSoC student would be expected to provide non-linear mappings to automation controls, more flexible assignment tools, and minor usability enhancements to the automation system.

Possible mentors

fundamental (Mark McCurry)

Difficulty

Medium

Skills preferred

some C++, some Ruby, some prior exposure to music composition

Type

Workflow/Usability