Ideas for Google Summer of Code 2012?

30 posts / 0 new
Last post
Dri
Offline
Last seen: 2 days 4 hours ago
Joined: 14 Jul 2010 - 13:51
Ideas for Google Summer of Code 2012?

Hi Juce Community,

Applications for Google Summer of Code 2012 are about to start, and Julian agreed that it'd be very cool to have students work on Juce during that time.

Presentation

For those of you who're not familiar with SOC, it's a big Google-funded event where they pay selected students to work on Open Source projects. The goal for google is to improve open source projects, some of them they might use themselves, and certainly also to discover future hires.

Applying students who get through the selection process get to work on interesting projects, they get payed quite a lot (around $5K), they obviously improve their resumes and in the process they get used to work with a community and might face problems and requirements they've not faced in their studies yet. In a word, for students it's Bazinga!

For organizations, well, you get free interns! Plus $500 for each project getting through. The only thing to do is to present a convincing application and get the interest from prospective students. I volunteered to do the boring administrative blabbering because it's (of course) in my interest to see some of these projects get into the trunk :) (but if you really want to do it, I won't fight over it, don't worry…)

If you need more information, there's a FAQ on the official page: http://www.google-melange.com/gsoc/homepage/google/gsoc2012

First Step: Listing Subject Ideas

I propose we list subject ideas we might have for students. It's time for you to dig out the things you've never had time to work on. Please mention as well if you'd be OK to mentor a student working on the given subject. Knowing that according to Google, mentoring can take up to 5 hours a week. But to be honest, I know a couple of students who did the program in the past years and they never required that much attention.
All you have to do is to introduce them to the world of juce, guide them and check their work (fill evaluation forms). You still need the technical ability to code in correct C++ though, because if the student gets stuck, and no one on the forum can help, you'll have to provide the support. But we can organize ourselves to give each students 2 mentors. That's actually recommended by google and would also give us less to do.

I start with a couple of ideas I saw on the forum, and I'll update the post with your ideas:

