ToneDef $ells Out

  Release 6 of ToneDef.

I lied.  I admit it.

I mentioned that the ad I inserted in R4/R5 was just going to be on the front page of the app.

I really did intend for it to stay that way, but the reaction to the additional permissions required to do that, in addition to it’s ability to read contact information, frankly, put me in a strange position.

On one hand, I wanted that damned ad in there.  On the other hand, I really wanted people to be happy.

So, instead of just shrugging it off, I split the ToneDef project into both an ad-supported version, and a paid version.

You can live life on the edge and suffer the horror, fear, and uncertainty that go along with using an app from a stranger that asks you to let it both read your contact list, and connect to the internet, or…

…for (“the low low price of”) $1.99 you can completely ditch the ads and enjoy ToneDef just like you used to before I sold out to the man.

But wait… what’s this?  More to come…tomorrow…?!  Yikes!

ToneDef R4! (Actually R5, but that’s just a bug fix.)

I did something good, something arguably neutral, and something unforgivably bad for Release 4 of ToneDef.

First, the good: I rewrote the audio routines.  Again.  This time, they are much more flexible, and much more importantly: stable.  On top of that, it’s now rather trivial to generate whatever multi-tone sequence I want… like, for example, a busy signal.  In fact, I went nuts and added a whole new section to ToneDef called, simply, “Extras“.  Inside, you’ll find a whole bunch of dialtones, busy signals, and ringback tones from the US and Europe.  I’ll certainly add more as I go along, but this was just me showing off. ;)

For the neutral, I added a front page to ToneDef.  From there you can access the DTMF dialer, bluebox, and redbox tones, and also the new Extras page and settings.  Everything else still works the same, though you might find it a bit more colorful.  (Especially on Android 3.0+ devices.)  Whether you like these additions, well, is up to your individual taste.

For the bad… ooh it’s a doozy… on that new front page, I added a tiny AdMob advertisement.  It only appears on the front page; it is not shown anywhere else in the app, and will not interfere with the actual dialer functions.

Unfortunately doing that meant requiring a couple permissions (ACCESS_NETWORK_STATE and INTERNET, specifically) so the AdMob object could reach out and snatch an ad.  That coupled with the existing READ_CONTACTS permission has led at least one person to be completely convinced that I’m sending Google all of your personal information:

Being a paranoid sort of soul, myself, I understand the fear.  But let me be very clear:

READ_CONTACTS is only used for selecting a contact to dial from inside the DTMF dialer.

ACCESS_NETWORK_STATE and INTERNET are only used for loading an ad off the AdMob servers.

If there is interest in an ad-free version of the app, I can easily make that happen.  I have some ideas for future versions that might make that a reasonable avenue.

ToneDef R3

For a while now I’ve been pretty dissatisfied with how ToneDef works.  I created a bank of just under 40 .ogg sounds corresponding to the DTMF, BlueBox, and various coin tones the program can make.  Doing it this way is easier, sure, but it feels wrong.  And the way I had it implemented meant every touch of the keypad would be for a fixed duration, instead of playing continuously while you press, like a real keypad.

Since I’d never worked with raw PCM audio before, I wasn’t really prepared to convert the app over to dynamically-generated audio.  That is, until last night.  I got it mostly figured out, and went about removing every audio file in the application, completely replaced with shiny new dual-tone software audio generators.  Quite happy with how it turned out.  As a result, the program is down from almost 400k to just over 100k.  And now, not only can you hold down the touch tone buttons until your ears bleed, but you can control the duration of the tones (not just the spaces between them) from the preferences page.

So, let me know how R3 works for you.  I’m a bit concerned I might have broken the app for some users, so make sure you let me know if it’s not working for you.  This was new territory for me.  I expect tears!

[Download]

Oh, I almost forgot.  It’s very irritating for me not to be able to respond to the problems brought up by users in the app reviews on the Marketplace, so I’ll leave it here and hope it’s seen:

Sparkit! Sorry about ToneDef being the cause of your problem with your project, the changes I made in R3 might help you out a bit since I rewrote a good chunk of that code with a better implementation.  Contact me if it doesn’t help.

For Your Headache Needs

You know you’re going to lose them.

Or your dog will eat them.

Or an angry god will descend from the sky and burn them while they’re in your pants.

That’s right, I can only be referring to those little augmented reality cards that come with the Nintendo 3DS.  I knew immediately that I would have them for, at most, a month before losing the first one.  The others would follow suit before the year would end.

So, I wondered if I could get away with simply taking a snapshot of the cards.  Would the AR recognition kick in properly on a backlit LCD display?  Indeed it can.  So, I hurried and wrote a quick app to encapsulate all six of the cards into a small Android application.

As I was readying the app, it occurred to me that these cards each carry the registered trademarks of Nintendo.  Mario, Samus, Link, and the rest feature very prominently on the cards.  If the app was just for me, who’d care, right?  But if it’s up on the Android Market, there’s a possibility that Nintendo will have woken up on the wrong side of the bed that morning and petition to have the application yanked from the Market.

That simply would not do.

So, I did some experiments.   AR markers tend to use a small subset of visual cues on the card to get orientation and other data from the camera.  I decided to take off as much from the card before the AR routine would no longer recognize it.  How much could I discard from the image?  A lot:

