Skip to content

Music (ट्यूनर / मेट्रोनोम / Drums)

संगीत उपयोगिता ऐप। 7 टैब जो गिटार ट्यूनिंग सीखने से लेकर हेडफ़ोन को कैलिब्रेट करने के लिए शुद्ध टोन उत्पन्न करने तक, बीच में TR-808 शैली के सिंथेसाइज़्ड ड्रम के साथ कवर करते हैं।

Music ऐप — एकल पैनल में 7 टैब

Tablatura से अंतर: Music "स्वतंत्र उपकरण" है। Tablatura मल्टीट्रैक संपादक है। वे ऑडियो प्रिमिटिव्स (useAudioContext, ड्रम सिंथ, वॉयस) साझा करते हैं लेकिन UI और प्रवाह पूरी तरह से अलग हैं।

7 टैब

टैबकार्यपहचान रंग
TunerYIN ±1 cent क्रोमैटिक ट्यूनरहरा #00d97e
Metronomeउच्च परिशुद्धता मेट्रोनोम (25ms लुकअहेड शेड्यूलर)नारंगी #ff9500
Frequencyशुद्ध टोन जनरेटर (50Hz–20kHz) + बाइनॉरल बीट्सबैंगनी #af52de
Drumsसिंथेसाइज़्ड ड्रम (16 पैड × 3 किट) + सीक्वेंसरलाल #ff453a
Pianoवर्चुअल पियानो 2 ऑक्टेव्स + सस्टेन पेडलनीला #5ac8fa
Chordsपहचानकर्ता + आरेख के साथ कॉर्ड्स लाइब्रेरीपीला #ffd60a
Scalesस्केल्स विज़ुअलाइज़र (12 रूट्स × 12 प्रकार)फिरोज़ी #5ee3ff

Tuner

YIN (Cheveigne & Kawahara 2002) का उपयोग करते हुए क्रोमैटिक ट्यूनर — ~250 लाइन कोड, बिना dep, ~1 cent परिशुद्धता। 50-2000Hz रेंज सभी सामान्य उपकरणों को कवर करती है।

3 व्यू मोड:

  • Needle (डिफ़ॉल्ट): भौतिक ट्यूनर शैली का विंटेज पॉइंटर, पिछले 10 सेकंड टाइमिंग ग्राफ के साथ
  • Spectrum: FFT बार (क्लासिक स्टेज ट्यूनर शैली)
  • VU: बैलिस्टिक डंपिंग के साथ रेट्रो VU मीटर

संदर्भ A कॉन्फ़िगर करने योग्य (415-466 Hz, डिफ़ॉल्ट 440)। बारोक संगीत (415) या विंटेज जैज़ (442) के लिए उपयोगी।

रिकॉर्डिंग सत्र: "रिकॉर्ड" क्लिक करें → 60 सेकंड तक ऑडियो + टाइमलाइन { t, freq, cents, note } रिकॉर्ड करता है जो अंत में ग्राफ बन जाता है। यह देखने के लिए अच्छा है कि क्या आप कहीं डिट्यून हुए।

Metronome

उच्च परिशुद्धता शेड्यूलर (100ms लुकअहेड AudioContext.currentTime पर इवेंट शेड्यूल करता है)। setInterval ड्रिफ्ट होता है — यह नहीं।

  • BPM: 40-240
  • टाइम सिग्नेचर: 4/4 (डिफ़ॉल्ट), 3/4, 6/8, 5/4, 7/8, 12/8
  • उपविभाजन: चौथाई, आठवां, ट्रिप्लेट्स, सोलहवां
  • 4 ध्वनियां (click / woodblock / cowbell / beep) — प्रत्येक की पहली बीट पर ऊंची "एक्सेंट" वेरिएंट है
  • BPM Detector: "BPM का पता लगाएं" दबाएं, कैमरा/माइक के साथ टेम्पो को टैप करें। एल्गोरिथ्म ऑनसेट डिटेक्शन + ऑटोकोरिलेशन को जोड़ता है। बिना शीट म्यूज़िक के संगीत कवर करने के लिए उपयोगी
  • Practice Timer: एकीकृत काउंटडाउन। X मिनट के लिए मेट्रोनोम बजाता है, साथ में रुकता है

Frequency Generator

4 वेवफॉर्म (sine / square / triangle / sawtooth) के साथ शुद्ध OscillatorNode। 50Hz से 20kHz। वॉल्यूम स्लाइडर 0-100% लॉग कर्व के साथ (नॉन-लीनियर परसेप्शुअल मैच के लिए)।

बाइनॉरल बीट्स (टॉगल): बाएं कान में एक आवृत्ति बजाता है, दाहिने कान में थोड़ा अलग। मस्तिष्क अंतर (1-30Hz) को तीसरी फ़ैंटम आवृत्ति के रूप में मानता है। मेडिटेशन/एकाग्रता ऐप्स में उपयोग। क्लिनिकल कान का विकल्प नहीं, प्रयोगात्मक है।

प्रभाव श्रृंखला (ऑन/ऑफ टॉगल): वैकल्पिक रिवर्ब + डिले। मिक्सर UI नहीं — केवल टॉगल + मिक्स स्लाइडर।

Drums

