Table des matières:
- Étape 1: à quoi devrait-il ressembler ?
- Étape 2: La logique
- Étape 3: Écoutez votre BPM
- Étape 4: Tout assembler
- Étape 5: Utilisation efficace (utilisateurs OSX uniquement)
- Étape 6: Remarques
Vidéo: Créez facilement vos propres widgets - Compteur BPM rapide : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Les applications Web sont courantes, mais les applications Web qui ne nécessitent pas d'accès à Internet ne le sont pas.
Dans cet article je vous montre comment j'ai réalisé un compteur BPM dans une simple page HTML couplée à du javascript vanilla (voir ici). S'il est téléchargé, ce widget peut être utilisé hors ligne - idéal pour les musiciens qui souhaitent créer mais n'ont pas toujours accès à Internet. Mieux encore, en utilisant l'application de tableau de bord OSX (qui n'a jamais semblé aussi utile auparavant), nous pouvons rendre ce compteur BPM très rapide à utiliser.
Étape 1: à quoi devrait-il ressembler ?
De toute évidence, la réponse à la question est une question d'opinion. Ma position est que cela devrait être très simple et ne faire que ce dont un compteur BPM a besoin: compter les battements par minute. Par conséquent, il suffit d'un bouton et d'une valeur de comptage.
Étape 2: La logique
Estimer le BPM est aussi simple que de mesurer le temps entre deux battements séquentiels et de calculer combien d'entre eux vous pourriez en tenir en une minute.
let prev_click = new Date();const getBPM = function (){ const currentTime = new Date(); intervalle const = (currentTime - prev_click)/1000; const bpm = 60/intervalle; prev_click = currentTime; retour bpm; } get_bpm(); // par exemple. 120
Je suis allé plus loin en faisant la moyenne des 3 temps précédents comme ceci:
moyenne const = 3;
const prev_bpms = [60]; let prev_click = new Date() const getBPM = function() { const currentTime = new Date(); intervalle const = (currentTime - prev_click) / 1000; const bpm = 60 / intervalle; prev_click = currentTime; while (prev_bpms.length > prev_bpm_list_max_length) { prev_bpms.shift(); } prev_bpms.push(bpm); moyenne_bpm = prev_bpms.reduce((acc, cVal) => acc + cVal) / prev_bpms.length; retour bpm; } get_bpm(); // par exemple. 120
De plus, tout le monde ne veut pas appuyer sur le bouton mais peut-être plutôt sur une touche:
// déclencheur de la barre d'espace
window.addEventListener('keypress', (e) => { if(e.code === 32) getBPM(); }); // capacité instantanée document.querySelector('.clicker button').focus();
Désormais, les utilisateurs peuvent également appuyer sur la barre d'espace dès que la page est chargée.
Étape 3: Écoutez votre BPM
Vous avez tapé dans votre BPM, mais maintenant vous voulez le lire pour pouvoir jammer à votre tempo préféré.
Pour ce faire, nous devons faire du son. Mais comment? Nous avons deux options intégrées au navigateur AudioAPI, utiliser un fichier son ou créer un synthétiseur. Nous allons d'abord utiliser le synthétiseur pour créer un bip:
constContexteAudio = fenêtre. ContexteAudio || window.webkitAudioContext;
let context, oscillateur;const bpm = 60; const bpmInterval = 60/bpm * 1000; //mssetInterval(bip, bpmInterval); const bip = function (){ if(!context) context = new AudioContext(); oscillateur = context.createOscillator(); oscillator.type = "sine"; oscillateur.start(0); oscillator.connect(context.destination); setTimeout(oscillator.disconnect, 150, context.destination); }
Faisons maintenant une chose similaire en utilisant un fichier audio à la place:
clic const = new Audio('./cowbell.mp3');
constante bpm = 60; const bpmInterval = 60/bpm * 1000; //ms setInterval(beep, bpmInterval);const beep = function (){ click.play(); setTimeout(()=>{ click.pause(); click.currentTime = 0.0; }, 150); };
Enfin en ajoutant la logique qui les contrôle:
// JSlet isPlayerPlaying = false;
let bpmRepeaterId; const togglePlayerOutput = function (){ const button = document.querySelector('.player button'); if (!isPlayerPlaying){ button.innerHTML = '◼'; bpmRepeaterId = setInterval(bip, bpmInterval); } else{ button.innerHTML = '▶'; clearInterval(bpmRepeaterId); } isPlayerPlaying = !isPlayerPlaying; };
Étape 4: Tout assembler
Maintenant, en rassemblant toutes les fonctionnalités et en ajoutant un peu de style (que je ne vais pas expliquer), nous avons ce produit final:
Je ne sais pas combien de code les gens veulent vraiment voir directement dans l'article, alors trouvez le code complet sur
Étape 5: Utilisation efficace (utilisateurs OSX uniquement)
Si vous avez déjà utilisé un mac auparavant, vous êtes peut-être tombé sur l'application Dashboard native, mais vous ne serez probablement pas resté longtemps.
Je ne l'ai jamais vraiment utilisé… jusqu'à maintenant. Dans Safari, vous pouvez cliquer avec le bouton droit sur la page, ce qui provoque parfois l'apparition d'une sélection d'action, y compris l'ouverture dans le tableau de bord…
En cliquant dessus, vous découvrirez un créateur de widget de page Web. Vous pouvez sélectionner une partie de la page que vous souhaitez ajouter à votre tableau de bord. C'est une fonctionnalité plutôt cool, mais pour notre cas, c'est une fonctionnalité super cool. En ouvrant le compteur BPM que nous venons de créer, vous pouvez sélectionner la case comme ceci:
Utilisez maintenant le raccourci de la touche F12. BOOM. Il n'a jamais été aussi simple de créer des widgets vous-même, rapidement et facilement.
Étape 6: Remarques
Vous vous demandez peut-être pourquoi celui-ci n'inclut pas la fonction de lecture de métronome. Lorsque j'ai essayé de l'utiliser dans le tableau de bord, le programme ne lisait pas l'audio de manière fiable: (Mais au moins Logic peut facilement faire cette partie.
Et la raison pour laquelle je vous ai montré comment créer des sons de deux manières différentes est que la version Audio Context utilisant un synthétiseur ne fonctionnerait pas dans le tableau de bord.
Enfin, vous ne pouvez pas simplement cliquer sur F12 et continuer à utiliser la barre d'espace pour obtenir le tempo, vous devez cliquer directement sur le bouton, ce qui est une rétrogradation. Mais je pense que c'est peut-être ainsi que je créerai des petits widgets à partir de maintenant. Si vous avez des idées sympas pour cela, montrez-moi quand vous les avez mises en œuvre:)
Inscrivez-vous à notre liste de diffusion !
Et oui, regardez T3chFlicks - nous fabriquons des trucs !
Conseillé:
Créez vos propres disques de duel à utiliser dans une arène de combat : 4 étapes
Créez vos propres disques de duel à utiliser dans une arène de combat : J'ai toujours été à moitié fasciné par les disques de duel trouvés dans la série de dessins animés Yugioh. Ne serait-il pas cool d'invoquer une créature en utilisant un jeu de cartes, puis de la faire affronter dans une sorte d'arène de combat holographique ? Ici, je vais passer en revue h
Créez vos propres écouteurs à partir de matières premières : 6 étapes (avec photos)
Créez vos propres écouteurs à partir de matières premières : Ici, nous allons créer des écouteurs personnalisés, à partir de matières premières ! Nous verrons le principe de fonctionnement, comment faire une version Poorman™ d'un haut-parleur avec seulement quelques matières premières, puis version utilisant la conception 3D et l'impression 3D
Créez vos propres panneaux avant : 7 étapes (avec photos)
Créez vos propres panneaux avant : lorsque vous avez investi beaucoup de temps dans le développement et le prototypage de votre projet de bricolage électronique et qu'il est enfin temps de le monter dans une boîte, vous réalisez que vous avez besoin d'un panneau avant pour le rendre plus professionnel. Dans ce instructable Je vais montrer
Créez vos propres caractères personnalisés dans Windows. : 4 étapes
Créez vos propres caractères personnalisés dans Windows. : Dans cette instructable, je vais vous montrer comment créer des caractères personnalisés avec une application intégrée à Windows. Ouais et tout. Méfiez-vous des photos qui sont faites en peinture. Ils peuvent faire peur
Créez vos propres interrupteurs d'alimentation à distance : 9 étapes (avec photos)
Fabriquez vos propres interrupteurs d'alimentation à distance : la plupart des gens connaissent l'alimentation en veille (c'est-à-dire que de nombreux appareils électroniques continuent de consommer de l'énergie même lorsqu'ils sont éteints). Une façon d'éliminer l'alimentation en veille consiste à utiliser une barre d'alimentation ou un parasurtenseur avec un interrupteur intégré pour éteindre la con