Yesterday my friend Tina told me she liked the way I gave Jim some music to dance to. I though I’d show her, and anyone else how to play a sound when a gif (or anything else) is clicked.
I made a quick gif of a scene from Tina’s work that shows what a committed and brave actor she is, I believe she does all her own stunts.
click the image to hear the soundtrack.
Video grabbed from ▶ Talky Tina — Living Doll — Two Minute Twilight Zone Project — Season 5, Episode 6 – YouTube just a screen capture using ScreenFlow.
A few frames extracted with MPEG Steamclip, pullined into fireworks and exported as a gif.
I then searched Freesound for a sound of someone falling down the stairs that was cc licensed: Freesound.org – “Falling Down Wooden Stairs.wav” by Benboncan.
In Safari I viewed the source of the page, searched for .mp3 to find the link to the low quality preview:
www.freesound.org/data/previews/80/80916_634166-lq.mp3 (I took the http:// off here as wordpress embeds if I do not)
I knew that Freeview provides previews in mp3 and ogg so that we can play then with html5 and do not need any plugins (Firefox on mac needs ogg other browsers handle the mp3, this is a moving target). the ogg files have the same url but with the .ogg extension.
I started this blog post, switching to the Text (html) view in the editor and put in an audio tag:
<audio id="tinastairs" preload loop>
<source src="http://www.freesound.org/data/previews/80/80916_634166-lq.ogg" type="audio/ogg">
<source src="http://www.freesound.org/data/previews/80/80916_634166-lq.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>
If you are going to do this more than once on a page you need to give the audio a unique id here I used tinastairs.
You could copy the block of code above, replacing the id and the urls.
Update: The way wp adds paragraphs, it is best to take out all the line breaks when you use this.
This addes the audio to the post, it is preloaded, and will loop when played, but it does not show on the page (I’ve left out the controls parameter).
I then added the gif in the normal way. In the text view this gives me:
<img src="http://johnjohnston.info/106/wp-content/uploads/2013/08/tina_stairs.gif" alt="tina_stairs" width="420" height="260" class="aligncenter size-full wp-image-854" />
I added a snippet of JavaScript to play the sound when the gif is clicked:
onclick="a=document.getElementById('tinastairs');if(a.paused){a.play()}else{a.pause();}"
As a parameter of the image tag like this:
<img onclick="a=document.getElementById('tinastairs');if(a.paused){a.play()}else{a.pause();}" src="http://johnjohnston.info/106/wp-content/uploads/2013/08/tina_stairs.gif" alt="tina_stairs" width="420" height="260" class="aligncenter size-full wp-image-854" />
You can see I use the id of the audio tag, again you could copy this code and use a different ID.
Hopefully Tina will love this?
I used the same process here, with different IDs but exported mp3 and ogg from Audacity, after recoding the sound from youtube.
This is just wonderful! I am working right now to add the music to make Jim dance. I may adjust the frame intervals a bit (make them shorter) so that he will dance faster. I think that would be more funny!
Thank you, True Friend John!
John,
This is cool. Following your lead, I used this technique to add some music to my dancing Groom GIF from yesterday. I like!
This is very cool, John. And I like how if you have multiple ones you can have both sounds loop. It starts me thinking of some scenes one might play….
Thanks folks,
@cogdog for multi gifs and sounds it might be worth playing with a mouseover effect rather than onclick…
Danger is you might end up with a movie;-)
This is awesome!
Mouseover might be nice, but if they’re on mobile, there’s no such thing as mouseover. If you did that, you’d want to make sure the javascript is responsive. Including parameters for the width should do it.
I need to play with this more.
Thanks Brian,
Didn’t think about mobile, preload doesn’t work on iOS so would need to keep things short.
“I need to play” ds106 motto;-)
Wow, John, thank you so much for this, and for the detailed instructions! Even a novice like me can probably do this with a bit of work and maybe asking some questions along the way. Bookmarking it for later!