-
Notifications
You must be signed in to change notification settings - Fork 0
GSOC Ideas 2019
This page is being used to collect ideas and proposals for GSOC 2019 projects.
Each idea should look like:
- 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?
- 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
- 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
- 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
- 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
- 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
- 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