I tweeted this last month, but thought I’d capture it in a blog post here.
June 29 was my last day at a news giant as an iOS dev. Following Monday, I left Sydney to see where nomadic life might take me. I’d like to see if I can survive without one home for 6 months. After, I’ll decide whether I like being a nomad or it’s time to go back to stability.
Besides travelling around the world I’ll have more time to work on the projects I care about. This obviously includes making more music and update my apps regularly. Additionally, I’m keen to get back into ML and generally into AI. The field of AI always interested me as a CompSci student but back then it was AI winter.
Having a full time job doesn’t leave much time for experimentation and playing around with my projects. So hoping to get more done.
The goal with music has been to make one album a year. I’ve hit that target more or less for the past 5 years. But I would like to increase that to 2-3 a year. This will allow me to experiment with more diverse music styles with each album.
With the apps, monthly update seemed like the way to go, but I haven’t been able to achieve that due to the time constraints. Hoping to rectify that this year. But no promises :)
Regarding AI, for now, I’m still in learning phase. ML is a very fast evolving field at the moment. So not sure where things will go and if I’ll end up making apps that utilise some of that.
As an iOS developer most contracting roles have been around fetching JSON from network and displaying the data in a table view. It gets quite boring after a while. If/when I get back to doing contracting roles I’ll look for jobs that utilise ML and other interesting tech.
This is my rough travelling plan. But I will be winging it a lot.
- July – Queensland / New Zealand
- August / September – Europe
- October / November – South East Asia
Drunk Piano in 3 words: cinematic, minimalistic and generative. The music behind the album was inspired by an imaginary film. Tracks represent scenes on a reversed timeline. Some generative music creation ideas have been employed to tell the story. Tempo is never static and each track only consists of 3 instruments or sound sources.
I’ve always tried to make the kind of music that I would want to find in a music store and take home. It’s harder than it sounds. The challenge is knowing what kind of music you want to hear next, because after decades of listening to a wide variety of artists, you feel like you’ve heard every interesting idea that’s out there. Having said that, every time I create a new album, I feel closer to that goal. But maybe that’s just an illusion and I’m chasing a ghost.
Either way, my new album Observer gives me that same feeling. Each track has its own personality, but certain characteristics chain them together. You can think of this record as a continuation of Unresolved from last year. It’s produced in a similar style and takes a different look at some of the same themes and ideas.
Hopefully, Observer tells you an interesting story.
I posed NFM 1.0.1 update last week with a new preset selector feature, that also works inside host applications. I've been trying to maintain the position that AUv3 host apps should provide their own implementation of preset selectors for uniform user experience. But a few weeks ago I was reminded by one of the NFM users that the user interfaces of preset selectors provided by some hosts aren't that great at the moment. Take GarageBand for example, most people don't know how to switch to the built-in preset selector view. And once you get to it, it's just as unintuitive that you need to swipe the preset selector icon left or right to switch the AU presets quickly. Hence the decision to finally bite the bullet and provide my own implementation of it. NS1 will get that feature as well soon.
Also, I've finally completed the NFM User Guide. It is also accessible from within the NFM standalone app. As always, all feedback is welcome.
Lyrics View was the first app I've ever published on the App Store. It was 2010. Over the years it actually increased in popularity amongst the singers. But since I wanted to focus on the music making apps, and I figured someone else would have built a similar app anyway, I stoped updating it and then eventually removed the app from the App Store. This was followed by a lots of tweets and emails from the users asking me to put it back, even if I didn’t intend to update it. So I did. Then iOS 11 beta comes along and drops 32-bit support. Again, the users rose up and requested an update. Initially I hesitated, but eventually I gave in and did a full rewrite of Lyrics View. Here are the details:
This is version 3 of the popular Lyrics View app. It has been fully rewritten from scratch to support all modern iOS devices. It is used by professional and karaoke singers around the world. The clean and minimal interface lets you focus on the song lyrics played by the iOS music app.
Lyrics View can be used in any orientation on iPhone and fully supports iPad multitasking. With the built-in theme picker, you can change the colour scheme, font, text size and alignment for the best experience.
You can easily control the music player and queue songs from within the app.
Note that the app doesn’t come with any lyrics, nor does it download them from the internet. You need to ensure that your music collection is tagged properly. Lyrics View loads lyrics from the song file tags. You can easily edit them by using the iTunes application on your desktop computer. For more information and any support queries please visit the product website.
You can grab the Lyrics View from the App Store.
Introducing NFM, audio unit FM synth for iPad. I original planned to release the app around this time last year, but had to put it on hold for various reasons. But I’m very happy to finally have it out.
This synth consists of 6 stereo operators that can modulate and feedback each other. Each oscillator can be shaped with flexible envelopes and a stereo LFO. All envelopes, including pitch envelope have adjustable curves. To further tweak the sounds you can employ any combination of the included effects: distortion, delay and flanger.
My favourite feature that I personally use a lot is a numeric keypad. It lets you set precise parameter values. Just tap on any parameter value and the keypad will be displayed.
Here are screenshots of NFM:
And some preset demos:
For the past 8 months I’ve been working on my new album – Unresolved and it’s finally here. It starts out with downtempo electronica and works its way up to techno. The album is quite dynamic with every track offering different sonic qualities. Hopefully, each conveying a unique emotion through different rhythmic styles, melodies and instrumentation. You’ll hear distorted analog synth, traditional Chinese instruments, classic drum machines and Indian and African percussion all wrapped up into one.
Sources of ideas and inspirations came from all sorts of places. From sampling screechy kitchen chairs to echoes of tunnels to messing around with music apps on my iPhone during lunchtimes.
I would like to think of this 7-track collection as humanised electronic music, created by capturing imperfect improvisations and randomising various aspects of instruments and notes to prevent the perfection. Also, you will find that most melodies and chord progressions don’t resolve. That’s just what I love doing. So, I think, the title of the album is apt.
You can download or stream Unresolved from Apple Music, iTunes, Spotify, Beatport and SoundCloud.
I still get emails like this from the Easy Drag users:
I stumbled upon your EasyDrag app searching for solutions for my Mac-ruined right arm. After years of dragging and dropping video clips in Final Cut Pro, my hand is in constant pain straight up to my shoulder. Your solution is ingenious, simple, and effective. I just wanted to write and thank you for creating and sharing it. I wish you every success in all your endeavors. Please add me to your mailing list if you have one. Bravo!
Honestly, I always enjoy emails like that. They make me feel like I haven’t wasted my time working on my apps. But at this point I also feel that what Easy Drag offers should really be a macOS accessibility feature. So I decided to a file a bug report to Apple. Apple will be able to integrate this feature into macOS better than any third party utility app can. If you use Easy Drag personally I recommend you do the same. You can reference my bug report 27635897.
This update took a while, but it’s finally here.
- Bluetooth MIDI Support: Advertise or Discover
- Complete iCloud sync code rewrite. It should be more stable now
- Sketch length is no longer limited to 32 bars
- Perfomance optimisations
- Default editing mode is now set to pencil, which makes more sense in most cases
- Optimised for iPad Pro
- UI Enhancements
You can grab MIDI Sketch from the App Store.
NS1 1.0.4 is out today and with various improvements. Notably, I’ve added full accessibility support. I think this is a very important enhancement. I completely agree with an Apple engineer from WWDC16 session 213 who said “We think that the accessibility support is as much a part of your user interface as the artwork is.”
I would like to say big thanks to Louis Smith. He was extremely valuable continually giving me feedback as I was adding accessibility enhancements to NS1.
Full release notes for 1.0.4:
- Accessibility support
- The standalone app now responds to all incoming MIDI note events from all MIDI sources
- The output volume now responds to MIDI CC 7 messages
- Glide now resets correctly after all notes are released
- Internal improvements
You can grab NS1 from the App Store.
If you have any feedback or questions get in touch.
NS1 1.0.3 is out today and it addresses various issues reported by the users. Thanks everyone for positive feedback on NS1. Here's the full release notes:
- MIDI Modulation Wheel now controls the LFO rate
- Updated colour scheme to improve contrast
- Popovers now automatically dismiss after selection is made: oscillator combo, filter type, LFO type and preset selectors
- Bug fix where the Init preset wouldn't load in some hosts
- Internal improvements
You can grab NS1 from the App Store.
I saw a few questions in the comments section of the video and a few people have asked me questions regarding the preset management and Core MIDI. So I thought I would use this post to respond some of those questions/concerns.
Some people thought that NS1 doesn’t work with MIDI. Whilst, the standalone app itself doesn’t respond to MIDI message when NS1 is launched as an AU extension inside a host app like AUM, GarageBand or Cubasis it will of course respond to incoming MIDI messages. I imagine most people would want to use NS1 inside a host app. The standalone app itself is intended to be used to demonstrate the synth capabilities and maybe to create some presets. But if a lot of users end up using it in a standalone mode for one reason or another I will consider adding the Core MIDI support there too.
The way the presets currently work is that you can launch the standalone NS1 app and make some presets inside it. Next time you launch it inside a host you should see the preset that you created as one of the factory presets. You can try this with AUM and GarageBand. While you are inside these hosts you also have ability to save presets. However, these presets are local to the host and can’t be accessed from the other hosts. This is pretty much iOS limitation.
Currently, iOS 9 only allows very limited interaction between a host and an AU when it comes to preset management. The host simply asks AU to provide a flat list of preset names (i.e. no folder structure or any kind of grouping or tagging). Then host can let the user select a preset from this list. The host has no way of telling AU to create and save a new preset to the factory presets. The host can only create its own local ones.
Now, some people have asked me to add preset management as part of the AU extension UI. I have 2 issues with this approach. First, AU already has a very limited space to display knobs and sliders for users to play with. I’m not a fan of crammed interfaces. It makes synth programming harder and less inspiring. The second reason is that I believe interacting with presets should be a uniform experience inside a host. Doesn’t matter what AU I load inside a host I want to have the same experience.
I’ve filed a radar asking Apple to enhance this capability. Please do the same if you want this feature to be enhanced system wide. You can do that at https://bugreport.apple.com/ and reference the radar I filed: 24714202. We all know what the desktop preset management experience is like. Take Logic or Live for instance, they both have nice left hand library browsers. But a lot of plug-ins provide their own custom preset management UI and the presets don’t even appear in these browsers. I’m not a fan of that to say the least. But I understand why some of the plug-in developers have done it. For instance, some of them wanted to add tagging/grouping capabilities etc.
Having said all that, I’m not very stubborn, and if the situation doesn’t improve I’ll add the custom UI for presets to the NS1 extension.
Introducing NS1, a virtual analog subtractive synthesizer audio unit for iOS. This is one of the most exciting apps I’ve ever built, mainly because ever since I got into making electronic music I always wanted build my own synthesizer. They all sounded so cool, but somehow I never got around to properly diving into low level audio programming and digital signal processing. That was the case up until recently. I spent late 2014 and the first half of last year improving my understanding of DSP and how synths are made. And since I believe making music on tablets is the future, I decided to build an Inter-App Audio synth for iPad.
By the end of May I was close to finishing it. I just needed to iron out a few issues. But then WWDC happened and Apple introduced Audio Unit extensions. IAA seemed clunky all along and AU extensions technology seemed like something I’ve been wanting for a long time. So, rather than trying to ship NS1 with IAA I decided to abandon the “deprecated” technology and add the AU extensions support.
NS1 with AU extensions support was ready in December, but I couldn’t release it as I was still waiting for GarageBand and the other AU hosts to appear so I could ensure compatibility.
I expected that there would be a sea of AU extensions and hosts released during the month of October, but iOS 9.0 had a few AU bugs and even Apple didn’t get around to updating GarageBand with AU and iPad Pro support until January. Nevertheless, I’m glad it’s finally here. GB is a great piece of software.
Now, here we are. My first synth is out in the wild and I feel proud. My goal with NS1 was to create a synth with a simple, intuitive and clean interface that can produce great sounds. I hope you enjoy using it. You can learn more about the app here or grab it directly from the App Store.
Let me know if you have any questions or feedback.
I've packaged up all the tracks I created last year into an album. It’s titled ’Lost Seconds’. From Monday you’ll be able to stream it from your favourite music service.
I rebranded the MIDI Editor app to MIDI Sketch. Mainly because MIDI editor means slightly different things to different people and they have certain expectations how it should function. My goal has always been the app to be a musical sketchpad. Therefore, I think, MIDI Sketch is a more apt name for it. As part of the rebranding process I updated the icon as well.
There will be another update or two coming next few months, but with this first update I wanted to add support for new iOS hardware. MIDI Sketch now supports bigger iPhone screens and iPad Pro. In addition, I’ve added home screen actions via 3D Touch that work on iPhone 6S and 6S Plus. You’ll be able to create a new clip or open a recent one.
Also, I fixed a few bugs that were bothering me a while now. This version requires iOS 9.2 or later. The reason I did this is because iOS 9.0 and 9.1 has a bug were MIDI sequencing API doesn’t work, rendering the app useless. I didn’t want customers on older iOS devices to experience this issue. So, I had to do it.
You can grab the app from the App Store. As usual, if you have any feedback don’t hesitate to contact me.
Here's my recent musical output. I hope you enjoy.
I've had this article saved in my reading list for over 3 months now. I finally got around reading it and it's great.
I think music is always pushing forward toward the essential – the history of music is largely a process of reduction, and it is a beautiful process to observe. Listeners are increasingly savvy, so the same old gestures become obsolete, and a composer can telegraph a lot of musical intention with very little actually music.
I always enjoy hearing Gonzales' analysis of music.