0
<< предыдущая заметкаследующая заметка >>
05 мая 2020
Ребят, я вам немного поржать принёс

Теперь закадровый смех стал доступен как никогда! Специально для ваших рабочих видеочатов, онлайн-уроков, домашних скандалов или споров на кухне о политике! Просто включите и наслаждайтесь.

Скриптик очень простой, вот ссылка:

https://lleo.me/test/gaga.htm

Я что-то не пойму, может ли он работать по прямой ссылке — по http у меня точно отказывается давать доступ, а по https вроде запустился. Если он у вас не работает из-за политики безопасности браузера, то скачайте его себе на диск и открывайте оттуда. Я открывал его с диска в Firefox, Opera, Chrome под Линуксом, работает.

[показать код gaga.htm]
<html><body onload='mp3_preload()'><!-- (c) Леонид Каганов http://lleo.me -->
<center>
<h1>ЗАКАДРОВЫЙ СМЕХ</h1>
<p><table border=0 width=400>
<tr><td>audio </td><td width=90%><img id='summ' src="https://lleo.me/dnevnik/design/img/golo.gif" style="height:10px !important; width:0px"></td></tr>
<tr><td>silence </td><td><img id='SIL' src="https://lleo.me/dnevnik/design/img/golo.gif" style="height:10px !important; width:0px"></td></tr>
<tr><td>noise </td><td><img id='GOL' src="https://lleo.me/dnevnik/design/img/golo.gif" style="height:10px !important; width:0px"></td></tr>
</table>
<p><input type='button' value='ГаГа' onclick='laught_go()' style='width:10%; height:10%; border-radius:100%'>
</center>

<script>
var NOISE_LIM = 5; // порог чувствительности шума (все что выше - шум)
var SIL_N = 30; // число циклов паузы, после которой смех
var GOL_N = 60; // сколько циклов надо шуметь, чтобы после раздался смех

var SIL=0,GOL=0,laught_arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],laught_k=laught_arr.length;

function mp3_preload() { for(var i in laught_arr) playsi(laught_arr[i],1); }

function shuffle(a) { for(var i=a.length-1;i>0;i--) { var j=Math.floor(Math.random()*(i+1)),temp=a[i];a[i]=a[j];a[j]=temp; } }

function laught_go() { if(laught_k >= laught_arr.length) { shuffle(laught_arr); laught_k=0; } playsi(laught_arr[laught_k++]); }

function idd(id){ return (typeof(id)=='object' ? id : ( document.getElementById(id) || false ) ) }

function playsi(urli,silent){ var id='playsi_'+urli, url='https://lleo.me/design/timem/people-laughing-'+urli+'.mp3';
    var s="<audio style='position:absolute;width:1px;height:1px;overflow:hidden;left:-40px;top:0;opacity:0'"+(silent?'':" autoplay='autoplay'")+" src=\""+url+"\"></audio>";
    if(idd(id)) return idd(id).innerHTML=s;
    var div=document.createElement('DIV'); div.id=id; div.innerHTML=s; document.body.appendChild(div);
}

navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);

navigator.getUserMedia(
    { audio: true, video: false },
    function (stream) {
        var AudioContext = window.AudioContext || window.webkitAudioContext,
        ctx = new AudioContext(),
        source = ctx.createMediaStreamSource(stream),
        analyser = ctx.createAnalyser(),
        processor = ctx.createScriptProcessor(1024, 1, 1),
        data;

        source.connect(analyser);
        source.connect(processor);
        // analyser.connect(ctx.destination);
        processor.connect(ctx.destination);

        data = new Uint8Array(analyser.frequencyBinCount);
        processor.onaudioprocess = function (){
             analyser.getByteFrequencyData(data);
                var summ=0; for(var i in data) summ+=data[i]; summ=Math.floor(summ/data.length);

                GOL=Math.min(GOL,300);
                SIL=Math.min(SIL,300);
                idd('summ').style.width=summ+'px';
                idd('SIL').style.width=SIL+'px';
                idd('GOL').style.width=GOL+'px';

                if(SIL > SIL_N && SIL > GOL * 3) GOL=0;

                if(summ > NOISE_LIM) { SIL=0; GOL++; }
                else { SIL++;
                    if(SIL > SIL_N && GOL > GOL_N) { SIL=0; GOL=0;
                        laught_go();
                        setTimeout("SIL=GOL=0;",1000);
                        setTimeout("SIL=GOL=0;",2000);
                        setTimeout("SIL=GOL=0;",3000);
                        setTimeout("SIL=GOL=0;",4000);
                    }
                }
        }
    },function(error){}
);
</script>
</body></html>


Пользуясь случаем, напоминаю, что:

Завтра, 6 мая с 21:00 до 22:00 я буду читать для вас стихи посредством Zoom.

Ссылка на мероприятие: https://leikozunet.timepad.ru/event/1305328/

Мероприятие благотворительное и проводится по билетам: прошу вас пожертвовать 200, 500 или больше рублей в «Фонд борьбы с лейкемией», больным сейчас особенно необходима ваша помощь. Ведь когда «Фонду борьбы с лейкемией» нужна наша с вами помощь — это гораздо лучше, чем если было бы наоборот.

Буду читать поэму Уильяма Шекспира «Отелло» в переводе Корнея Ивановича Чуковского, которой нет в сети и я ее читаю только на концертах, а также другие стихи и "карантинки".

Читать когда не слышишь реакции зала трудно, поэтому по крайней мере "карантинки" буду читать с этим закадровым смехом. Опробуем, так сказать, скрипт на боевом дежурстве!


PS: Открыл скрипт с мобильника с Андроида - работает, сцуко! Чуть подтормаживает конечно. Все параметры по нужному соотношению шум/тишина сползли. Надо их по уму через таймер делать. А лучше давать на странице прямо настройки, чтоб каждый мог под себя подкрутить. Но мне пока лень. Если вам не лень, допилите. Только чур без всяких там джквери, фреймворков и прочего навесного говна, чтоб нормальный человек мог открыть один единственный файл.htm и сразу увидеть, что код в нем элементарный, никаких аяксов и бэкдоров, и никто аудио с вашего устройства никуда за пределы не отправляет. Ну и ассортимент смеха надо бы расширить, если Дима Урюпин мне файликов насыпет.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок

Комментарии к этой заметке скрываются - они будут видны только вам и мне.

Оставить комментарий