Archive for the ‘Uncategorized’ Category

Bleep!BOX released

Tuesday, August 18th, 2009

contact@bleepboxapp.com
www.bleepboxapp.com

White Noise Audio Software Releases iPhone App bleepBOX!, an Analogue Synthesizer / Drum Machine Combo that Fits in Your Pocket

KENNETT SQUARE, PA – August 17, 2009 – The beat box just got pocket sized. bleep!BOX, an analog syth/drum machine debuted in Apple’s iPhone App Store on Saturday, August 15, 2009. bleep!BOX allows users to arrange synthesizer melodies, program drum beats and edit dozens of parameters in real time. Unlike other music apps, bleep!BOX does not limit users with fixed sample sets or pre-made loops. It does not use any samples, only tweakable, analog-style sounds.

Developer Dave Wallin, owner of White Noise Audio Software created bleep!BOX after becoming frustrated with music apps available for the iPhone. “Only two types of music apps were available: simple music toys and music makers. The simple music toys become boring fast and had limited usefulness and the music makers didn’t offer enough options to make a song interesting. bleepBOX! strikes that balance between simplicity and creative potential.”

Similar to the controls on a vintage analog synthesizer, bleep!BOX gives users creative license over waveforms, filters, effects and modulation. It features 50+ parameters and can play up to 10 instruments simultaneously.

“There are a lot of musicians who don’t like using already-made loops,” said Wallin. With bleep!BOX you can program all of your own sounds and make the melodies you want instead of using canned loops or samples. Now users can produce real music on their iPhones.”

bleepBOX!, sold solely in Apple’s app store, costs $9.99 USD and requires iTunes. Click here for the iTunes store link for bleep!BOX.

White Noise Audio Software produces innovative computer based instrument plugins. Founded in 2003, the company is best known for 3 products: Additive, an additive synthesizer, Doppelmangler, a spectral resynthesizer and Zero Vector, a virtual analog synthesizer. bleep!BOX is the company’s first iPhone app. Dave Wallin is the founder and sole proprietor of White Noise Audio Software. www.whitenoiseaudio.com

# # #

Next Project

Thursday, August 6th, 2009

Now that bleep!BOX has been submitted to the app store, I’ve been relaxing a bit and thinking about my next project. Some of my old plugin users have asked when Doppelmangler or Zero Vector will see an update. Honestly, I haven’t touched those plugins for years and some of the code is pretty bad or difficult to maintain (esp. in Doppelmangler’s case). Those plugins were compiled for vst 2.3 and we’re up to 64-bit and vst 3.0 at this point, so some updates are in order. With Doppelmangler, I’ve always wanted to do a full re-write since I’ve never been totally satisfied with the quality of the resynthesis and the amount of CPU it consumes. I’ve actually been brainstorming about how to revamp it for quite a while now.

Zero Vector also presents some challenges. I would love to port all my plugins to the Mac, now that I’ve gotten comfortable with XCode. However, Zero Vector contains massive amounts of SSE assembly code and I’m not sure how well that will port (maybe it will be fine.).

In general, I’ve developed my own audio framework for writing portable modules. This is used in Genome Studio and also in bleep!BOX. I’d like to port both those plugins into the new framework.

Finally, I do want to get back to working on Genome Studio. I’ve put way too much work into it to not finish it (plus I’m getting fairly close to being able to beta test it). Genome will need some more instruments built into it, and I always intended to include some variant of Zero Vector and Doppelmangler. So, maybe now is the time to update those plugins, rebuild them in my new audio framework so they are ready to include in Genome. At the same time I can produce up-to-date plugins for them.

Doppelmangler is the most interesting problem to solve, so I think I’m gonna tackle it first. ZV will be a more straightforward port (though not trivial..). The direction I want to take Doppelmangler is to focus on high quality sample manipulation rather than all the crazy spectral stuff. Warping and modulating sounds is still the focus too (just that DM2 won’t use spectral resynthesis per se). It may be something that is more like specialized granular resynthesis synthesis (not wacky artsy fartsy granular ;). As always the motto is to be able get greater control over your samples and to use them in new and creative ways. More soon - need to do some experiments. ;)

Oh, and I nearly forgot. I have a few updates planned for bleep!BOX. Those will happen first and they will mainly be centered around performance features, patch sharing, and synchronization (read: DSMI - wifi midi).

Transitioning to new bleepbox site

Saturday, June 27th, 2009

I posted some new sound samples over here. Further bleep!BOX updates will occur there from now on. Today I finished up a couple outstanding things and started implementing the new GUI. Hoping to finish most of the GUI stuff tomorrow. It’s looking pretty sweet. :)

Useful objective C libraries

Friday, June 19th, 2009

Possible to develop iPhone apps in Java?

Friday, June 19th, 2009

Link

The above link describes a method for converting Java source code into Objective C using xmlVM. xmlVM sounds pretty interesting, though the site is down at the moment..

BleepBOX! screenshots

Thursday, June 18th, 2009

Here’s a few screenshots of BleepBOX. These are essentially wireframes - I will be implementing the ‘pretty’ version of the GUI this weekend.

Day 4 (screenshots)

