Heel sounds on your shoes

Purple HeelsIn my never-ending quest of looking for fashionable improvements (believe me, it can entertain me for ages 🙂 ) I found out a cute thing about some fancy shoes: they have nice, realistic-sounding, heel-clicking sounds.

Sure, I know it’s a “novelty” item — it scares people off the first time you start nagging them with the clicking sounds, then they begin to make silly comments, so it’s also a great way to break some ice!

In any case, this was one of the many things that I imagined that it would be immensely popular, and that after a few months, every shoe I bought had heel sounds.

Alas, it didn’t happen. Only a few designers give that as an option! Why? I investigated…

Well, what are “clicking heel sounds” anyway? Avatars already do a soft “bumping” sound when they walk on top of prims. This sometimes happens, sometimes not; I have never figured out when these sounds are called or not. It might also depend on the version of SL — like the foot shadows, this could be one of those things that get deleted by mistake on some versions, then appear again later, to disappear mysteriously again on subsequent versions. So, you can’t rely on them.

In any case, although you can change the sounds for “bumping” into items, feet attachments (also known as “prim shoes”) don’t seem to use these library sounds. For some reason. Perhaps they would be too annoying, I don’t know! In any case, the default ones are a “soft bump”, not sexy heel sounds. So… scripting to the rescue!

As I’m not a professional programmer, I hate to “reinvent the wheel”, and looked for something available on the LSL Wiki’s public function/script library. There was nothing there.

Well, this should be something easy to make, and thus also cheap to buy. I looked at the usual places, namely, SL Exchange. What was my surprise to see that the cheapest script doing exactly this costed L$4000! Four thousand Linden dollars! People must be insane! You can get Francis Chung’s incredibly detailed car — thousands of lines of code, awesome prim work, incredible textures — for far less than that!

This shocked me so much — like the “sitting down” modification for flexiprims that I posted earlier, heel clicking sounds should be part of the “default” package of scripts for all clothes/womens designer shoes! — that I rolled up my sleeves, and after a discussion on the Mental Mentors group where Data Linden suggested that this was quite easy to accomplish, it was back to Gwyn’s Lab to throw some lines of code together.

First, the sounds. Observing what happened with one pair of shoes I’ve got, it was clear that you need two sounds: one for walking, and, for added realism, one for stopping (two short heel clicks as the feet come together). I had no patience to do my own sounds (I’m planning to do them soon!), so I just grabbed a sound bit from a public sound library (I used something from the Freesound Project). Since I’m also not a professional sound engineer, this took me way more time to cut just the bits I wanted and filter them out; the results are not good, but recognisable as “heel clicking sounds”. I’ll do better with my own sounds in the future and upload them to the Freesound Project one day 🙂

The next thing was timing the walk. What you need it just to measure how many steps your avatar takes during a normal walk (my not-so-precise calculations using one of my sexy walk anims gave me very roughly 2 steps per second). Then all you need it to run a timer that is called every 0.5 seconds and plays the clicking sound. That’s it!

Ok, so, for added realism, it’s nice to check if you’re avatar is actually walking or not, and also check when you change from “walking” to “standing” so that you can play the “double-heel-clicking” sound. I guess that you could go insane with this and use a “grating sound” when turning around on your heels. Also, to make this work perfectly, you should have two scripts, each running for 1 second, and playing the heel sound for each shoe independently — that would be hyper-realism (sounds are emitted from the place they’re played), and you could even have a sound for the right shoe and the left shoe! That’s all left as an exercise for the reader.

// Gwyneth Llewelyn’s Heel Clicking Sound
key oneClickHeel = "d9297660-23d0-e56c-a740-e36a7354ae8b";  // normal walking
key twoClickHeels = "2944ac79-24d2-5728-1c0a-ac2d47fcaa05"; // when stopping
integer walking = FALSE;    // to check for transition — walk-to-stop
key avatar; // avatar using these shoes

default
{
  state_entry()
  {
    llCollisionSound(oneClickHeel, 0.5);    // it doesn't hurt...
  }

  attach(key avatarID)
  {
    if (avatarID)
    {
      avatar = avatarID;
      // Set up walking timer
      llSetTimerEvent(0.5);   // apparently you take a step every half second
    }
    else
    {
      // NULL means object detached
      llSetTimerEvent(0.0);
    }
  }

  timer()
  {
    // Check if we're walking; if yes, play sound
    if (llGetAgentInfo(avatar) & AGENT_WALKING) // this should catch running, too!
    {
      llPlaySound(oneClickHeel, 0.5);
      walking = TRUE;
    }
    else
    {
      if (walking)    // were we walking and just stopped?
      {
        llPlaySound(twoClickHeels, 0.5);
        walking = FALSE;    // ok, transition finished for this loop.
      }
    }
  }
}

To use it, just drop it into a shoe, detach the shoe, and attach it again! That’s all. If your shoe is non-modify, you can still enjoy the clicking sounds: just attach an invisible prim to your lower leg, adjust it to be as low as you can (so that the sound comes from as near to the shoe as possible), and that should work… for any shoe, even ugly Linden shoes (does anyone still use these??).

I’m actually being a bit pedantic here. You can leave out the llCollisionSound() call if you wish.

So what do you get for L$4000 beyond the above lines of code? Well, for starters, you get better sounds, of course. Probably some are even professionally made by sound engineers. The scripts I’ve seen also allow you to switch between different sound sets (ie. heels on stone, concrete, gravel, wood, etc.) as well as the volume (I’ve opted for a 50% volume by default). But… that’s basically all you get! For L$4000!

