मैं केवल 6 ऑडियो क्लिप का उपयोग करके गिटार की पूरी श्रृंखला को फिर से बनाने की कोशिश कर रहा हूं।ऑडियोक्लिप के लिए फ्रीक्वेंसी और पिच रिलेशन - यूनिटी 3 डी
मैं सोच रहा था कि एक ऑडियो क्लिप की आवृत्ति सेट करने का एक तरीका होगा लेकिन ऑडियो। फ्रीक्वेंसी केवल संपीड़न प्रारूप के आधार पर ऑडियो की आवृत्ति देता है, न कि वास्तविक स्वर।
मुझे पता है कि मैं GetSpectrumData पढ़ सकता हूं, लेकिन यह समाधान काफी जटिल है और इसके लिए कुछ फूरियर ट्रांसफॉर्म विश्लेषण या किसी प्रकार की आवश्यकता होगी।
पिच को प्रभावित करना, स्वर को बदलना आसान है, इसलिए मैं ऊपर और नीचे जा सकता हूं लेकिन इसका उपयोग करने के लिए क्या कदम हैं इसका पता लगाने का कोई तरीका है।
void Update()
{
CheckAudio(KeyCode.Q, 1.0f);
CheckAudio(KeyCode.W, 1.1f);
CheckAudio(KeyCode.E, 1.2f);
CheckAudio(KeyCode.R, 1.3f);
CheckAudio(KeyCode.T, 1.4f);
}
void CheckAudio(KeyCode key, float pitch)
{
if (Input.GetKeyDown (key))
{
audio.pitch = pitch;
audio.Play();
}
}
मैं यह सही नहीं लग रहा सुन सकते हैं।
1 पर पिच के साथ शुरुआती स्वर E4 329.63Hz को जानना क्या पिच को प्रभावित करने वाला कोई समीकरण है, मुझे अगली कुंजी F4 349.23Hz (या पर्याप्त बंद) मिल जाएगी?
यह भी माना जाना चाहिए कि यूनिटी ऑडियोसोर्स 3/3 रेंज के भीतर पिच को सीमित करता है (जो मुझे लगता है कि ज़रूरी है)।
संपादित करें: कुछ व्यक्तिगत शोध जोड़ना। ऐसा लगता है कि पिच 1 प्रारंभिक नोट है और 2 को सेटिंग एक ही कुंजी एक ऑक्टेट उच्च प्रदान करती है।
चूंकि एक वर्णक्रमीय पैमाने (पियानो पर सभी काले और सफेद नोट्स) 12 कुंजी हैं, मुझे लगता है कि प्रत्येक चरण के लिए 1/12 का उपयोग करना चाहिए।
यह करीब लगता है लेकिन मैं गिर गया यह बिल्कुल सही नहीं है। यहाँ नए कोड है:
[SerializeField] private AudioSource audio;
float step = 1f/12f;
KeyCode[]keys = new KeyCode[]{
KeyCode.Q, KeyCode.W,KeyCode.E,KeyCode.R,KeyCode.T,
KeyCode.Y, KeyCode.U, KeyCode.I, KeyCode.O, KeyCode.P,
KeyCode.A, KeyCode.S, KeyCode.D
};
void Update()
{
float f = 0.0f;
foreach (KeyCode key in keys)
{
CheckAudio(key, f);
f += 1f;
}
}
void CheckAudio(KeyCode key, float pitch)
{
if (Input.GetKeyDown (key))
{
audio.pitch = 1f + pitch * step;
audio.Play();
}
}
हाँ मैं दूसरा समाधान के बारे में सोचा लेकिन स्कैनिंग था अगर वहाँ एक और अधिक हो जाएगा आपके द्वारा उल्लिखित डाउनसाइड्स से बचने के लिए प्रोग्रामेटिक दृष्टिकोण। अब जब आप इसे लाएंगे, तथ्य यह है कि पिच ऊपर जाने के दौरान ध्वनि कम हो सकती है। एक गिटार के बारे में सोचते हुए, जैसे आप fretboard ऊपर जाते हैं, स्ट्रिंग कम होती है और कम समय तक गूंजती है। चूंकि यह एक निजी शोध परियोजना है, मुझे लगता है कि मैं पूरी तरह से सही समाधान के साथ जाऊंगा। फिर भी धन्यवाद। – Everts
@Everts यदि आपको इस बात की परवाह नहीं है कि यह कितना सही है, तो आप उस कोड को अभी संपादित किए गए संपादन से आजमा सकते हैं। यह मुझसे नहीं है लेकिन मैंने एक लिंक रखा जहां से यह आया था। मुझे लगता है कि वह समीकरण है जिसे आप शायद ढूंढ रहे हैं। – Programmer
ठीक है संपादन वास्तव में पर्याप्त से अधिक है। मैं कुछ ऑनलाइन पियानो की तुलना कर रहा हूं और यह ठीक है। इसके लिए बहुत धन्यवाद। – Everts