UITabBarController timing change from OS 2.X to 3.0

June 29th, 2009 § 1

This is just a short note about a change I discovered between iPhone OS 2.x and 3.0. It’s not very interesting or exciting but I thought I’d record it in the off chance that it helps someone else.

When the user switches tabs on a UITabBarController in iPhone OS 2.x, the sequence of events is:

  1. UIView of new tab gets added as a subview
  2. UIView of old tab gets removed
  3. The delegate’s tabBarController:didSelectViewController: method is called

Run the same code on iPhone OS 3.0, however, and the sequence is this:

  1. UIView of new tab gets added as a subview
  2. The delegate’s tabBarController:didSelectViewController: method is called
  3. UIView of old tab gets removed (sometime later, I think it’s invoked via one of NSObject’s performSelector: methods)

This is a inconsequential change for most, but it might make a difference if you are checking the UIViews’ superview variables in your tab bar controller delegate method.

UIImagePickerController cropRect seems to be useless?

June 6th, 2009 § 12

[UPDATE: In iPhone OS 3.0, the cropRect behaves more consistently (even if it's still a little odd), see Stormy Productions' Image Picker Sample, which works perfectly in 3.0. This article only applies to 2.2.1.]

I am using UIImagePickerController to let the user choose an image from their photo library, and allowing image editing (move and scale).

When the user is done moving and scaling, the OS calls my UIImagePickerControllerDelegate’s didFinishPicking method with information about the original image and the cropping rect in editingInfo.
move and scale
One might think that the cropping rectangle returned by the UIImagePickerController would be in the coordinate system of the original UIImage, since that would make the most sense. One would be wrong, however. Based on my own experiments on my iPhone and various threads on Apple message boards, it seems that sometimes the cropping rectangle is based on a 640×480 image (that is: the original photo is first resized to 640×480 pixels, and the cropRect is in the resized image’s coordinate system).

But not always! Screenshots taken on iPhone (using power button + home button), which are 320×480, have a cropRect based on the original image size.

So that’s easy to deal with then, right? Just compare the original image’s size to see if it’s 320×480 or not…

Not so fast. That does not always work. I have on my iPhone some 320×480 images that, when picked with the image picker, return cropRects that are in some weird coordinate system. An unzoomed (1:1) crop returns a width and height of 432×433! That would imply the image is scaled to 432×648 before cropping. Odd!

(Where did these images come from? Both of them were created by other iPhone apps, saving a 320×480 image to the photo library. UPDATE: it seems to happen with JPEGs of certain sizes/proportions. See my comments for sample images.)

Unfortunately, so far I have been unable to distinguish between these two types of 320×480 images in code. Without being able to get reliable info about the coordinate system of the cropping rect, the cropping rect is basically useless. (And no, you can’t just compare the cropRect to see if it’s 432 pixels wide :P Once you scale that picture in the image picker, the width could be anything, still in that weird coordinate system.)

If anyone has any code that reliably deals with all images (including images of arbitrary dimension [e.g 527 x 325] that are saved to the iPhone), at all zoom levels, please let me know :)

Bing search plugin

June 1st, 2009 § 0

UPDATE: Bing now has its own official search plugin. Just click “Add Bing to your browser” at the top-right of the Bing homepage.


Bing, Microsoft’s new search engine, has launched. I am going to try it as my default search engine for the next little while to see how that goes.

Meanwhile, I could not find a Firefox search plugin for Bing, so I made one. I’ve never made a search plugin before, so there are no guarantees! I’ve only tested this on Firefox 3.0.10.

To install it, head on over to my Install Bing Search Plugin page.

BHColourPicker!

May 29th, 2009 § 0

It’s generally usable now, so I’ve decided to release it, warts and all. I’ve created a Google Code project for it, bhcolourpicker, where ‘bh’ stands for ‘bunnyhero’ :)

It’s not particularly well-documented at the moment, but that will (hopefully) change.

