Live Play mode in SoundGrid 3

April 3, 2010
New Live Play mode in SoundGrid 3 shows overview of all layers and patterns on one screen. It allows to quickly switch pattern for any layer and (new!) to select next pattern that will be automatically activated after the current one. This will make SoundGrid better suited for live performance/recording.

SoundGrid 3 screenshots

March 29, 2010
As I promised on Twitter, here are screenshots of the upcoming SoundGrid 3. No comments at this moment, only pictures. And some things still need to be done, mostly related to web-based management console. Planning to finish and release next week.

iPhone VFP and memory performance

March 18, 2010

I have array of floats for output buffer and array of shorts for input. I need to add values from input buffer to values in output buffer. Using VFP unit the code looks as follows:

int temp[8];
while (numVectors--)
  temp[0] = bin[0];
  temp[1] = bin[1];
  temp[2] = bin[2];
  temp[3] = bin[3];
  temp[4] = bin[4];
  temp[5] = bin[5];
  temp[6] = bin[6];
  temp[7] = bin[7];
  ASM ("fldmias  %0, {s8-s15} \n\t"
       "fldmias  %2, {s16-s23} \n\t"
       "fsitos s16,s16 \n\t"
       "fsitos s17,s17 \n\t"
       "fsitos s18,s18 \n\t"
       "fsitos s19,s19 \n\t"
       "fsitos s20,s20 \n\t"
       "fsitos s21,s21 \n\t"
       "fsitos s22,s22 \n\t"
       "fsitos s23,s23 \n\t"
       "fadds s8, s8, s16 \n\t"
       "fstmias  %0!, {s8-s15} \n\t" 
       : "=r" (bout)
       : "0" (bout), "r" (temp)
       : (long reg list was here);

So shorts first converted to ints (pair of ldrsh/str operations), then loaded into VFP vector, converted to floats and added to existing values in output buffer eight-at-once. This works without problems and is fast.

Then I tried to preconvert shorts to floats and use array of floats as input to get rid of extra short->int->float conversion:

while (numVectors--)
  ASM ("fldmias  %0, {s8-s15} \n\t"
       "fldmias  %1!, {s16-s23} \n\t"
       "fadds s8, s8, s16 \n\t"
       "fstmias  %0!, {s8-s15} \n\t" 
       : "=r" (bout), "=r" (fbin)
       : "0" (bout), "1" (fbin)
       : (long reg list was here);

Imaging how was I surprised when measurements showed this code is actually much slower then previous. I’m not quite sure why but I think this is because array of floats takes twice more memory than array of shorts of the same length. It seems because of some caching access to large regions of memory is much slower than extra copy operations and VFP conversion together but accessing lesser memory range.

You should never "optimize" anything without doublechecking that things are really optimized, even if it looks obvious.


WikiPlaces 2.0 sent for approval

January 22, 2010
Final list of changes:
  • Search
  • Bookmarks
  • Support for multiple Wikimapia languages
  • New redesigned sleek UI
  • Faster downloading because of direct access to DB
  • New modern overlay visual style
  • Better place details display - just text, no ads and so on
  • Advanced settings
  • UI translations: English, Russian, French, German
  • Many more improvements and fixes

WikiPlaces 2.0 is coming soon!

January 20, 2010
Redesigned UI, Search, Multiple languages and much more. Stay tuned!

New SoundBank: Dubh Drums

January 15, 2010
Jonny McEwen contributed great soundbank for SoundGrid - Dubh Drums. To install it go to Get More Sound Banks in Community menu, then select Official Server and find this soundbank.

Thank you, Jonny! And by the way, here is his music:

Inotia 2 – Waste of money

December 11, 2009

Boring. Stupid. Pointless.

Very nice graphics, though.


PicasaWeb image quality is awful

December 10, 2009
Had an idea to use PicasaWeb instead of MobileMe Gallery because it’s faster and several other reasons. But quality of ‘web-optimized’ images it generates and shows is really awful and unacceptable.

PicasaWeb on the left and MobileMe Gallery on the right, notice JPEG compression artifacts.

Explanation of the idea with SoundFonts

October 12, 2009

You know I’m going to add exporting to MIDI files in one of next versions. This will allow users to import SoundGrid Grids into any other DAW and each layer will become MIDI track. But this will not give you the same sound output without samples from soundbanks that were used in original Grid.

So I’m going to create SoundFont files matching all my soundbanks. Then you can assign appropriate SoundFonts to MIDI tracks (DAWs have either built-in support for SoundFonts or plugins) and hear the same sound. Unfortunately filters and effects can’t be exported/imported but I think this solution is still better than nothing.