-
Notifications
You must be signed in to change notification settings - Fork 18
Google Summer of Code 2012
We are applying for Google Summer of Code 2012!
Interested students must get in touch via IRC or email the mentor before the GSoC application deadline. We feel it is essential to chat about your project idea and get to know you before selecting students.
- Development -- our developer page to get you started
- Google Summer of Code 2012 FAQ
- Google Summer of Code 2012 Timeline
Audio software under Windows often supports the VST plugin interface. VST can be used to send audio to one or more plugins which get a chance to process it.
VST plugin mode would allow Wahjam to run as a plugin inside another program. This makes it possible to use Wahjam in a Digital Audio Workstation (DAW) or with effects software like GuitarRig. VST plugin mode also makes it possible for Wahjam to work together with virtual instruments and DJing software.
This project must use the VeSTige header files and not the official Steinberg SDK due to licensing restrictions. Please do not download, install, or accept the Steinberg SDK license. Instead, look at the VeSTige header files and open source applications which make use of them.
Note that this project is mainly aimed at the Windows platform. Linux typically uses JACK instead.
- VeSTige headers from Ardour: http://viewcvs.ardour.org/index.cgi/ardour2/ardour2/branches/2.0-ongoing/vst/
- Issue tracker: Issue 23
- Mentor: Stefan Hajnoczi <stefanha@gmail.com>, "stefanha" on IRC
The metronome bar shows each beat and allows users to visually orient themselves. This concept can be improved by displaying chords along with the beats. This will require developing a custom Qt widget.
When a user posts something that looks like a chord progression in the chat, the metronome bar should automatically display the chords. The chat parser should also recognize time signatures such as 4/4 and 3/4, if specified, so that chord durations can be calculated correctly.
Ikkei Shimomura has developed a HTML5 demo to demonstrate this concept, see the link below.
- HTML5 demo: http://bit.ly/_FlyMeToTheMoon
- Issue tracker: Issue 36
- Mentor: Ikkei Shimomura <ikkei.shimomura@gmail.com>, "tea_" on IRC
The current Wahjam Qt GUI client is written entirely in C++. It does not make use of declarative GUI design languages or support extensions.
In order to open up the possibilities of Wahjam and attract a wider developer community, a new client architecture has been discussed for Wahjam 2.0. The idea is to push out as much client functionality as makes sense into declarative languages and scripting. The core of Wahjam would be a set of classes exposed to Javascript which model the client and network protocol. The GUI would make use of this API and extension scripts would be possible to add menus, chat features, and so on.
This is a challenging project that aims to shape the future of the Wahjam client. Prior experience with Javascript, especially Firefox or Chrome extensions, is preferred. Experience with Qt is also a plus.
The goal is a next-generation Qt client that reimplements the GUI using declarative and scripting languages - with a basic API to show that extension development is possible. Since Summer of Code is only 12 weeks we do not expect a full reimplementation of the Wahjam Qt client, but you should aim to produce a solid subset of client functionality.
- Mentors: Stefan "stefanha" Hajnoczi <stefanha@gmail.com>, Ikkei "tea_" Shimomura <ikkei.shimomura@gmail.com>
Wahjam works well on its own but currently has no way to synchronize tempo with external audio software such as Digital Audio Workstations (DAW) or DJing software. As a result, it often takes several tries to synchronize drum loops or samples with Wahjam's metronome.
There are several mechanisms to synchronize time between audio applications, depending on the audio API. Wahjam uses PortAudio for cross-platform audio. PortAudio provides time stamps internally but no way to synchronize with external applications.
Your task is to investigate how to solve this problem, preferrably in a cross-platform way. Perhaps adding MIDI support to Wahjam will make it possible to use MIDI timing information and work with a wide variety of audio applications. Alternatively it may be possible to contribute patches to the PortAudio library and work together with their community to extend the API. Finally, audio APIs such as JACK offer time synchronization support and it may be possible to bypass PortAudio in some cases.
- Paper on PortAudio timing: http://www.rossbencina.com/static/writings/portaudio_sync_acmc2003.pdf
- PortAudio: http://www.portaudio.com/
- JACK: http://jackaudio.org/
- Issue tracker: Issue 20
- Mentor: Stefan Hajnoczi <stefanha@gmail.com>, "stefanha" on IRC