Мазмуну:
- 1 -кадам: Бул кандай болушу керек?
- 2 -кадам: Логика
- 3 -кадам: Сиздин BPM уккула
- 4 -кадам: Бардыгын бириктирүү
- 5 -кадам: Натыйжалуу колдонуу (OSX колдонуучулары үчүн гана)
- 6 -кадам: Эскертүүлөр
Video: Жеке виджеттериңизди оңой жасаңыз - BPMдин тез эсептегичи: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Желе колдонмолору кеңири таралган, бирок интернетке кирүүнү талап кылбаган веб -колдонмолор андай эмес.
Бул макалада мен кантип BPM эсептегичти ваниль javascript менен коштолгон жөнөкөй HTML баракчасында жасагандыгымды көрсөтөм (бул жерден караңыз). Жүктөлүп алынса, бул виджет оффлайнда колдонулушу мүмкүн - жараткысы келген, бирок ар дайым интернетке кире албаган музыканттар үчүн идеалдуу. Андан да жакшыраагы, OSX панелинин колдонмосун колдонуу менен (мурда эч качан пайдалуу көрүнгөн эмес), биз бул BPM Counterди колдонууга тез кыла алабыз.
1 -кадам: Бул кандай болушу керек?
Албетте, суроого жооп - бул пикир. Менин позициям - бул супер жөнөкөй жана BPM эсептегичке керектүү нерселерди гана жасоо керек: Beats Per Minute. Ошондуктан, болгону бир баскыч жана эсептөө мааниси болушу керек.
2 -кадам: Логика
BPMди баалоо эки ырааттуу согуунун ортосундагы убакытты өлчөө жана мунун бир канча мүнөтүнө туура келерин эсептөө сыяктуу оңой.
let prev_click = new Date (); const getBPM = function () {const currentTime = new Date (); const аралыгы = (currentTime - prev_click)/1000; const bpm = 60/interval; prev_click = currentTime; кайтуу bpm; } get_bpm (); // мис. 120
Мен муну мурунку 3 уруунун орточо көрсөткүчү менен алдыга жылдырдым:
const орточо = 3;
const prev_bpms = [60]; let prev_click = new Date () const getBPM = function () {const currentTime = new Date (); const аралыгы = (currentTime - prev_click) / 1000; const bpm = 60 / interval; prev_click = currentTime; while (prev_bpms.length> prev_bpm_list_max_length) {prev_bpms.shift (); } prev_bpms.push (bpm); average_bpm = prev_bpms.reduce ((acc, cVal) => acc + cVal) / prev_bpms.length; кайтуу bpm; } get_bpm (); // мис. 120
Ошондой эле, баары эле баскычты баскысы келбейт, бирок анын ордуна ачкыч:
// боштук тилкесинин триггери
window.addEventListener ('keypress', (e) => {if (e.code === 32) getBPM ();}); // ыкчам жөндөмдүүлүк document.querySelector ('. чыкылдатуу баскычы'). focus ();
Эми колдонуучулар барак жүктөлөөрү менен боштукту колдонууну таптап коюшу мүмкүн.
3 -кадам: Сиздин BPM уккула
Сиз BPM'иңизди таптадыңыз, бирок азыр аны кайра ойноткуңуз келет, ошондо сиз сүйүктүү темпке жетүүңүз үчүн.
Бул үчүн биз үн чыгарышыбыз керек. Бирок кантип? Бизде AudioAPI браузерине орнотулган эки вариант бар, үн файлын колдонуңуз же синтезаторду түзүңүз. Адегенде биз синтезаторду колдонобуз:
const AudioContext = window. AudioContext || window.webkitAudioContext;
болсун контекст, осциллятор; const bpm = 60; const bpmInterval = 60/bpm * 1000; // mssetInterval (бип, bpmInterval); const beep = function () {if (! context) context = new AudioContext (); oscillator = context.createOscillator (); oscillator.type = "синус"; oscillator.start (0); осциллятор.коннект (контекст.көздөгөн жери); setTimeout (oscillator.disconnect, 150, context.destination); }
Эми анын ордуна аудио файлды колдонуп ушундай кылалы:
const чыкылдатуу = жаңы Аудио (‘./ cowbell.mp3’);
const bpm = 60; const bpmInterval = 60/bpm * 1000; // ms setInterval (бип, bpmInterval); const beep = function () {click.play (); setTimeout (() => {click.pause (); click.currentTime = 0.0;}, 150); };
Акыры аларды башкарган логиканы кошуу:
// JSlet isPlayerPlaying = жалган;
let bpmRepeaterId; const togglePlayerOutput = function () {const баскычы = document.querySelector ('. оюнчу баскычы'); if (! isPlayerPlaying) {button.innerHTML = '◼'; bpmRepeaterId = setInterval (бип, bpmInterval); } else {button.innerHTML = '▶'; clearInterval (bpmRepeaterId); } isPlayerPlaying =! isPlayerPlaying; };
4 -кадам: Бардыгын бириктирүү
Эми бардык функцияларды бириктирип, бир аз стилин кошуп (мен түшүндүрбөйм), бизде акыркы продукт бар:
Мен адамдар чынында эле макалада канчалык көп кодду көргүсү келгенин билбейм, андыктан толук кодду https://gitlab.com/t3chflicks/bpm-counter сайтынан табыңыз.
5 -кадам: Натыйжалуу колдонуу (OSX колдонуучулары үчүн гана)
Эгер сиз мурда Mac колдонгон болсоңуз, анда сиз Dashboard колдонмосуна туш келип калсаңыз керек, бирок, балким, көпкө чейин кала албайсыз.
Мен аны эч качан колдонгон эмесмин … ушул убакка чейин. Safariде сиз баракка оң баскыч менен чыкылдата аласыз, бул кээде аракеттердин тандоосу калкып чыгууга алып келет, анын ичинде панелде ачылат …
Муну басуу сизге веб -баракчанын виджетин жаратуучусун ачат. Сиз тактаңызга кошкуңуз келген барактын бир бөлүгүн тандай аласыз. Бул абдан сонун өзгөчөлүк, бирок биздин учурда бул супер сонун өзгөчөлүк. Биз жаңы эле жасаган BPM эсептегичти ачып, мындай кутучаны тандай аласыз:
Эми F12 баскычынын жарлыгын колдонуңуз. BOOM. Виджеттерди тез жана оңой түзүү эч качан оңой болгон эмес.
6 -кадам: Эскертүүлөр
Эмне үчүн бул метрономду ойнотуу өзгөчөлүгүн камтыбайт деп ойлонушуңуз мүмкүн. Мен аны тактасында колдонууга аракет кылганымда, программа аудиону ишенимдүү түрдө ойното албайт: (Бирок, жок дегенде, Логика бул бөлүктү оңой эле аткара алат.
Мен сизге үндөрдү кантип эки башка жол менен көрсөтүүнү көрсөткөнүмдүн себеби, синтезаторду колдонгон Аудио Контекст версиясы панелде иштебейт.
Акыр -аягы, сиз F12ди басып, темпти алуу үчүн боштукту колдонууну уланта албайсыз, баскычты түз басуу керек, бул төмөндөө. Бирок мен ойлойм, мындан кийин мен кичинекей виджеттерди ушундай кылып жасайм. Эгерде сизде бул боюнча кандайдыр бир сонун идеялар болсо, аларды качан ишке ашырганыңызды көрсөтүңүз:)
Кат таратуу кызматынын тизмесине кол коет!
Ооба, T3chFlicksти текшериңиз - биз нерселерди жасайбыз!
Сунушталууда:
50 долларга чейин тез алмаштыруу! Kazeshifter Arduino жөнгө салынуучу тез которуу: 7 кадам
50 долларга чейин тез алмаштыруу! Kazeshifter Arduino Adjustable Quick Shifter: Hi Superbike же мотоцикл сүйүүчүлөрү! Бул үйрөткүчтө мен өзүмдүн Quick Shifter'имди арзанга кантип жасоону бөлүшөм! Бул көрсөтмөнү окуудан жалкоо адамдар үчүн менин видеомду көрүңүз! Эскертүү: Кээ бир велосипеддер үчүн Күйүүчү май инжекция системасын колдонуп, кээде
DIY MusiLED, Windows менен Linuxтун бир чыкылдатуусу менен музыканын синхрондуу LEDлери (32-бит жана 64-бит). Оңой жаратуу, колдонууга оңой, портко оңой: 3 кадам
DIY MusiLED, Windows менен Linuxтун бир чыкылдатуусу менен музыканын синхрондуу LEDлери (32-бит жана 64-бит). Оңой жаратуу, колдонууга оңой, портко оңой .: Бул долбоор сизге 18 LED (6 Кызыл + 6 Көк + 6 Сары) Arduino тактасына туташтырууга жана компьютериңиздин Үн картасынын реалдуу убакыт сигналдарын талдоого жана аларды өткөрүүгө жардам берет. Светодиоддор аларды эффекттерге жараша күйгүзүшөт (Snare, High Hat, Kick)
Дүйнөнүн эң оңой батарея эсептегичи 5v чейин MAh: 3 кадам
Дүйнөнүн оңой батарея эсептегичи 5v чейин MAh: Arduino жана резистор - бул 5Вга чейинки чыңалуудагы батареялар үчүн кубаттуулук метрин түзүүчү бул долбоорду куруу үчүн бизге керектүү нерсе. Кислота, щелочтуу, NiCd, Li-иондор жана Липо батареяларын колдонсо болот. Базар чоң сыйымдуулукка ээ болгон жасалма батареяларга толгон
Ноутбукту картондон жасаңыз - тез жана оңой жол: 6 кадам
Ноутбукту картондон жасаңыз - Ыкчам жана оңой жолу: Менин жумуш компьютерим 17 дюймдук ноутбук, мен аны колдонуу үчүн күнү бою столумдун үстүндө чалкалап чарчадым. Эргономикалык бийиктик, бирок мен эч кандай акча короткум келбеди
Тез, тез, арзан, жакшы көрүнгөн LED бөлмө жарыктандыруусу (баарына): 5 кадам (сүрөттөр менен)
Тез, тез, арзан, жакшы көрүнгөн LED бөлмө жарыктандыруусу (Баары үчүн): Баарына кош келиңиз :-) Бул менин биринчи үйрөткүчүм, андыктан комментарийлер кабыл алынат :-) Мен сизге көрсөтөм деп үмүттөнүп жатканым-тез LED жарыктандыруу. TINY buget.What сизге керек: CableLEDsResistors (5VOhms for 12V) StapelsLehering ironCutters and other basi