1. 2 г. назад

    Господа, имею вопрос.
    Как к событию на странице привязать разовое проигрывание звука?
    И, вдогонку,: можно ли со звуком обойтись, как с изображением, закодировав его в текст?
    Звук-то буквально секундной продолжительности.
    Но нужно, чтобы никакой визуальной составляющей, типа окна плеера, к нему не было. Просто "событие-звук".

    Ответы: (1) (2) (6)
  2. 17.11.2021 08:30:05 отредактировано sda553

    (0) я точно не знаю что тас за сценарий у тебя. Возможно стоит начать проигрывание звука по кнопке "проиграть звук", либо инициализировать по старту какого то другого сценария.
    По опыту знаем, что если страница начинает проигрывать звук "сама по себе", то это раздражает.
    Инициализааия

    res_sound = document.createElement("audio");
      res_sound.src = src;
      res_sound.setAttribute("preload", "auto");
      res_sound.setAttribute("controls", "none");
      res_sound.setAttribute("muted",true);
      res_sound.className = "wav_sound";
      res_sound.style.display = "none";
      document.body.appendChild(res_sound);

    Ну и потом команды проигрывания

    res_sound.play()

    При этом учти, в html5 звук не будет работать просто по старту страницы. Только когда пользователь покажет хоть какое то взаимодействие со страницей, кнопку нажмёт или еще что.

    Ответы: (4)
  3. 17.11.2021 08:34:25 отредактировано sda553

    Дуб можно ли со звуком обойтись, как с изображением, закодировав его в текст?

    Да, можно, думаю. Не вижу в этом особого смысла, но можно так
    res_sound.src="data:audio/mp3;base64,AAAAGGZ0eXAzZ3A0AAAAAGlzb20zZ3A0AAARTG1kYXQEYzzH8GMEOf/gAAAABDcYx/BtBDP/4AAAAAQ2PMfwZwQ1/+AAAAAE/xjH8G0EM//g"

  4. Ага.. Спасибо. Попробую.

  5. sda553 При этом учти, в html5 звук не будет работать просто по старту страницы. Только когда пользователь покажет хоть какое то взаимодействие со страницей

    Забыл, что на событие этого взаимодействия надо сделать
    res_sound.setAttribute("muted",true);

    В других местах браузер сделать это не даст

  6. от ож... Ведь было в турбопаскале 7.0 sound и nosound.
    Чего бы не сделать?..

  7. 17.11.2021 19:26:59 отредактировано webdev

    (0) Про звуковой файл тебе уже ответили. Но есть еще способ проигрывать синтезированный звук, типа звуковую частоту или простую мелодию без полифонии, как в турбопаскале. Если тебе такой способ сгодится, то это будет экономия трафика, так как не нужно скачивать данные wav.

  8. 17.11.2021 19:33:46 отредактировано webdev
    const context = new AudioContext();
    const osc = context.createOscillator();
    const vol = context.createGain();
    osc.type = 'sine'; // square, sawtooth, triangle - форма сигнала
    osc.frequency.value = 440; // Частота, Герц
    vol.gain.value = 0.1; // громкость от 0 до 1
    osc.connect(vol);
    vol.connect(context.destination);
    osc.start();
    osc.stop(context.currentTime + 2); // стоп через 2 секунды
  9. То же самое, только убрал необязательные строки, чтобы проще было разобраться как работает

    const context = new AudioContext();
    const osc = context.createOscillator();
    osc.connect(context.destination);
    osc.start();
    osc.stop(context.currentTime + 2);
  10. Блин! Ну нифига себе!
    Вот это прямо оно.
    Благодарю.

или зарегистрируйтесь чтобы ответить!