Each of the other cards were just as simple, though a couple required a bit more information in the image before they stabilized.  Samus being the most difficult one, but I’m working on better figuring her card out.

I didn’t bother checking the Market for similar apps  before writing this — as I progressed, I had no doubt a dozen other people tried this already, but I was itching for a project to do.  Turns out there’s only one other 3DS AR card app on the Market at the moment.  You might like that one better, it has the original card artwork, and you can scale the size of the card, but it’s significantly larger at 663k (Spare Deck is just under 50k) and is apparently ad-supported.

Hope this is useful to somebody, and try not to stare at the screen too long.  I think my friggin’ eyes are going cross.

ToneDef v2

Spent all night working on this new release… added extended DTMF, red box, and blue box tones!

Also, you can use a ‘short pause’ in the dialer string (“555,1212″ – inserts a small pause in the dialing, at the comma).

Settings can be configured in the new preferences menu.

The Android Market is being very slow at updating the web page version of the details, but it looks like the Market app on Android devices seems to be current.  Beware!

User Comment of the Day: “This sux. All it is, is a phone keypad that makes noise.” Good ear, James.  Now go play some Counterstrike and free them hostages!

I am suddenly ToneDef, and so are you.

Long story short: random situation popped up where I needed a DTMF tone dialer.

Thinking fast, I ran to the Android Market… surely there would be heaps of good tone dialers pawning at the window like puppies begging to go home.

Alas, the couple puppies I played with were either limping, rather dirty, or worse: pugs.

While I survived the ‘random situation’ through alternate means, a couple days later I decided to scour the Market for the rest of the dialers (free ones, only) and see if there was one that I could adopt… the results were disappointing.

I gave it five minutes and slammed my fist down on the desk, screaming: “I WILL MAKE MY OWN PUPPY!  ER…DIALER.”

So, from 11pm to 5am I gestated and ultimately squeezed out…ToneDef!

Okay, it’s not much better than what’s out there, but it’s a start.

And, hey, if there’s any features you’d like added to it, feel free to drop me a line and I’ll do what I can.  I plan to add the extended DTMF tones (A/B/C/D), support for delays (“;”) in the dialer string, and some of the more historic phreaker tones (not that you can use them nowadays, but hey, it’s tradition).

Electronica 17

Or not. [Re: previous update]

So, due to some bad luck in November, and some good luck in December and January, Electronica got pushed aside.

Employment stresses aside, now seems like a good a time as any to revisit the Android universe!

New in this years update, is a lonely new chart for PS/2 keyboard scancodes.

And, because I’m in such a great mood, you’ll no longer be asked about Jesus, or be told just how close SexyTammy298 is to your location.  That’s right, Electronica is no longer ad-sponsored.  Goodbye, advertising!  I also yanked out the Google Analytics code.  This should all make the app a tiny bit faster, and get rid of some bloat.

And hey, have you seen the new Android Marketplace website?  It’s great!

More time…

Looks like I’ll have a lot more time to devote to these projects. More as it develops.

Teach that lazy coder a lesson he won’t soon forget!

Irritated by the lethargic pace of Electronica updates? Frustrated by that one piece of missing data that would actually make the program useful?

Now you can do something about it!

If you know how to edit HTML and, perhaps, work some image editing, you can create your very own reference document for inclusion into future releases of the app.

Here’s the details. Make sure you read the guidelines and, especially, the ‘fine print’… or it may cost you… your soul.

Hey, stranger!

Been a while since I’ve updated.  Electronica hasn’t been abandoned; I’ve simply had other vegetables in my garden, so I haven’t been able to tend to it.  Meanwhile, a surprisingly similar app, ElectroDroid has sprung up, if your patience has run out. ;)

So what sorts of foodstuffs have I been tending to, if not that?  Well, my very sudden and rather deep addiction to Minecraft has left me very much interested in Java and OpenGL.  The idea of a Minecraft world viewer (not one you can play, but merely view) for Android has perked my interest… and also revealed how woefully unprepared I am for such a feat.  So naturally I’m crash-coursing myself with the required skills, one of which I’m missing is apparently common sense.

And on top of that, I’ve forked off on a second coding tangent.  I recently acquired a $59 Roku HD digital video player.  I can’t recommend it enough: very slick little device.  But what I didn’t know, when I bought it, was that they’ve opened up their SDK so anyone can code for it, and develop their own custom channels.  Unfortunately it’s not based on Java, or Lua, or even C, it’s… a form of VBScript.  Seriously.  Anyway, the SDK documentation is pretty good, but it’s kind of a bumpy road to get started.  I’m considering writing a quick article with what you’ll need to get going as a newbie.  Once you get the kinks worked out, it’s actually kinda fun:

Electronica R10

Added a new subsection, Video, and it’s first resident: HDMI (Type A and B).

Lost a bit of time trying to draw my own HDMI cable graphic instead of pinching the SVG off Wikipedia. It was coming along fine. Then Photoshop decided it hated what I’d drawn and promptly crashed. I was less than thrilled. So, more leaning on Wikipedia for a crutch. :(

Electronica r8

Quick note: just shoved another version of Electronica out the airlock. Added XLR3 and a new ‘audio’ category.

UPDATE: Scratch that: v9 is out there now; I inadvertently broke the new 555 page in my attempts at reorganizing the source code. Doh. Fixed. :P