16 पैड × 3 किट (Acoustic / Electronic / Latin)। प्रत्येक हिट OscillatorNode + GainNode + BiquadFilterNode है जो सिंथेटिक रूप से एनवेलप्ड है — शून्य सैंपल फाइलें। बंडल को फुलाए बिना TR-808 शैली का प्रतिष्ठित ध्वनि।

Sequencer: ग्रिड चरण-आधारित, प्रति चरण मोनोफोनिक। 4 बार कैप। "पैटर्न सहेजें" टैप करें Firestore में सहेजने के लिए (users/{uid}/roqueos/music.drums.sequencerPattern)।

Presets: ~25 क्यूरेटेड ग्रूव्स (rock basic, funk shuffle, bossa nova, jazz swing, latin clave)। प्रीसेट लागू करना वर्तमान पैटर्न को बदल देता है — यदि नोट पहले से रिकॉर्ड किया गया है तो पुष्टिकरण संवाद।

महत्वपूर्ण iOS क्विर्क

iPhone पर Web Audio ऐप्स के लिए एक प्रलेखित वर्कअराउंड है:

  • साइलेंट स्विच बग: iPhone का भौतिक साइलेंट बटन उच्च वॉल्यूम के साथ भी Web Audio को म्यूट करता है। Apple Music/Spotify इसे हल करते हैं क्योंकि वे नेटिव ऐप्स हैं।
  • आंशिक वर्कअराउंड: ऐप playsInline + MediaSession metadata के साथ एक अदृश्य HTMLAudioElement बनाता है, पहले उपयोगकर्ता इशारे पर ट्रिगर करता है। यह ऑडियो सत्र को आंशिक रूप से media playback के रूप में "दावा" करता है।
  • परिणाम: अधिकांश मामले काम करते हैं। कुछ विशिष्ट iPhone (पुराने मॉडल, पुराने iOS) अभी भी म्यूट करते हैं।

iOS का पता लगाने पर स्वचालित रूप से एम्बर बैनर दिखाई देता है, "समझ गया" बटन के साथ जो localStorage में dismiss को बनाए रखता है। यह ब्लॉकर नहीं है — बस व्यवहार की व्याख्या करता है।

निश्चित समाधान (जब Capacitor के माध्यम से App Store में शिप किया जाता है): नेटिव Swift प्लगइन WebView माउंट होने से पहले AVAudioSessionCategoryPlayback कॉन्फ़िगर करता है। 87-music-system.md अनुभाग "iOS साइलेंट स्विच — वर्तमान सीमा + भविष्य Capacitor" में प्रलेखित।

स्थायित्व

Firestore पथ: users/{uid}/roqueos/music

स्थायी:

json
{
  "tuner": { "referenceA": 440, "viewMode": "needle" },
  "metronome": { "lastBPM": 120, "lastTimeSignature": "4/4", "practiceTimerMinutes": 15 },
  "frequency": { "lastHz": 440, "lastWave": "sine", "binauralEnabled": false, "delayEnabled": false },
  "drums": { "lastKit": "acoustic", "masterVolume": 0.8, "sequencerPattern": {...} },
  "scales": { "lastRoot": "C", "lastType": "major" },
  "chords": { "capoFret": 0 }
}

डिबाउंस्ड सेव 800ms। UI को नहीं फ्रीज करता।

दृश्य पहचान

प्रत्येक टैब में --tab-accent (hex) इनलाइन CSS वेरिएबल के रूप में इंजेक्ट किया गया है। रूट पर एम्बिएंट मेश ::before + rgba(var(--tab-accent-rgb), alpha) के माध्यम से घटकों में चमक।

परिणाम: सक्रिय टैब स्क्रीन बदले बिना पूरे पैनल को सूक्ष्म रूप से "रंग" देता है।

स्वीकृत व्यापार-बंद

  • सिंथेसिस > सैंपल: सिंथेसाइज़्ड किट की अपनी पहचान (TR-808) है। Battery 4 नहीं। अध्ययन और कैजुअल बीट बनाने के लिए ठीक है।
  • प्रति चरण मोनोफोनिक सीक्वेंसर: प्रत्येक चरण ऑन या ऑफ। वेलोसिटी/स्विंग नहीं। DAW नहीं।
  • ऑनसेट टाइप BPM डिटेक्टर: स्थिर टेम्पो (ताली, kick) के लिए अच्छा। भारी सिंकोपेशन वाले जटिल संगीत के लिए बुरा।
  • Capo केवल कॉर्ड का नाम बदलता है: पूर्ण ट्रांसपोज़्ड प्रगति नहीं बजाता। "मैंने E में टैब किया, capo 2 के साथ D में देखना चाहता हूं" मामले को कवर करता है।

संदर्भ

  • src/config/apps.js में पंजीकृत ऐप (id: 'music')
  • घटक: src/components/roqueos/apps/ROSMusic.vue
  • कंपोज़ेबल्स: src/composables/useAudioContext.js (सिंगलटन), src/composables/useAudioScheduler.js (परिशुद्धता शेड्यूलर)
  • YIN एल्गोरिथ्म: src/utils/music/pitchAlgorithms.js
  • ड्रम सिंथेसिस: src/utils/music/drumSynth.js
  • पूर्ण नियम .claude/rules/87-music-system.md में
  • समानांतर ऐप: Tablatura (मल्टीट्रैक एडिटर) — समान ऑडियो प्रिमिटिव्स का उपयोग करता है