Here’s an excerpt from the HowTo page on the project site:

To show the colour picker, use code something like the following:

    //  since it has 'new' in the method name, you own it...
    BHColourPickerController *vc = [BHColourPickerController newColourPickerController];
    vc.delegate = self;                    // the delegate
    vc.colour = self.view.backgroundColor; // the initial colour
    vc.titleText = @"Some kind of title";  // title to display
    [self presentModalViewController:vc animated:YES];
    [vc release];   //  ...and must release it

You must implement the BHColourPickerControllerDelegate protocol in one of your objects. Implement the following two methods (with examples):

- (void)colourPickerControllerDidCancel:(BHColourPickerController *)controller
{
    // the user just cancelled it; put the picker away
    [self dismissModalViewControllerAnimated:YES];
}
 
- (void)colourPickerController:(BHColourPickerController *)controller didFinishPickingColour:(UIColor *)colour
{
    // the user confirmed a colour; do something with it
    self.view.backgroundColor = colour;
    // and put the picker away
    [self dismissModalViewControllerAnimated:YES];
}

I’ve released it under a New BSD Licence. Share and enjoy!

Colour picker in progress

May 23rd, 2009 § 1

This isn’t quite done yet, but I am working on a colour picker for iPhone. I plan to release it under the MIT Licence when I’m ready. I’m fairly shy about open-sourcing my code, I’m always embarrassed about the quality…

Till then, here’s a screenshot:
iPhone colour picker

Note to myself: OpenGL gotchas

May 10th, 2009 § 0

Not so much “gotchas” as “got-me”s, probably. It’s been so long since I’ve done any significant OpenGL coding that I keep forgetting little things that result in a blank screen or a white texture :) Anyway, I thought I’d record them here to remind myself.

Note that I’m currently using OpenGL for 2D drawing.

  • Set glTexParameter for GL_TEXTURE_MIN_FILTER to something like GL_LINEAR before calling glTexture2D. The default value for GL_TEXTURE_MIN_FILTER is GL_NEAREST_MIPMAP_LINEAR, and if you’re not using mipmaps, the texture won’t draw!
  • I forgot that glOrtho manipulates the current matrix. Which means that if you don’t call glLoadIdentity beforehand you might not be getting the projection matrix you were hoping for!
  • This one was particularly boneheaded :P Make sure that the type parameter in glTexCoordPointer is actually the same type as the array! As in, if you pass in a pointer to an array of floats, make sure that the type parameter is set to GL_FLOAT. I blame this one on copy/pasting without paying enough attention.

Well that’s enough embarrassment for today. And I also just found this article: Avoiding 16 Common OpenGL Pitfalls, which looks useful…

EDIT: Just needed to mention another oversight that had me scratching my head for a while when things weren’t rendering as expected. Note the difference between the GL constants GL_TEXTURE and GL_TEXTURE_2D! Use the former for the parameter to glMatrixMode. Use the latter for enabling/disable texturing with glEnable/glDisable!

Too many monkeys! A newbie lesson about viewDidLoad:

March 23rd, 2009 § 0

I recently learned another important newbie lesson about viewDidLoad: : it may be called multiple times during your application’s lifetime for any given UIViewController if its view is ever hidden and shown during low-memory situations.

Here’s the story: I am currently making a monkey app which features a single monkey. It was running fine in the simulator, but sometimes when I ran it on the device, an extra monkey was spawned every time I switched between the main view and the settings view! A couple of view switches and I’d have a bunch of monkeys onscreen, which was amusing but also very slow and not what was intended. Who was making the new monkeys?

My first iPhone test apps did a lot of initialization in viewDidLoad:. It makes sense because it is called right after a view has finished loading from its nib, and it feels like a good time to do your final initialization of things since the system has basically done everything it needs to do to display a window.

What I forgot was that the default behaviour of UIViewController didReceiveMemoryWarning is to release its view if it’s currently hidden (due to navigation, say). All well and good. But when the view becomes visible again, the view will be reloaded from its nib, and viewDidLoad: will be called again.

