GithubHelp home page GithubHelp logo

Comments (5)

ericrosenbaum avatar ericrosenbaum commented on August 10, 2024

Some initial findings:

  • You can start chrome with a flag to enable the new autoplay policy like this:
    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-features=AutoplayIgnoreWebAudio
  • Scratch's ability to play sound is almost completely unaffected as far as I can tell, because you almost always have clicked on something (such as the green flag or a sprite) before sound needs to play, and at that point it is allowed to play.
  • A keypress by itself (i.e. without any mouse clicks having occurred) seems to be sufficient to allow the sound to play.
  • Mac Safari, as far as I can tell, already implements exactly this same policy (but we didn't notice).
  • There is, unfortunately, one problem: there is a way to play a sound without any user interaction (i.e. not even a green flag click), using the "when timer > 10" hat block. As far as I know this is the only way. In this case, on Chrome with the new autoplay policy (and on Safari currently), if you do not click on anything or press any keys, when you load the project, the sound will not start after the timer crosses 10s. As soon as you click or press a key, the sound will start.

I can think of two ways to proceed:

  • No fix. Sounds started by the when timer block will not play until there has been a user interaction. This matches the intent of the autoplay policy.
  • We have a bug where sounds are not allowed to start if triggered by the when timer block without any user interaction, and we need to handle it somehow. This could be:
    • Detecting this (rare) situation, and showing some kind of notification ("click to enable Scratch to play sound")
    • Some other strategy??

from scratch-audio.

ericrosenbaum avatar ericrosenbaum commented on August 10, 2024

Curious about your thoughts on this @paulkaplan

from scratch-audio.

paulkaplan avatar paulkaplan commented on August 10, 2024

Thanks for the thorough investigation! It is kind of funny because using the when "timer > 0 => play sound" construction is totally the scratch equivalent of autoplaying videos, so it makes sense that it would get blocked.

I'm curious about which scratch2 views actually play audio with no user interaction. The project page has the green flag overlay that starts the VM, so it wouldn't effect the project there, which is probably our main concern. The places that do rely on autoplay right now are:

  1. Going directly to /#editor (will be /editor in 3.0)
  2. Embed with autoplay=true does autoplay right now (not clear if that will exist in 3.0?)

from scratch-audio.

ericrosenbaum avatar ericrosenbaum commented on August 10, 2024

We are going with the "no fix" option for now, but leaving this in the backlog.

We are considering removing the autoplay option from embed mode.

from scratch-audio.

towerofnix avatar towerofnix commented on August 10, 2024

We are considering removing the autoplay option from embed mode.

For later discussion, I think it would be better to stay away from removing autoplay. It could still be a useful option on sites that, for example, specifically embed the player so that it's "flush" with the rest of the site's design; having to click the no-autoplay overlay green flag could clash with that.

from scratch-audio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.