Tuesday, 18 December 2012


I'm pleased to announce - finally! - the release of Tiklbox.

You can get it here from iTunes for iOS:


There is more background on the Intermorphic website:


We worked very hard at the design of Tiklbox, to make it very easy to use, and as relaxing as possible. We also made it from the beginning for international users; Tiklbox is available from first release for many languages (English, Chinese, Dutch, French, German, Indonesian, Italian, Japanese, Korean, Portuguese, Russian, Spanish)...

The Android version is also written, but not fully debugged; we're planning to release that version in January (Android 2.3+).

Wednesday, 26 September 2012

XVim - XCode plug-in for Vim!

What a great thing to have discovered - a Vim plug-in for Xcode. :)


That is, quite simply, tremendous. :)

Thursday, 19 July 2012

Android NDK debugging - on the Mac

I've been very busy the past couple of days, figuring-out how to track-down a bug in some JNI code.
I've installed a new Google "NDK Plugins" tool for Eclipse... that works rather well, and is well worth investigating if you need to debug Android JNI code from Mac, Windows or Linux.


I had to install Eclipse 3.7 (I had been using 3.6...), and made sure to select the NDK Plugins option when installing the Android tools.

I also had to:
- turn-off all C++ building and code analysis from the Eclipse side
- set android:debuggable="true" in the AndroidManifest.xml
- right click project, select Debug -> Android Native...
- The breakpoints aren't hit; but I DO get the debugger fire-in when the code goes wrong!


Friday, 18 May 2012

Noatikl 2 now on the Mac App Store

Noatikl 2 has now arrived on the Mac App Store, which is great news of course! You can find it here..


We now have four products on the Mac App Store - Noatikl, Mixtikl, Mixtikl Free and Liptikl - thanks to Apple for providing this distribution channel!

Tuesday, 15 May 2012

XCode and static libraries - auto-archiving the .a files for iOS and Mac

I was scratching my head figuring-out how to copy-out the .a files from an XCode static library build for iOS, so that I could distribute the static library variants easily to my customers.

For example, I had builds both for iOS and Simulator, and they were both going somewhere like this:


... which is a bit tricky to deal with!

The solution for me was to create a Run Script entry in the Build Phases for my Target under the XCode project/target settings...:

mkdir -p /Users/me/myfolder/$CONFIGURATION-$PLATFORM_NAME
cp -p $TARGET_BUILD_DIR/libmylib.a /Users/me/myfolder/$CONFIGURATION-$PLATFORM_NAME
if [ $CONFIGURATION eq Release ]
  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -S \

Note the strip command, which is essential as the script is always run before XCode's normal strip behaviour!

Note also that to generate a library for Release, for both iOS and simulator, you need to Build for Profile.

Here is the command-line I use to build it all automatically!

xcodebuild -project mylib.xcodeproj Release -sdk iphonesimulator clean
xcodebuild -project mylib.xcodeproj Release -sdk iphoneos clean
xcodebuild -project mylib.xcodeproj Release -sdk iphonesimulator
xcodebuild -project mylib.xcodeproj Release -sdk iphoneos

To configure an app to link-in the appropriate version of the (copied!) static library to match your app's Release/Debug configuration and target (iOS/Simulator), simply put this in the Other Linker Flags section of your app...:


Sunday, 13 May 2012

Noatikl 2 launched!

Noatikl 2 - we've finally launched it! What a huge chunk of work this has been.


I'm pretty pleased with the way that the network editor works, together with the pop-up Synth and Effects editors. The cross-integration of our code base is working well!

Next step: the mobile versions for both iOS and Android. That'll take quite a lot more work, but the GUI changes already in place in Noatikl 2 have taken us a long way down that road.

Tuesday, 24 April 2012

Noatikl 2 - getting close!

The initial version of Noatikl 2 is now very close to release!

We have just got a couple of things to tweak, and some documentation to check.

Hopefully Noatikl 2 will "go live" in just a few weeks...!

Monday, 12 March 2012

Debugging JNI/C++ code under Android/Eclipse is now easy!

At long last: debugging JNI/C++ code under Android/Eclipse is now easy!

All I had to do was to get this amazing software for Eclipse - thank you ARM ! ...:


Because I'm using a Mac, I had to install under a Linux VM on my Mac...

The only obscure thing I found when following the install/configure instructions, was that I in order for the new DB-5 Debugger Debug Configuration to find my device, I first to do this:

sudo ln -s /usr/bin/adb



Wednesday, 29 February 2012

Android - handling rotation/orientation in an Activity - the easy way!

As I've been asked a few times about the easy way to handle rotation in an Android Activity, I thought I'd outline what you need to do here. It is really easy when you know how!

Firstly, you need to ensure that you create your layouts such that they resize easily. See this post for more details:

Secondly, if you find that you need a different layout for your Activity (say in Landscape mode), create it in a parallel folder to your portait layout like this...:


In your mainfest xml activity... block, make sure you put this:


In your Activity's onCreate() method implementation, pretty much all you need to do is call this method:


Create the following override method in your Activity (this is called when the orientation changes as your Activity is rotated):

public void onConfigurationChanged(Configuration newConfig) {

  // Copy current item values from all your UI gadgets...!
  String myvalue = myitem.toString();
  // etc...

  // Call the method that re-orients and re-creates the gadget bindings

  // Restore the gadget values to the post-rotation UI:

Finally, you can create your new method, which makes your Activity use the correct layout to suit your orientation, and which looks-up all the gadgets, prepares their data and sets-up their event handlers (remember: this is called both at creation time, and whenever a rotation event occurs!):

private void myConfigureUI() {

  // Can check the orientation of the screen...
  if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
  } else {

  // This will automatically pick-up the landscape layout or portrait layout...

  // Look-up new items etc. ... mySpinner is an instance variable in this example...
  mySpinner = (Spinner) findViewById(R.id.spinnerx);

  mySpinner .setOnItemSelectedListener(new OnItemSelectedListener() { ...
  // etc. ...

Monday, 23 January 2012

Noatikl 2

We've been working very hard on Noatikl 2, and it is going to be a huge improvement on Noatikl 1.x!

Noatikl 2 will include built-in support for the Partikl synth that has already been featured in Mixtikl (in addition to all of Noatikl's traditional MIDI I/O options).

When Noatikl 2 launches later this year, it will be available directly from the Mac App Store in standalone form (Windows versions and Mac Plug-in variants will be on the Intermorphic web store as usual). We're also planning to bring it to both iOS and Android at some point this year. :)