What’s new in SoundGrid 3 – part 2

April 21, 2010
In the first part we talked about new features accessible from main application screen, so now I’ll tell you what’s new in the menu and about Web Console.

Actually besides the new design there are not so many changes. One of them is possibility to export recorded tracks in uncompressed WAV format (previously only AAC compressed files could be exported). List of additional downloadable instruments now has special button to automatically download all missing instruments for the current project. Sort by rating in Shared Grids now works better taking into account number of ratings too. And finally most awaited new feature in this version in Web Console. It currently has three functions. First, it allows users to send crash reports in case of application crash. This will help me to diagnose and fix problem. Second, it’s possible to download recorded tracks from Web Console. This is especially useful for downloading uncomressed WAV files because it’s usually not possible to send so large files via email. And lastly (and actually what it was created for), Web Console allows you to manage instruments, including uploading of your own samples to create new instruments. Not so much to comment here. You can upload your samples to newly created instrument (uploading of many files at once in ZIP archive is supported), specify MIDI note name and/or sample name…  …And then assign these samples to grid rows. Now creation of new instruments is very easy. If you want your instrument to be publicly available, click Download button and then send me archived instrument. 

What’s new in SoundGrid 3 – part 1

April 16, 2010
While SoundGrid 3 is being reviewed by Apple it’s time to tell you what’s new in this version.

First of all it has greatly optimized sound engine for even better sound quality and lower latency. And of course many bugfixes and other improvements. But sound engine is inside. What’s most of all visible for users is surely completely redesigned UI. It now has landscape orientation which allowed to place more controls on the main screen to quickly access most important options. Middle part of the screen is occupied by the matrix itself (not surprising) and on both sides from it various buttons are located, most of which show additional panels instead of the matrix in the middle part. No need to explain Play/Pause/Record buttons so lets move to others. On the left side there are buttons for switching current layer and pattern, and for showing panels related to current layer. On the right buttons related to entire project or system are located. Following image shows Instrument Selector panel overlaid over the grid. These buttons are smart - if you touch them briefly, panel will show and stay but if you hold them longer it will close when you release it. So you can quickly activate panel with one hand, make changes with another and it will automatically hide when you remove finger from the button. Next new thing is the Mixer panel. It allows you to see levels for all layers at once and change any of them (multitouch supported). Next, Amplitude Envelope control. You see, some panels may have different modes of operation switchable by buttons located on the opposite side from the panel activation button, controls themselves are always located in the middle part of the screen. Play button always stays on top so you can stop/resume at any time. I hope you will like these interface changes! By the way, on the above picture there’s current sequencer mode indicator just above Pause button. Modes now switched by touching and holding Play/Pause button. In addition to sequencer modes there are now two used input modes - usual Normal Mode and Draw Mode in which notes will play as you touch the matrix or draw over it, of course multitouch is supported too. Current mode indicator/switch is located in top-right corner of the screen. Normal mode slightly upgraded too, now if you touch the matrix briefly, note will play; touch hold longer to activate note (this can be switched off in settings). If you touch and move slightly over the grid (preventing note activation), translucent hint with note/sample names will slide from the left to help you find the one you need. Next, new pattern menu with clear and randomize pattern buttons and new function - copy/paste pattern between layers or projects. One more completely new mode of operations - Live Play mode. It gives you overview of all layers and patterns on the one screen and allows to quickly switch pattern for any layer. If you touch any pattern, it will be activated, if you touch twice, the same pattern (by number of course) will be activate for all layers. But if you touch and hold longer, pattern will be queued and activated after the current one! I hope this mode will make live performances and recording much more comfortable. That’s all for now, in the next part I’ll tell you what’s new in the Menu and about powerful Web Console.

Web Console in SoundGrid 3

April 13, 2010
…allows to quickly add your own samples to the app (and download recorded tracks too).

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: http://dubh.bandcamp.com/