Ideas for Google Summer of Code 2012?

Discussion and support for general JUCE issues

Ideas for Google Summer of Code 2012?

Postby Dri » Sat Feb 11, 2012 6:19 pm

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?
Last edited by Dri on Mon Feb 20, 2012 12:53 pm, edited 7 times in total.
Cheers,
Adrien
User avatar
Dri
JUCE UberWeenie
 
Posts: 100
Joined: Wed Jul 14, 2010 1:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby jules » Sat Feb 11, 2012 6:49 pm

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.
User avatar
jules
Fearless Leader
 
Posts: 17209
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Ideas for Google Summer of Code 2012?

Postby sonic59 » Sat Feb 11, 2012 7:05 pm

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
sonic59
JUCE UberWeenie
 
Posts: 224
Joined: Tue Mar 09, 2010 5:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby siedschl » Sat Feb 11, 2012 7:07 pm

AAX wrapper would be nice too, but is probably not possible as AAX is not open source, right?
siedschl
JUCE UberWeenie
 
Posts: 273
Joined: Wed Nov 07, 2007 10:56 am

Re: Ideas for Google Summer of Code 2012?

Postby Dri » Sat Feb 11, 2012 9:51 pm

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
User avatar
Dri
JUCE UberWeenie
 
Posts: 100
Joined: Wed Jul 14, 2010 1:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby SwingCoder » Sat Feb 11, 2012 10:01 pm

MusicScore classes
VST3 wrapper
AudioConvertToMidi class
IntelligentComposing classes
TabMenuModel class
Printout class
TextRender - more clearly than at present
...
Windows 7 X64, VS2010, Latest JUCE tip
SwingCoder
JUCE UberWeenie
 
Posts: 1160
Joined: Thu Oct 07, 2010 4:44 pm

Re: Ideas for Google Summer of Code 2012?

Postby sonic59 » Sat Feb 11, 2012 10:48 pm

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.

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.

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.

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.

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.
sonic59
JUCE UberWeenie
 
Posts: 224
Joined: Tue Mar 09, 2010 5:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby Dri » Sun Feb 12, 2012 2:57 am

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
User avatar
Dri
JUCE UberWeenie
 
Posts: 100
Joined: Wed Jul 14, 2010 1:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby sonic59 » Sun Feb 12, 2012 3:29 pm

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.
sonic59
JUCE UberWeenie
 
Posts: 224
Joined: Tue Mar 09, 2010 5:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby Andrew J » Mon Feb 13, 2012 12:46 am

SwingCoder wrote:TextRender - more clearly than at present

LCD optimised edge table rendering in LowLevelGraphicsSoftwareRenderer?
User avatar
Andrew J
JUCE UberWeenie
 
Posts: 214
Joined: Tue Feb 15, 2011 1:26 pm
Location: Hobart, Australia

Re: Ideas for Google Summer of Code 2012?

Postby SwingCoder » Mon Feb 13, 2012 4:09 pm

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, VS2010, Latest JUCE tip
SwingCoder
JUCE UberWeenie
 
Posts: 1160
Joined: Thu Oct 07, 2010 4:44 pm

Re: Ideas for Google Summer of Code 2012?

Postby SwingCoder » Mon Feb 13, 2012 4:21 pm

Andrew J wrote:
SwingCoder wrote:TextRender - more clearly than at present

LCD optimised edge table rendering in LowLevelGraphicsSoftwareRenderer?

I don't quite understand what you said about and I haven't studied this class: LowLevelGraphicsSoftwareRenderer earnestly. Someone once hinted to me, I will learn it carefully in the near future. seem to no relationship of LCD.

thanks.
Windows 7 X64, VS2010, Latest JUCE tip
SwingCoder
JUCE UberWeenie
 
Posts: 1160
Joined: Thu Oct 07, 2010 4:44 pm

Re: Ideas for Google Summer of Code 2012?

