I needed a 'loop' function for my Sounds as well as pause and unPause functions.

So here:

plugin
ig.module(
	'plugins.afflicto.sound'
)
.requires(
	'impact.sound'
)
.defines(function(){ "use strict";

	ig.Sound.inject({
		playCount: 0,

		setVolume: function(volume) {
			this.volume = volume;
			if (this.currentClip) {
				this.currentClip.volume = ig.soundManager.volume * this.volume;
			}
		},
		
		play: function() {
			if( !ig.Sound.enabled ) {
				return;
			}
			
			this.playCount++;
			this.currentClip = ig.soundManager.get( this.path );
			this.currentClip.volume = ig.soundManager.volume * this.volume;
			this.currentClip.play();
		},

		continue: function() {
			if (this.currentClip) {
				if (this.currentClip.currentTime < this.currentClip.duration) {
					this.currentClip.play();
				}else {
					this.play();
				}
			}else {
				this.play();
			}
		},
		
		pause: function() {
			if (this.currentClip) {
				this.currentClip.pause();
			}
		},

		unPause: function() {
			if (this.currentClip) {
				this.currentClip.play();
			}
		},
	});

});

To use it, simply
1: copy the above plugin code and paste it in 'lib/plugins/afflicto/sound.js'.
2: add 'plugins.afflicto.sound' to your main.js requires() block.

Then, if you have an entity that has a footsteps sound.. you could do something like this:

Example
EntityPlayer = ig.Entity.extend({
	footsteps: new ig.Sound('path/to/footsteps.*'),
	update: function() {
		if (this.isWalking) {
			//you can do unPause here,
			//but continue will re-start it if it's done playing.
			//effectively looping as long as you continue calling 'continue'.
			this.footsteps.continue();
		}else {
			//simply pauses it. nothing more.
			this.footsteps.pause();
		}
	},
});