@@ -115,6 +115,8 @@ angular.module('ngAudio', [])
115115 $willPlay = false ,
116116 $willPause = false ,
117117 $willRestart = false ,
118+ $willChangePlaybackRate = false ,
119+ $newPlaybackRate = false ,
118120 $volumeToSet ,
119121 $looping ,
120122 $isMuting = false ,
@@ -150,6 +152,11 @@ angular.module('ngAudio', [])
150152 $volumeToSet = volume ;
151153 } ;
152154
155+ this . setPlaybackRate = function ( rate ) {
156+ $newPlaybackRate = rate ;
157+ $willChangePlaybackRate = true ;
158+ } ;
159+
153160 this . setMuting = function ( muting ) {
154161 $isMuting = muting ;
155162 } ;
@@ -174,6 +181,7 @@ angular.module('ngAudio', [])
174181 progress : audioObject . progress ,
175182 muting : audioObject . muting ,
176183 loop : audioObject . loop ,
184+ playbackRate : audioObject . playbackRate
177185 } ;
178186 } , function ( newValue , oldValue ) {
179187 if ( newValue . currentTime !== oldValue . currentTime ) {
@@ -187,10 +195,12 @@ angular.module('ngAudio', [])
187195 audioObject . setVolume ( newValue . volume ) ;
188196 }
189197
190- if ( newValue . volume !== oldValue . volume ) {
191- audioObject . setVolume ( newValue . volume ) ;
198+ if ( newValue . playbackRate !== oldValue . playbackRate ) {
199+ audioObject . setPlaybackRate ( newValue . playbackRate ) ;
192200 }
193201
202+
203+
194204 $looping = newValue . loop ;
195205
196206 if ( newValue . muting !== oldValue . muting ) {
@@ -206,7 +216,7 @@ angular.module('ngAudio', [])
206216 audioObject . canPlay = true ;
207217 } ) ;
208218
209- audio . playbackRate = 0.5 ;
219+
210220 } , function ( error ) {
211221 audioObject . error = true ;
212222 console . warn ( error ) ;
@@ -241,6 +251,11 @@ angular.module('ngAudio', [])
241251 $willPause = false ;
242252 }
243253
254+ if ( $willChangePlaybackRate ) {
255+ audio . playbackRate = $newPlaybackRate ;
256+ $willChangePlaybackRate = false ;
257+ }
258+
244259 if ( $volumeToSet ) {
245260 audio . volume = $volumeToSet ;
246261 $volumeToSet = undefined ;
0 commit comments