I think that’s pretty outrageous, even if you’re paying basically for licensing the sounds done by a professional engineer! If the sounds are an issue, just record them yourself 😛

About Gwyneth Llewelyn

I'm just a virtual girl in a virtual world...

One Pingback/Trackback

  • Don’t be so sure you’ll get higher quality sounds from somewhere else. I spent all of last summer sitting at a desk next to the guy who runs Freesound (we were working on a project together.) He’s fabulous! The users on that site are FANATICS about quality, and are usually pretty good about what they submit. There are some amazing recordings on there (look for the nightingale song) and on top of that, they’re REALLY closely monitored and moderated to ensure that the quality stays high. I can’t say enough good things about them.

    Also – wanted to point out that you can pick up a freebie shoe clicky thing at Nyoko’s (the same place that does the body oil that everyone loves.) Still, it’s great that you took the time to do this, and you never know – someone might want to replace the sounds to sound like they’ve got metal feet or mud squishing between their toes. 🙂

  • My apologies if I was inaccurate on my post. Freesound samples are not low quality; my post-processing with crude, amateur tools is!

    You see, the sound bites at Freesound that include heels also include a lot of background sounds, giving the whole clip an “atmosphere”. My job was to isolate just the bit I needed. This, unfortunately, takes a lot of time, patience, good tools, and skills. I have none!

    If I’d had started with just the clicking heel sounds (without any fancy “background atmosphere sounds”) I’m pretty sure I could get better sounds. Freesound is not to blame — as you pointed out so well, their sound clips are amazingly good!

    Thanks for the tip on Nyoko’s, too! I’ve missed that completely in my (short) searches. I guess I should take a look at those freebie heel sounds, too, and send a note of thanks to the creator 🙂

  • Pingback: The Grid Live » Second Life News for December 4, 2007()

  • Odette Halley

    Hi there, I copied your script and posted it into a script but it came up with this error (31,35): ERROR : Syntax Error and I added it to my shoe but it does do anything. can u help

  • Odette, contact me in-world, I’ll give you a copy that doesn’t give a syntax error…

  • Justus

    Hmm.

    Ok, but your script solution has two major downsides: First of all the original walking sound would still appear and second and way more important: The script is NOT synchronous to your walking! Of course you could syncronize it with the walking animation you use (if you use only one), but that would be no solution for shoe designers or for people with multible walking animations.

    You know, I was doing alot of research and testings with this damn walking sound and simply could not find out anything about it. The original one magically syncronizes with your walking and running animations to perfectly match your footsteps. All I could find out is that it somehow is connected to the original walking animation which starts the sound (overwritten or not).

    So what I expect from L$4000 is a synchronous solution. But I have no idea if they found a solution, I am surely not going to try it out for that price! 🙂

  • Justus

    Pfft

    Seems like all walking sounds are just synchronized with specific animations, so your solution should be as good as they are.

  • Justus, I don’t know what you mean by “the original walking sound”… if you mean the sound made by the prims as they hit another surface, that’s why there is a line with llCollisionSound(oneClickHeel, 0.5); . I actually forgot to say that you should place that line on both shoes (or the other one will theoretically still make some sound).

    In practice, I didn’t hear a difference…

    Now for the synchronisation. That’s indeed the problem. Before we get “physical avatars” (a feature that might or not come out in 2008… the preview of those was done on June 2006 to a very select group of people…), animations are not really “synchronisable”. You see, they run on the SL client, but the server has no clue of knowing when the animations started or what they are doing. There is no way to retrieve, say, the position of a foot and know when to play the appropriate sound. That notion doesn’t exist. For the servers and the physical engine, an avatar is just a “blob” changing overall position, but the servers don’t really have a clue what you’re doing with your hands and feet.

    So one has to work from assumptions. This means measuring how many paces an avatar does per second, using a few more popular animations and a standard avatar height. Give a little margin for the LSL script to run (which also consumes a tiny amount of time), and all you can come up with is an approximation. If someone is claiming to give you one for L$4000, well, what they’re probably including is a default shape and a walking animation, to make sure that the sounds are sync’ed as closely as possible with the movement. Still, sounds take a bit to load properly, as well as the animations, so the first time you teleport to a sim, they might still be out of sync for a while.

  • BTW, for all people who are clueless about the “mysterious syntax error” on the above script, all you need to do is to replace

    &

    with an ampersand (&). Sadly, I can’t get rid of it here on the blog.

  • Joshua Philgarlic

    Hi Gwyneth,

    I don’t know where you looked for heel clicks at SLX, but it seems your investigation wasn’t very systematic. That’s the only possible explanation why you didn’t stumble on MY walk sounds ;-). They are really affordable (50 – 480L$) and they are the best that can be found in SL – I suppose.

    AtmoSPHERE

  • Joshua,

    How things improve in just four months 🙂

  • Akiara Dolls

    that’s somehing i enjoy… being loverly annoying… if peope dislike my shoes claping.. then turn off the speakers.. lol irl i can be more annoying i guess.. but people don’t say anything. ^_^

    Thank you Gwyneth

  • I certainly agree with you hehe… then again, there are people in *RL* who hate the click-click of heels on stone, which drive them to madness, so I guess they like SL, where they can at least turn the sound off…

  • It’s very hard to do a synchronous solution since in practice the scripting layer does not get any information when the heels actually touch the ground: the animation happens on the viewer, not on the server, where the scripts are running… I’d be very wary of any claims of “synchronous sounds”, because they can only offer a “best effort” solution.

  • DashOf PiNKk

    what stores can i actually find heels that have clicking noises..