Skip to content

GSOC Ideas 2019

Mark McCurry edited this page Dec 15, 2018 · 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

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

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 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

???

Difficulty

Moderate

Skills preferred

C/C++

Type

Infrastructure

Brainstorm

  • BPM sync: johnanes, add beat based synchronization to a minimum of the LFOs using an external signal to establish the beat frequency and phase

  • Signal Scopes: fundamental, expand the existing signal tapping functionality to view waveform data in an oscilloscope like view or a spectral view to help guide signal construction

  • Enhanced Automation control: ???, expand the host automation and MIDI learn functionality for easier to use and non-linear parameter mappings.

Clone this wiki locally