Formats / Protocols

  • 1.VST3 wrapper[/*]
  • 2.VST3 hosting[/*]
  • 3.OSC support[/*]
  • 4.LV2 Hosting - Host LV2 Plugins[/*]
Algorithms / Data Structures
  • 5.beat detection algorithm[/*]
  • 6.Audio to MIDI conversion[/*]
  • 7."Smart Musical Arrangement" assistant[/*]
  • 8.multicore AudioProcessorGraph processing[/*]
Visual Components
  • 9.Music Score support[/*]
  • 10.Office 2010-like "Ribbon toolbar"[/*]
Graphics
  • 11.PostScript Renderer[/*]
  • 12.Direct2D Graphics Renderer - Hardware accelerate graphics rendering on Windows, required for WinRT/Win8ARM support[/*]
Core
  • 13.Shared Memory (multi-platform) class[/*]
  • 14.WinRT Port - So Juce Applications can run on Windows 8 ARM[/*]
  • 15.NaCl Port of Juce[/*]
  • 16.Complex languages rendering on Linux/Android using Pango[/*]
  • 17.PostScript Parser[/*]
  • 18.Wayland port of Juce. Wayland is the next-gen X server and will hit 1.0 release in few month[/*]
  • 19.Integrate juce with the OS specific accessibility APIs (VoiceOver on mac etc), allowing blind users to use juce apps[/*]

Other ideas? Support for a specific (open) format? Algorithms? C++11 fun stuff?

Cheers,
Adrien

Edited by: Dri on 20 Feb 2012 - 11:53
jules
Offline
Last seen: 1 hour 48 min ago
Joined: 29 Apr 2013 - 18:37
Re: Ideas for Google Summer of Code 2012?

Since this is Google, something that may interest them would be an NaCl port of juce. I've always wished I had time to have a go at that myself.

sonic59
Offline
Last seen: 16 hours 12 min ago
Joined: 9 Mar 2010 - 16:51
Re: Ideas for Google Summer of Code 2012?

Don't have time to mentor, but I'll certainly add my juce wishlist.

  • WinRT Port - So Juce Applications can run on Windows 8 ARM[/*]
  • Direct2D Graphics Renderer - Hardware accelerate graphics rendering on Windows, required for WinRT/Win8ARM support[/*]
  • VST3 Hosting - Host VST3 Plugins[/*]
  • Pango Support - So Juce can support complex text languages on linux and android[/*]
  • PulseAudio Support - So we don't have to keep shutting down PulseAudio to use audio hardware on linux[/*]
  • JACK Midi Support - Complement existing JACK Audio Support[/*]
  • LV2 Hosting - Host LV2 Plugins[/*]
siedschl
Offline
Last seen: 5 days 5 hours ago
Joined: 7 Nov 2007 - 09:56
Re: Ideas for Google Summer of Code 2012?

AAX wrapper would be nice too, but is probably not possible as AAX is not open source, right?

Dri
Offline
Last seen: 2 days 4 hours ago
Joined: 14 Jul 2010 - 13:51
Re: Ideas for Google Summer of Code 2012?

jules wrote:
Since this is Google, something that may interest them would be an NaCl port of juce. I've always wished I had time to have a go at that myself.

Exact! I thought about it then it got out of my mind. They'll love it ;)

siedschl wrote:
AAX wrapper would be nice too, but is probably not possible as AAX is not open source, right?

Probably as open as VST... so it should be possible to make a GPL wrapper and let the user download the proprietary stuff on the side. Do you have a link to the SDK or related legal stuff so that I can have a look?

sonic59 wrote:
LV2 Hosting - Host LV2 Plugins

Wasn't someone already working on this? Yet, I guess it won't make any harm if another implementation is done.

sonic59 wrote:
WinRT Port - So Juce Applications can run on Windows 8 ARM
Direct2D Graphics Renderer - Hardware accelerate graphics rendering on Windows, required for WinRT/Win8ARM support

Fair enough.

sonic59 wrote:
Pango Support - So Juce can support complex text languages on linux and android

I remember reading that TheVinn was working with people from Freetype to do something related to text rendering as well. Wouldn't it be worth gathering all the problems related to text handling on all platforms and extract work items from the whole?

sonic59 wrote:

PulseAudio Support - So we don't have to keep shutting down PulseAudio to use audio hardware on linux
JACK Midi Support - Complement existing JACK Audio Support

Could you please enlighten me on this? What kind of work would jack midi support require? Is it just the implementation of new callbacks or bigger stuff? In other words, do you think it is worth making a person work fulltime on this for the whole summer?
Regarding PulseAudio, does it act as a replacement to JACK? From what I (quickly) read, it doesn't seem to be as fit for realtime audio as JACK.

Cheers,
Adrien

SwingCoder
Offline
Last seen: 9 months 4 days ago
Joined: 7 Oct 2010 - 16:44
Re: Ideas for Google Summer of Code 2012?

MusicScore classes
VST3 wrapper
AudioConvertToMidi class
IntelligentComposing classes
TabMenuModel class
Printout class
TextRender - more clearly than at present
...

Windows 7 X64, VS2012, Latest JUCE tip

sonic59
Offline
Last seen: 16 hours 12 min ago
Joined: 9 Mar 2010 - 16:51
Re: Ideas for Google Summer of Code 2012?

Quote:
Probably as open as VST... so it should be possible to make a GPL wrapper and let the user download the proprietary stuff on the side. Do you have a link to the SDK or related legal stuff so that I can have a look?

Supporting AAX will be quite hard. AAX is nowhere near as open as VST. Developers must be approved by Avid before they are even given the AAX SDK. And it is no rubber stamp, many people/small companies get rejected. I find it highly unlikely they will give the SDK to a student.

Quote:
Wasn't someone already working on this? Yet, I guess it won't make any harm if another implementation is done.

I believe someone built an LV2 plugin wrapper for Juce. This is different from hosting LV2 plugins.

Quote:
I remember reading that TheVinn was working with people from Freetype to do something related to text rendering as well. Wouldn't it be worth gathering all the problems related to text handling on all platforms and extract work items from the whole?

TheVinn wanted hinted fonts and convinced Jules to make some changes so he could make this happen by using Freetype. He has already completed that work. What I meant was supporting the rendering of complex text languages (arabic, hebrew, hindi, etc.) on Linux and Android via Pango. Such support already exists for Windows/Mac/iOS using platform specific APIs.

Quote:
What kind of work would jack midi support require? Is it just the implementation of new callbacks or bigger stuff? In other words, do you think it is worth making a person work fulltime on this for the whole summer?

Just the implementation of new callbacks I believe. This task would probably only take a couple weeks at most.

Quote:
Regarding PulseAudio, does it act as a replacement to JACK? From what I (quickly) read, it doesn't seem to be as fit for realtime audio as JACK.

PulseAudio and JACK are both sound servers so you could replace JACK with PulseAudio. I don't think supporting real time applications was ever one of PulseAudio's primary design goals. It is basically a software mixer that routes sound from different sources to your audio hardware. It takes exclusive control of your audio hardware, so if you try to run a Juce app on a machine that is running PulseAudio, the audio won't work until you shutdown PulseAudio since the Juce app wants exclusive control as well. PulseAudio is used by many major linux distributions such as Fedora, Ubuntu, Mandriva, Linux Mint, openSUSE, and OpenWrt.

Dri
Offline
Last seen: 2 days 4 hours ago
Joined: 14 Jul 2010 - 13:51
Re: Ideas for Google Summer of Code 2012?

SwingCoder wrote:

IntelligentComposing classes
TabMenuModel class
Printout class
TextRender - more clearly than at present

Could you elaborate on those so that I can understand what their goal is? :)

sonic59 wrote:
Supporting AAX will be quite hard. AAX is nowhere near as open as VST. Developers must be approved by Avid before they are even given the AAX SDK. And it is no rubber stamp, many people/small companies get rejected. I find it highly unlikely they will give the SDK to a student.

Is it also the case if you just want to host an AAX plugin? If yes, then I propose we give up on yet-another stupid closed format...

sonic59 wrote:
It takes exclusive control of your audio hardware, so if you try to run a Juce app on a machine that is running PulseAudio, the audio won't work until you shutdown PulseAudio since the Juce app wants exclusive control as well. PulseAudio is used by many major linux distributions such as Fedora, Ubuntu, Mandriva, Linux Mint, openSUSE, and OpenWrt.

I get your point, but to me, if you intend to do audio sequencing and other realtime audio applications, you should tailor your system to use dedicated routing servers such as JACK, which was created only in that purpose. This is what ubuntu studio proposes, because it has a different problematic than the usual desktop ubuntu, mandriva, and others. If you modify your juce application to route audio through PulseAudio instead of JACK, I fear you'll get excessive latency. I agree that it's better for compatibility reasons so that the "average user" can make sound with your software, but the average linux user should be able to switch to jack. Again, it's my opinion. I can always add it to the list, but don't count on me to mentor that ;)

Cheers,
Adrien

sonic59
Offline
Last seen: 16 hours 12 min ago
Joined: 9 Mar 2010 - 16:51
Re: Ideas for Google Summer of Code 2012?

Quote:
Is it also the case if you just want to host an AAX plugin?

No, it is worse. Avid doesn't allow anyone to host RTAS or AAX plugins except themselves.

Andrew J
Andrew J's picture
Online
Last seen: 19 sec ago
Joined: 15 Feb 2011 - 12:26
Re: Ideas for Google Summer of Code 2012?

SwingCoder wrote:

TextRender - more clearly than at present

LCD optimised edge table rendering in LowLevelGraphicsSoftwareRenderer?
SwingCoder
Offline
Last seen: 9 months 4 days ago
Joined: 7 Oct 2010 - 16:44
Re: Ideas for Google Summer of Code 2012?

IntelligentComposing: This may be an impossible task at present. The advantage of the computer is computing speed, memory and storage capacity far beyond the human. If the computer like humans can learn the skills of composition (write music), programming, etc., (maybe computer neuronic system?) should be a really good thing. At the least, to do myself own music with the software code by me, I don't need to hard study C++ and JUCE...This topic is so widely, far beyond me expression ability in English.

TabMenuModel: just like the Office 2010 tabbed menu system, not a pop-up menu. Use custom ToolBarItem technology of JUCE should be able to achieve, but too complicated.

Printout the class: document printing to paper or printout as PDF...

TextRender: still less likely to achieve the desired, because Jules focus of attention will not this. everyone seems to satisfied with JUCE text clarity, in addition expert man such as Sonic59 etc, I feel a bit weird.

Non-tongue exchange difficulties, and the East-West cultural background differences and different ways of thinking, a lot of things I don't know how to express, the reasons of the poor weight not, be of little importance. these words more likes balderdash, please forgive me.(人微言轻,无足轻重,诸位一笑置之可也)。

Thanks.

Windows 7 X64, VS2012, Latest JUCE tip

Pages