Postby Dri » Mon Feb 13, 2012 5:43 pm

Don't worry about cultural background differences, I worked in Asia for long enough to avoid any East-West pitfalls ;)

SwingCoder wrote: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?)

This is a great idea and would really fit in an academic work! Lots of work to do in the AI field regarding this subject. If we could at least get a tool to generate jazz grids or such, it would already be wonderful. I think software like BandInABox already do similar stuff.

SwingCoder wrote: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.

I see. This is called "ribbon toolbar" in office I think. This shouldn't be that difficult. Probably even a bit boring as it's mostly graphical layout problems.

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

Except musical sheets, I don't really see what I would like to print. But why not...

SwingCoder wrote: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.

If anyone could express clearly what the problems are with fonts, text rendering and assimilate, I could probably come up with a bunch of action items... I already understood complex language support was missing on Android and linux, as opposed to other platforms. What else is wrong? Crispiness on LCD screens? Low level renderer missing feature?
Cheers,
Adrien
User avatar
Dri
JUCE UberWeenie
 
Posts: 100
Joined: Wed Jul 14, 2010 1:51 pm

Re: Ideas for Google Summer of Code 2012?

Postby X-Ryl669 » Tue Feb 14, 2012 12:00 pm

* Finish the PostScript renderer. This would allow printing at no cost, since all platform allow sending postscript directly to the printer.
As an additional bonus, add some GZipOutputstream in the deal and write a PDF writer.

* Ideally have a PDF/Postscript parser. Again, the main force of Juce is the simplicity/flexibility of its vectorial engine and being able to use PostScript as a serializer would be awesome to my point of view.

* Improve the performance of Juce. Globally Juce is alread optimized for being usable in most case, but there is probably multiple case where bottleneck could be found and optimized away.

* Wayland port of Juce. Wayland is the next-gen X server and will hit 1.0 release in few month, and in the next semester Linux distribution will start throwing X away. So better anticipate the change and start working on this now.
X-Ryl669
X-Ryl669
JUCE UberWeenie
 
Posts: 1124
Joined: Sun Apr 24, 2005 5:30 pm

Re: Ideas for Google Summer of Code 2012?

Postby sonic59 » Tue Feb 14, 2012 2:32 pm

If anyone could express clearly what the problems are with fonts, text rendering and assimilate


What SwingCoder is referring to when he says "TextRender - more clearly than at present" is the fact that Juce's text rendering on Windows does not look like other native Windows applications. The reason for this is because on Windows, Juce renders text itself via it's own internal software renderer and without font hinting. This is different from native (Pre Windows 8 ) Windows applications which render text via GDI, with font hinting and ClearType. Jules has stated unequivocally in the past that he will not be adding font hinting to Juce himself. TheVinn really wanted font hinting so he created a separate MIT licensed library that utilizes FreeType to allow for the use of hinted fonts in Juce. Still, even when using this library, text will not look like other native Windows applications because you are still not using GDI and ClearType.

The only way for it to ever look the same is for someone to implement a GDI version of LowLevelGraphicsContext. While this is totally possible, I believe this is a waste of time, GDI is already deprecated and it has been completely dropped from the new Metro API's in Windows 8. Direct2D and DirectWrite is the new and vastly improved way to do 2D text rendering in Windows. They are both part of the new Metro API's and it is highly likely they are used to render all text in Windows 8. Juce already supports DirectWrite so the only thing that needs to be done is for someone to write a Direct2D LowLevelGraphicsContext. Once this is done, text will look exactly like other native Windows 8 applications and will be rendered using Direct2D, with font hinting and the latest version of ClearType (which is superior to the older version available in GDI).
sonic59
JUCE UberWeenie
 
Posts: 224
Joined: Tue Mar 09, 2010 5:51 pm

Next

Return to General JUCE discussion

Who is online

Users browsing this forum: Google [Bot], Google Feedfetcher, valley and 4 guests