This is why I kept getting new monkeys: I was making the monkey in my MainViewController’s viewDidLoad:. When I switched to the settings view when memory was short, the MainViewController purged its view. Switching back to the main view caused the MainViewController to reload the view from the nib, thus calling viewDidLoad: again, and thus creating another monkey.

So, any initialization code that goes into viewDidLoad: should make sense in that situation: i.e. view-specific stuff when recreating the UIView object, not application-level initialization stuff. Or, if your app-level initialization stuff needs a view to be loaded before running, then at least check to make sure that it hasn’t run already.

iPhone newbie lessons

March 20th, 2009 § 0

It’s been a long time since I messed around with Objective-C, even a little bit.

A couple of things that have bitten me lately:

  • @selector(apply:) is different than @selector(apply)! Note the lack of a colon in the second one. The colon means that there is one parameter to be passed with the message. No colon, no parameter. This makes a big difference when passing a selector as an argument to something like NSArray makeObjectsPerformSelector:.
  • I keep forgetting to pass nil as the terminating argument to methods like NSArray initWithObjects:. Forgetting the terminating nil will cause the iPhone to crash with a Bad Access exception as it runs off the end of the stack into the weeds.

And one very valuable debugging tip I found here:
how to find out what exception was thrown in the Xcode debugger. When an uncaught exception kills your iPhone app, Xcode doesn’t really have much information at that point. To remedy that, go to Run -> Show -> Breakpoints and in the Breakpoints window double-click on the entry that says “Double-Click for Symbol.” Enter “objc_exception_throw” and press Return. Now, when you run your app in the debugger, any exception will stop there and let you see the exception type.

Beginning iPhone development

March 13th, 2009 § 0

I’ve just started to develop for the iPhone. I have the SDK and have joined the developer program. The last time I did any Objective-C was about 8 years ago, and that was just dabbling, too.

I will probably try to port one or two of my pets over to the iPhone, although the audience for iPhone apps is probably a lot different than the audience for MySpace Flash widgets (then again, with the prevalence of Fart apps on the iPhone app store, who knows?). Regardless, I’m hoping it will still be a good exercise.

Rename an element across all frames of a timeline

February 27th, 2009 § 0

I use a combination of timeline animation and scripting-based movement. All too often, I will create a timeline animation and only later realize that I need to give a MovieClip (or MovieClips) a name so I can refer to it from a script. Of course, this only happens after I’ve already created a zillion keyframes, and going through the entire animation to make sure that each MovieClip has its proper name in each keyframe is a real pain.

I finally got around to creating a simple JSFL script to automate this. It’s nothing special and it doesn’t do much error-checking or anything, but I thought I’d share it regardless in case it helps someone else :)

Copy and paste the following code into a file with the extension “.jsfl” (for example, “Multiframe renamer.jsfl”). Save the file in the appropriate folder, based on your platform:

  • Windows Vista™:
    boot drive\Users\username\Local Settings\Application Data\Adobe\Flash CS3\language\Configuration\Commands\
  • Windows® XP:
    boot drive\Documents and Settings\username\Local Settings\Application Data\Adobe\Flash CS3\language\Configuration\Commands\
  • Mac OS® X:
    Macintosh HD/Users/username/Library/Application Support/Adobe/Flash CS3/language/Configuration/Commands/

and restart Flash.

Then, in your document, select the element you want to be renamed across all frames. The go to the “Commands” menu and choose “Multiframe renamer”. You will be prompted to enter a name for the element (press “Cancel” to abort), and it will go and rename that element across all keyframes in that layer.

No warranty, use at your own risk, etc., but feel free to share and improve on it :)

/* multiframe renamer */
 