Thursday, June 18th, 2009
rssreadercustomcontrol
Here’s a couple screenshots of two ‘learing’ apps I did. The first is an RSS reader, the second is the custom control I mentioned earlier.

Day 4, learning Objective C

Thursday, June 18th, 2009

I completed my custom control yesterday - it’s a simple knob style control. I feel I understand the basics of Core graphics and implementing a UIControl from scratch (including getting touch input, sending a an ‘event’ when someone interacts wwith the control, etc). To reskin an existing UI Control, you would just subclass it  and override any methods you want to change. This may include some of the input methods if you want to control how people interact with it. If you want to change the look/feel then you can override the drawRect method. Core Graphics is very similar to other UI frameworks I’ve used, such as LibNUI, Swing and Juice, so no troubles there.

Today I started working on an RSS reader to learn some more of the specifics about working with the UITableView component, which is probably the most used component of all.

Some more good resources I came across this morning:

Day 2 learning objective C

Tuesday, June 16th, 2009

(for those that don’t know I am taking a week to learn apple’s Objective C. Bleep! BOX (my other iphone app) is written in C++ using LibNUI, so I haven’t had to touch any Objective C so far)

Today I investigated Objective C++. Basically, if you rename your .M files to .MM then you can mix C++ code in with your Objective C code. Seems to work just fine. It’s pretty common to interface with C/C++ libraries from Objective C (several example apps do). If I am ever forced to write iPhone apps that need to use standard GUI widgets then I would probably use regular Objective C for the interface and C++ for all the logic and data. Aside from being easier to work with (for me anyway), I think this will provide better separation between UI code and ‘back end’ code.. A lot of the Iphone examples I’ve seen so far have controllers for specific pages holding onto ‘model’ data. This can lead to architectural problems because there are a lot of cases where you want the two to be seperate and independent. I see the same issue with a lot of Flash code too, since the recommended way of doing things is always to subclass one of the Display classes. I usually find that using singletons for app-wide data is a better choice than attaching your data to a UI specific class.

I am also looking through the rest of the example apps, trying to learn more. A couple that caught my attention are the Wi-Tap app which shows how to do basic TCP connectivity (once again this references C++ code to get the job done), and also the LaunchMe app. Apparently it’s possible to set up a custom URL type to launch an iphone app.. IE, have myappname://www.someurl.com/ open up your app. This would be cool for Bleep! BOX to allow people to browse a bunch of user submitted songs in safari and have the ability to click on one to open it up in the app. Seems very easy to implement.

AccelerometerGraph is the first example I’ve looked at so far that gives a good ‘low level’ look at how to make a UI component that draws itself. It also manually creates UI items which gives a better look at how things work internally. Digging in deeper..

More learnings:

  • @selector is basically a delegate. Use it to call methods in response to actions
  • In terms of reskinning existing objects, you can use Categories to override or add methods on objects without actually subclassing them. Though I’m a little unclear on how this works. Once I’ve made a category, does this apply to all instances of that object or can I choose whether I instantiate the the regular ‘uncategorized’ version of the object or the ‘category’ version?
  • UIView - addSubView is how you add ‘child’ views.
  • Good Info: http://www.iphoneexamples.com/, http://cocoadevcentral.com/d/learn_objectivec/
  • This is interesting. A code only approach to iPhone ui - convert XIB to code: http://kosmaczewski.net/2009/03/17/nib2objc/

I’m starting to write my own Control from scratch. This is how I got started with LibNUI and should be a good way to get started with UIKit.

Thoughts on Objective C

Monday, June 15th, 2009

This is my first day trying to learn Objective C. Here’s my thoughts so far - some of these may be wrong since I am still a newb. ;) Learning a new language is always a bit frustrating at first, so bear with me.

What is it

  • Objective C seems like it started with C, took a few OO concepts from C++ and added manual reference counting memory allocation out of the box. Somewhere along the way, syntax got beaten to death with a hammer, resulting in a strange, unique syntax. This gets a big frowny face from me - almost every modern language shares a similar syntax (Java, C++, C#, Actionscript, Javascript, heck even PHP once you get past the dollar signs) - being different here only makes it hard to learn and there’s no reason it couldn’t have a more C++ or Java like syntax.

What’s weird

  • Why come up with an entirely new syntax and language? Objective C is rumored to be less efficient than C++ and doesn’t seem to offer any benefits. Programmers still have to deal with pointers (in the sense that bad reference counting can still crash your applications). Poor use of reference counting can easily lead to memory leaks. There doesn’t seem to be anything particularly slick or time saving about the language itself.
  • When declaring an interface, why are methods and variables outside of the brackets? Also, it’s not necessary to declare methods as part of the interface? Seems like this kind of defeats the purpose of having an interface.
  • Way of declaring and calling methods (esp methods with parameters) is strange and not very readable..

What’s nice

  • Interface builder is kind of nice.. Ability to click and drag to connect outlets is slick. However, I find myself wondering if I couldn’t do things faster just by creating the interface “by hand” with code. Even simple stuff requires a lot of setup..
  • @property, @synthesize

So far every application I try to write from scratch crashes and burns. Oh well, there’s always tomorrow.