Variable Playback Speed

Jun 17, 2016

We build our e-learning courses using Articulate Storyline.  Recently, a number of our students have asked us if we can provide functionality of increasing the speed of the delivery, the provision that they have in Lynda courses and youtube videos.  

So I was wondering there is a provision for the same in Articulate Storyline.  



Pinned Reply
Luciana Piazza

Hello Everyone!

I'm happy to share that we have released Storyline 360 version 72 (Build 3.72.29654.0).

Included in this release is a new feature where you can let learners explore at their own pace by choosing a course playback speed between 0.25x and 2x.

Now all you need to do is update Storyline 360 in your Articulate 360 desktop app on your computer. You'll find our step-by-step instructions here.

Please let us know if you have any questions by reaching out to our Support Engineers directly.

Have a great day!

160 Replies
Math Notermans

So the error you had in it... referencing 'allAudio' instead of 'allAudios'.
One character makes all the difference.

In the attached zip the fixed Storyline is... and added a captured video showing you how to debug things like this yourself, so you can quickly fix it yourself next time.


Marty Riesberg

Thank you so much for your time and effort on this. I now see and understand the error that I made! I was able to publish and play this on my local machine with success! When I take the file and publish to a web server, link here, I come up with additional errors that a file did not load. Sorry to continue to ask questions, but I am new to this.
Once again, all of your help is greatly appreciated. I feel like every time there is a step forward there is also on backward. I am confident that with the last step resolved all will be well!!

Marty Riesberg

@Math, I have continued to troubleshoot the best that I can and I notice that when I do the following query

I get the HTML collection but it has a length of 0. It does not seem that the JS is able to access the audio file(s)? Again, any help would be appreciated, but I cannot see what is wrong??
Thanks in advance.
Mark Ramsey

Playing around with the code & positing it to SCORMCloud, I confirmed what Marty has found — this works locally, but not being served. I know why now too, but I don't know exactly how to fix it.

Math's code is getting pointers to the audio file(s) available into an array by using getElementsByTagName. I looked at the length of this array being created & filled. Locally it returns one index, which will make his code work. However, when posted in SCORMCloud, it returns zero indexes, which means that the array doesn't get filled, and subsequently there is no index (connection) pointing to the audio file for the code to work with.

I think what is happening is that locally, Chrome is allowing a call to the  "document" object to also work in the iframe child object. Or somehow the connection is being made so that the code works. When posting this code to an LMS, the LMS is being more strict in the parent-child relationship, which breaks this connection. Of course I could be totally wrong in this assumption, but I'm not wrong in that for some reason the use of getElementsByTagName is not working as it should in an served setting.

Sorry I couldn't be more helpful!

Math Notermans

You are probably correct Mark. Do try a more direct selector. That might work.
In the console the audio on Marty's sample is stored at...
An approach that might work is looping all elements on a page... checking if one is a HTMLMediaElement, and if can work with that....

Or create a custom HTMLMediaElement then you can control it at will...

Marty Riesberg

Mark and Math,

I have appreciated your guidance and have continued on my journey...I have found the element that I need in the data.js file, 

I cannot, however, find a way to select it with JS. I continue to get either empty Node Lists or HTML collections.
Maybe with this information you may be able to point out how to select this object? From there it seems the rest is pretty straight forward.
Marty Riesberg

Mark, thanks for posting this! It works flawlessly! I was originally seeking a way to speed up the audio, but this may accomplish the same end point. I will work to utilize your speed controls and let the video play in the background.

I did try to modify this js to use for VO, but still cannot seem to get the audio object selected. 

Thanks again, I appreciate your willingness to help the community!

Mark Ramsey

Hi Marty, I think this should work for audio too. Everything else being equal, I think you can replace searching for "video" with "audio" in the speed buttons:

 var vd = document.querySelectorAll('audio');

I haven't tested this, but it may work. Of course all the variable names will be 'wrong', but if you can live with that... :)

Zi Qiu

Hi Mark, 

I'm currently using this method for one of my projects.  How would you change the code to have it apply to 2 videos within the same Storyline project.

I have tried changing the highlighted in red number within the code for the "plus" and "minus" buttons but it's not working for me. Please help.

Thanks in advance,

Mark Ramsey

Hi Zi,

My method works if there are single videos on a single slide at a time. I wouldn't edit the code at the point in your screen shot. You need to go to the variable panel and set the numberOfVideos variable to 2. Keep in mind that you have to total ALL videos in the course. Perhaps I should have named this variable totalNumberOfVideos, and this would have described what it needs to be in a better way — but I try to keep my variable naming length down to a dozen or so characters for the most part.

I think your screen shot has pointed out something to me that I should probably clean up. It doesn't hurt how this works, it's just some extra code that doesn't really need to be there. Thanks for that!

Robert Lillywhite

Hello Maria,

I don't want to speak for everyone, but as far as I can tell this thread is asking for variable playback of the whole timeline and not just videos.

Personally, variable playback for videos doesn't add anything and it is the ability to control the overall playback of the project that is important. This would cover the speed of the audio and video playback as well.