go();
 
 
function go()
{
    if ( ! fl.getDocumentDOM() || fl.getDocumentDOM().selection.length == 0) {
        alert("Please select an element");
        return false;
    }
    var element = fl.getDocumentDOM().selection[0];
    //  use the element's current name as the default
    var name = prompt("New name for elements on this layer?", element.name);
    if (name == null) {
        alert("Cancelled by user");
        return false;
    }
 
    var timeline = fl.getDocumentDOM().getTimeline();
 
    //  find the layer from the selection
    var layer = element.layer;
 
    //  all frames in this layer... rename first element to the name
    for (var i = 0; i < layer.frames.length; i++) {
        if (layer.frames[i].startFrame == i) {
            if (layer.frames[i].elements && layer.frames[i].elements.length > 0) {
                layer.frames[i].elements[0].name = name;
            }
        }
    }
 
    alert("Done!")
    return true;
}
  • drag racing ringtones
  • midi search engine
  • free ring tone
  • free realtones
  • free real music ringtones
  • star trek ring tones
  • buy ringtones
  • ringtone downloads
  • ringtones for samsung phones
  • free mp3 to midi converter
  • mid american energy
  • answer tones
  • top rated mid range slr cameras
  • bumblebee ring tones
  • t-mobile ring tones
  • melody beattie
  • ott lights
  • free midi downloads
  • ringtone creator for the lg-vx9700 dare
  • generateur mot cle
  • ringtone creators download free
  • one missed call ringtone
  • talking ringtones
  • lg dare ringtone maker
  • free download ringtones
  • steely dan ringtone
  • mid south shooters supply
  • free ringtones for verizon phones
  • zelda secret midi file
  • mid continent public library
  • midi downloads
  • bi mmf
  • gloria estefan ringtones
  • story telling midi
  • free ringtones for lg
  • midi converter
  • ring back tones
  • create and download free ringtones
  • midi salty dog rag
  • polyphonic
  • downloadable free ringtones
  • free ringtones for verizon customers
  • midi keyboard
  • mmf wife
  • christmas midis
  • free real tones
  • free ringtones for cellular phones
  • emploi mot cle
  • croisieres canal midi
  • mid atlantic consolidated patient account center
  • free siemens ringtones
  • counter melody silent night
  • free midi to wav converter software
  • make ringtones
  • mel ott amerst ny
  • merrell mens mid radius hiking boots
  • free midi music
  • mel ott autograph
  • free ringtones for nokia 5165
  • download ringtone
  • mmf galleries
  • cellphone ringtones
  • star trek ringtones
  • vertu sandpiper ringtone
  • free composer tones for nokia
  • blondie heart of glass midi
  • bad things midi true blood
  • elvis presley music ringtones
  • mid america bank
  • mid america motor works
  • mot uk
  • free ringtones for t-mobile
  • rihanna s o s midi
  • piano midi
  • motorola v60 ringtones
  • nokia 3360 free ringtones
  • sidekick 3 ringtones
  • aaa mid atlantic
  • canal du midi
  • realtones
  • animal ringtones
  • free ringtones for virgin mobile
  • create mp3 ringtones for lg decoy
  • virgin mobile ringtones
  • melody green
  • eric clapton mid range boost
  • melody carlson
  • ringtones for us cellular phones
  • bisexual mmf
  • free verizon wireless ringtones
  • free ring tones for verizon
  • nagging phone ringtone
  • ringtones for iphone
  • free ringtones for nokia phones
  • mp3 to ringtone
  • self preservation society midi
  • free mmf thumbnails
  • create lg verizon ringtones
  • verizon wireless ringback tones
  • free motorola tones
  • mp3 to midi file converter
  • free ringtone software
  • nextel ring tones
  • verizon free ringtones
  • call tones
  • melody gardot
  • compare the meerkat ringtone
  • who let the dogs out ringtone
  • mid suffolk district council
  • free tones
  • gibson melody maker
  • mid missouri credit union
  • iphone ringtone maker
  • free ringtones online
  • marillion midi files
  • freeware midi
  • free mosquito ringtone
  • mid america center
  • college fight song ringtones
  • mid life career change
  • old time midi
  • free ringtones for lg phones
  • free sidekick ringtones
  • samsung polyphonic ringtones
  • dj midi controller
  • 2009 mid winter bald eagle survey
  • how to download ringtones
  • video game midi
  • cow ringtones
  • dailymotion merrie melodies
  • midi interface
  • making ringtones for samsung a230
  • mid continent library
  • mid american conference
  • ringback tones free
  • mid michigan community college
  • free ringtones for verizon wireless users
  • free composer ringtones
  • ringtones for nextel
  • create your own ringtones
  • free polyphonic ringtones samsung
  • free call tones
  • mid century modern design
  • midi italian job
  • midi file
  • keypress ringtones
  • islands in the stream midi
  • mosquito ringtones
  • free t-mobile ringtones
  • free ring tone downloads
  • usa motorola v60i ringtones
  • mid back office chair
  • mid west camping
  • free country ringtones
  • how to make ringtones
  • country midi
  • mid suffolk district council planning pages
  • midi drum patterns
  • wolfe tones torrent
  • free real tone downloads
  • free sweet beulah land midi
  • midi karaoke
  • taxi driver midi
  • composer ringtones for motorola
  • harvest moon magical melody strategy guide
  • destroy all humans ringtones
  • motorola ringtone
  • mot cle rechercher
  • bluetooth ringtones
  • motorola ring tones
  • myxer ringtones
  • one click ringtone converter 1.2
  • country ringtones
  • m9 atx gaming mid tower
  • mids hero designer
  • ringtones for blackberry
  • emergency one ringtone
  • phone ringtones
  • senza perdono midi
  • midi player
  • one click ringtone converter
  • bumblebee ringtones
  • motorola v60 free ringtones
  • free ringtone maker download
  • get free ringtones
  • vx8350 free ring tones
  • gunnys ringtones
  • midi slumber my darling
  • free mp3 ringtone message
  • free kyocera ringtones
  • mel ott
  • mot cle
  • single ringtones purchase
  • obnoxious ringtone
  • motorola ringing tones
  • mid city stoners street gang
  • marine corp ringtones
  • kyocera rave ringtones
  • samsing u340 ringtones
  • ringbacks
  • mid america ghost hunters
  • britney spears my prerogative midi
  • dtmf abcd tones
  • metropcs ringtones
  • mr tones
  • free ringtones download
  • free ringtone download
  • classement mot cle
  • alltel ringbacks
  • free nokia 3390 ringtones
  • unsung heroes midi
  • free gloria estefan ringtones
  • free mp3 ringtones for cricket
  • mid valley high school
  • sniper ringtones
  • create your own ringtone
  • the polyphonic spree
  • gospel midi
  • sniper ring tones
  • mmf threesome
  • free verizon ring tones
  • listen to ring back tones
  • midi to mp3
  • create free ringtones
  • monkees midi
  • youtube to midi
  • mid back pain
  • palm treo ringtones
  • lds ring tones
  • midi hits
  • ringtones for verizon phones
  • heavenly midis
  • wildlife ring tones
  • rachel ott
  • wow ringtones
  • mid century furniture
  • mp3 ringtones for lg decoy
  • bucherer alacria midi
  • the munsters ringtone
  • downloadable ringtones
  • nokia christmas ringtones
  • alesis hd sr-18 midi implementation
  • mid york library
  • kondo silent melodies
  • lion sleeps tonight realtone
  • melody thomas scott
  • what is midi
  • create ring tones
  • free ringtones downloads
  • wma to midi converter
  • pen source midi sequencers
  • free sprint ringer tones
  • free ringtones for tracfones
  • dr who ringtone
  • playing melodies on guitar
  • polyphonic ringtone
  • naruto ringtones
  • gentleman start your engines ringtones
  • hillbilly ringtone
  • free harry potter ringtones
  • midi controller
  • old time piano midi
  • playing harmony melodies on guitar
  • us cellular ring tones
  • mid state fair
  • vzw tones
  • 24 ringtones
  • melody inn branson motels mo
  • mot cle promotion
  • midi sequencer
  • amr to mp3 converter online
  • mid ocean ridge
  • movie ringtones s
  • att ring tones
  • free samsung tones
  • motorola tracfone ringtones
  • fart to ringtone video
  • melody gaschler
  • vlc recompiled version amr
  • easily distracted in mid thought
  • melody anderson
  • mid ohio raceway
  • free cingular ringtones usa
  • boobatooba melody
  • ring tone maker
  • mot cle ici
  • 2pac ringtones
  • callback tones
  • free nokia phone tones
  • traduction mots
  • mot cle enchere
  • mmf industries
  • classical ringtones
  • my funny valentine midi
  • liste mot cle
  • mid century front yard
  • hello goodbye ringtone
  • bon mot
  • great big sea ringtones
  • blues midi
  • mid south
  • free sanyo ringtones logos
  • lg decoy ringtones
  • free wavs ringtones
  • fre ringtones
  • harvest moon magical melody walkthrough
  • rascal flatts ringtones
  • melody jewell
  • free ringtones for my phone
  • halloween midis
  • ringtones for cell phones
  • mmf bi stories
  • achat de mot cle
  • accentuation mot cle
  • sprint ring back tones
  • high pitched ringtone iphone free
  • gordon lightfoot ringtones
  • melody melons
  • wwe ringtones
  • really free ringtones
  • black metal ringtones
  • download ring tone
  • country midi files
  • go cubs go ringtone
  • sprint ringtones back in black
  • mmf threesomes
  • free ringtones sent to your phone
  • crazy frog ringtones
  • mid america truck show
  • guitar midi files
  • free sidekick 3 ringtones
  • blackberry ring tones
  • california mid state fair
  • our man flint ringtone
  • alltel ring tones
  • midi toy trumpet
  • aqua hotel bertran lloret de amr
  • sony ericsson ringtone program maker
  • fresh air midi quicksilver
  • judge dredd midi
  • free answer tones
  • mp3 to midi converter freeware
  • counter melody for silent night
  • leupold mid range tactical scope
  • t mobile ringtones
  • free ringtones for iphone
  • mid ohio sports car course
  • funeral march midi
  • download cingular ringtones
  • siren ringtone
  • taper mot cle
  • referencement mot cle
  • natasha bedingfield unwritten ringtone
  • sms polyphonic ringtones
  • tapez mot cle
  • download ringtones motorola v90
  • we are the champions melody
  • motorola 120c ringtones
  • happy birthday midi
  • s club 7 natural midi
  • mid evil times
  • free boost mobile ringtones
  • phone ring tones
  • osu beavers ringtones
  • lindsey v ott
  • robert ott secret service
  • jason ellis ringtones
  • free ringtones for sprint phones
  • free nokia 5125 ringtones
  • glen campbell midis
  • free ringtones sent as text messages
  • mid south shooters
  • mmf bi
  • make my own ringtones
  • choix mot cle
  • fred ott knives
  • southern gospel midis
  • miscela mid woods
  • free polyphonic lion sleeps tonight
  • free ringtone websites
  • mid wav music
  • verizon cellular free ringtones
  • convert mp3 to mid
  • free ringbacks
  • blackberry 7520 ringtones
  • free ringtones for blackberry
  • i tones
  • mid face lift
  • free metropcs ringtones
  • midi on the road again
  • mixer tones
  • making ringtones
  • qcp converter
  • mid rise jeans with 36 inseam
  • free gospel ringtones
  • sprint pcs ringtones
  • melody rappaport
  • planet earth midi file
  • free nokia ringtone
  • bad to the bone ringtone
  • melody thomas
  • maddie ott
  • the black bear bagpipe midi music
  • net10 ringtones
  • free ringtones for metro pcs
  • melody spetko
  • crank movie ringtone
  • nokia ringtone maker
  • free ringtones for nokia
  • midi cables
  • wallasey mot center
  • vzw tones deluxe
  • 24 ring tones
  • free true tones
  • free true tones downloads
  • cellular one ringtones
  • free downloadable nokia ringtones
  • free samsung t100 ringtones
  • make free ringtones
  • mid atlantic region
  • comedy ringtones
  • scotty doesnt know ringtone
  • tmobile ringtones
  • free polyphonic ringtone
  • send free ringtones
  • melody grayson power rangers
  • ringtone program
  • midi files free download
  • mid wales football league
  • keen targhee ii mid
  • free monophonic ringtones
  • free cellular south ringtones
  • bobby mcferrin pink panther ringtone
  • nokia composer tones
  • custom ringtones
  • polyphonic ringtone converter
  • free tones for motorola
  • free midi software
  • make your own ring tones
  • free message alert tones
  • free cell phone ringtone mp3
  • mid sussex times
  • download free mp3 ringtone
  • make your own ringtones itunes
  • ringtone jukebox
  • free bisexual mmf
  • musical harmonic melody
  • suivi site position mot cle
  • imelody
  • the lion sleeps tonight midi
  • free mp3 ringtone
  • bollywood ringtones
  • mot guzzi 1100 ev
  • christian midi files
  • melody ainsworth
  • verizon polyphonic ringtones
  • mid size suv
  • search for ringtones
  • alltell ringtones
  • funny ring tones
  • mid atlantic triple a
  • motorola 120c free ringtones
  • the wolfe tones
  • good bad and ugly ringtone
  • download christmas ringtones
  • free ringtones preview them before buying
  • melody tent
  • creating ringtones
  • monday night football ringtone
  • gloria estefan ring tones
  • shop ringtones
  • free ringtones for sprint
  • overshadowed midi
  • ringtone freeware
  • hare house midi loops
  • melody love
  • free downloadable polyphonic ringtones
  • mid mark 411
  • convert to midi
  • midi download
  • cool ringtones
  • gospel midis
  • mid century
  • ott lite bulbs
  • midi paino
  • mid 2 wav
  • mid rivers mall
  • moteur recherche mot cle
  • sex and the city ringtone
  • zelda midis
  • free net10 ringtones
  • mid american credit union
  • free sprint ring tones
  • the merry widow waltz midi
  • one free ringtone
  • free no catch ringtones
  • free caller tones
  • mp3 to ringtone gold 5.23
  • kenzo suzuki ringtone
  • motorola q ringtones
  • marvin gaye midi
  • ringtone download
  • yamaha guitar shaped midi controller
  • ringtones for the iphone
  • teen rock ringtones
  • midi largo symphony 9
  • verizon music ringtones
  • sample tones for line 6 flextone
  • 120c motorola ringtones
  • midi and usb and sound module
  • send ringtones to your mobile text
  • mid atlantic golf
  • palm treo 600 ringtones
  • convert midi to wav
  • melody gardot live
  • merrie melodies
  • anime ringtones
  • amr converter
  • mac dre ringtones
  • ringtone verizon
  • free ringtone sites
  • nickelback ringtones
  • free nextel ringtone wallpaper
  • melody waugh
  • king of the hill theme ringtone
  • mid length hair styles
  • download midi files
  • siren ringtones
  • mid atlantic ridge
  • midi keyboards
  • mid sussex district council
  • heidi ott 18 dolls
  • verizon ringtone
  • how to put ringtones on iphone
  • long periods mid twenties
  • amr modesto
  • halo ringtones
  • melody gardot live at jazz alley
  • sample tones for flextone 111
  • mid wes ammunition
  • mid atlantic rift zones
  • midi production
  • dixieland ringtone
  • the ventures midi
  • midi doesnt auto loop
  • aerospace engineering mid career student
  • flintstones anniversary mp3 wav wmv mid
  • koodo ringtones
  • download free ringtone
  • befour magic melody