ዝርዝር ሁኔታ:

የአርዱዲኖ ሙዚቃ ማስታወሻዎች መፈለጊያ -3 ደረጃዎች
የአርዱዲኖ ሙዚቃ ማስታወሻዎች መፈለጊያ -3 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ሙዚቃ ማስታወሻዎች መፈለጊያ -3 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ሙዚቃ ማስታወሻዎች መፈለጊያ -3 ደረጃዎች
ቪዲዮ: Arduino በከፊል ሲብራራ https://t.me/arduinoshopping 2024, ህዳር
Anonim
Image
Image

ከድምጽ ምልክቱ የሙዚቃ ማስታወሻዎችን መለየት በተለይ በአርዱዲኖ ላይ በአነስተኛ ማህደረ ትውስታ እና በአሠራር ኃይል ምክንያት ማድረግ ከባድ ነው። በአጠቃላይ ማስታወሻው መፈለጊያውን አስቸጋሪ የሚያደርገው የንፁህ ሳይን ሞገድ አይደለም። የተለያዩ የሙዚቃ መሳሪያዎችን ተደጋጋሚነት ለውጥ ከወሰድን ፣ እየተጫወተ ባለው ማስታወሻ ላይ በመመርኮዝ ብዙ ሃርሞኒኮችን ሊይዝ ይችላል። እያንዳንዱ መሣሪያ የተለያዩ የተስማሙ የራሱ የሆነ የፊርማ ጥምረት አለው። በዚህ ኮድ ውስጥ በተቻለ መጠን ብዙ መሣሪያዎችን ሊሸፍን የሚችል ፕሮግራም ለማድረግ ሞከርኩ። የተለያዩ የመሣሪያ ዓይነቶችን ፣ በቁልፍ ሰሌዳው የተፈጠሩ የተለያዩ ድምፆችን ፣ እና የድምፅ ድምጽን እንኳን ለመፈተሽ የሞከርኩበትን የተያያዘ ቪዲዮን ሊያመለክቱ ይችላሉ። የመመርመሪያው ትክክለኛነት እንደ መሳሪያ ይለያያል። ለአንዳንድ መሣሪያ (ማለትም ፒያኖ) በተወሰነ ክልል (200-500Hz) ውስጥ ትክክለኛ ነው ፣ አንዳንድ መሣሪያዎች ዝቅተኛ ትክክለኛነት (ማለትም ሃርሞኒካ)።

ይህ ኮድ ቀደም ሲል የተዘጋጀውን ኤፍኤፍቲ ኮድ (EasyFFT) የተባለ ኮድ ይጠቀማል።

የኮዱ ማሳያ በተለያዩ የመሣሪያ ድምጽ እንዲሁም በድምፅ ዓይነቶች ከላይ ባለው ቪዲዮ ላይ ይታያል።

አቅርቦቶች

- አርዱዲኖ ናኖ/ኡኖ ወይም ከዚያ በላይ

- የማይክሮፎን ሞዱል ለአርዱዲኖ

ደረጃ 1 - ለማስታወሻ ማወቂያ ስልተ ቀመር

በቀደመው ደረጃ እንደተጠቀሰው ፣ በድምጽ ናሙናዎች ውስጥ ብዙ ድግግሞሽ በመኖሩ ምክንያት ማወቅ አስቸጋሪ ነው።

መርሃግብሩ በሚከተለው ፍሰት ውስጥ ይሠራል

1. የውሂብ ማግኛ;

- ይህ ክፍል በፍላጎት ድግግሞሽ ላይ በመመስረት ከድምጽ መረጃ 128 ናሙናዎችን ይወስዳል ፣ በሁለት ናሙናዎች (የናሙና ድግግሞሽ) መካከል መለየት። በዚህ ሁኔታ ፣ በሁለት ናሙናዎች መካከል ክፍተትን እንጠቀማለን የሃን የመስኮት ተግባርን እንዲሁም ስፋት/አርኤምኤስ ስሌትን ለመተግበር ያገለግላል። ይህ ኮድ እንዲሁ ከአናሎግ ንባብ እሴት 500 በመቀነስ ሻካራ ዜሮ ያደርጋል። አስፈላጊ ከሆነ ይህ እሴት ሊለወጥ ይችላል። ለተለመደው ጉዳይ ፣ ይህ እሴቶች በጥሩ ሁኔታ ይሰራሉ። በተጨማሪም ፣ 1200Hz አካባቢ የናሙና ድግግሞሽ እንዲኖረው አንዳንድ መዘግየት መጨመር ያስፈልጋል። በ 1200Hz የናሙና ድግግሞሽ ከፍተኛው 600 HZ ድግግሞሽ ሊገኝ ይችላል።

ለ (int i = 0; i <128; i ++) {a = analogRead (Mic_pin) -500; // ሻካራ ዜሮ ፈረቃ ድምር 1 = sum1+ሀ; // ወደ አማካይ እሴት ድምር 2 = sum2+ሀ*ሀ; // ወደ RMS እሴት a = a*(ኃጢአት (i*3.14/128)*ኃጢአት (i*3.14/128)); // የሃን መስኮት በ = 4*ሀ; // ወደ ተንሳፋፊነት ወደ የመቀየሪያ መዘግየት ማይክሮክሰከንዶች (195) // በአሠራር ድግግሞሽ ክልል ላይ የተመሠረተ}

2. FFT ፦

አንዴ መረጃ ከተዘጋጀ ፣ ኤፍኤፍቲ EasyFFT ን በመጠቀም ይከናወናል። ይህ የ EasyFFT ተግባር ለ 128 ናሙናዎች FFT ን ለማስተካከል የተቀየረ ነው። የማህደረ ትውስታ ፍጆታን ለመቀነስ ኮዱም ተስተካክሏል። 128 ናሙናዎችን ብቻ ስንፈልግ እስከ 1028 ናሙናዎች (ተኳሃኝ ከሆነው ቦርድ ጋር) እንዲኖረው የተቀየሰው የመጀመሪያው የ EasyFFT ተግባር። ይህ ኮድ ከመጀመሪያው የ EasyFFT ተግባር ጋር ሲነፃፀር የማስታወሻ ፍጆታን ወደ 20% ገደማ ይቀንሳል።

ኤፍኤፍቲ አንዴ ከተጠናቀቀ ፣ ኮዱ ለተጨማሪ ትንተና ከፍተኛዎቹን 5 ዋና ዋና ድግግሞሽ ጫፎች ይመልሳል። ይህ ድግግሞሽ በቅደም ተከተል በቅደም ተከተል በቅደም ተከተል ተስተካክሏል።

3. ለእያንዳንዱ ጫፍ ኮዱ ከእሱ ጋር የተቆራኙ ሊሆኑ የሚችሉ ማስታወሻዎችን ያሳያል። ይህ ኮድ እስከ 1200 Hz ብቻ ይቃኛል። ከፍተኛ ድግግሞሽ ካለው ድግግሞሽ ጋር ተመሳሳይ ማስታወሻ መያዝ አስፈላጊ አይደለም።

ሁሉም ድግግሞሾች ከ 0 እስከ 255 መካከል በካርታ ተይዘዋል ፣

እዚህ የመጀመሪያው ኦክታቭ ተገኝቷል ፣ ለምሳሌ ፣ 65.4 Hz እስከ 130.8 አንድ ኦክታቭን ፣ 130.8 Hz ወደ 261.6 Hz ሌላን ይወክላል። ለእያንዳንዱ ኦክታቭ ፣ ድግግሞሽዎች ከ 0 እስከ 255. በካርታ ተቀርፀዋል እዚህ ከ C እስከ C 'ይጀምራል።

ከሆነ (f_peaks > 1040) {f_peaks = 0;} ከሆነ (f_peaks > = 65.4 && f_peaks = 130.8 && f_peaks = 261.6 && f_peaks = 523.25 && f_peaks = 1046 && f_peaks <= 2093) {f_peaks = 255*((f_peaks /1046) -1);}

የ NoteV ድርድር እሴቶች ማስታወሻውን ለተገኙት ድግግሞሾች ለመመደብ ያገለግላሉ።

ባይት ማስታወሻ ቪ [13] = {8 ፣ 23 ፣ 40 ፣ 57 ፣ 76 ፣ 96 ፣ 116 ፣ 138 ፣ 162 ፣ 187 ፣ 213 ፣ 241 ፣ 255} ፤

4. ለእያንዳንዱ ድግግሞሽ ማስታወሻ ከተሰላ በኋላ ተመሳሳይ ማስታወሻ የሚጠቁሙ በርካታ ድግግሞሾች መኖራቸው ሊሆን ይችላል። ትክክለኛ የውጤት ኮድ እንዲኖር እንዲሁ ድግግሞሾችን ይመለከታል። ኮዱ በአመዛኙ ቅደም ተከተል እና ድግግሞሽ ላይ በመመርኮዝ ሁሉንም የድግግሞሽ እሴቶችን ያክላል እና ማስታወሻውን ከከፍተኛው ስፋት ጋር ያነሳል።

ደረጃ 2 - ማመልከቻ

ኮዱን መጠቀም ቀጥታ ወደ ፊት ነው ፣ ሆኖም ፣ በሚኖሩበት ጊዜ መታወስ ያለባቸው በርካታ ገደቦችም አሉ። ለማስታወሻ ማወቅ ጥቅም ላይ እንደዋለ ኮዱ ሊገለበጥ ይችላል። በሚጠቀሙበት ጊዜ የሚከተሉትን ነጥቦች ግምት ውስጥ ማስገባት ያስፈልጋል።

1. የፒን ምደባ

በተያያዘው የፒን ምደባ ላይ በመመርኮዝ መለወጥ ያስፈልጋል። ለሙከራዬ ፣ ለአናሎግ ፒን 7 አስቀምጫለሁ ፣

ባዶነት ማዋቀር () {Serial.begin (250000); Mic_pin = A7; }

2. የማይክሮፎን ትብነት

የማይክሮፎን ትብነት መለወጥ አለበት እንዲህ ዓይነቱ ሞገድ በጥሩ ስፋት ሊፈጠር ይችላል። በአብዛኛው ፣ የማይክሮፎን ሞጁል ከስሜታዊነት ቅንብር ጋር ይመጣል። እንዲህ ዓይነቱ ምልክት በጣም ትንሽ አለመሆኑን እና እንዲሁም በከፍተኛ ስፋት ምክንያት ክሊፖችን አያጠፋም።

3. የጅምላ ስፋት

ይህ ኮድ የሚሠራው የምልክት መጠኑ በቂ ከሆነ ብቻ ነው። ይህ ቅንብር በተጠቃሚው በእጅ መዘጋጀት አለበት። ይህ እሴት በማይክሮፎን ትብነት እና በትግበራ ላይ የተመሠረተ ነው።

ከሆነ (sum2-sum1> 5) {

..

ከላይ ባለው ኮድ ፣ ድምር 2 የ RMS ዋጋን ይሰጣል ፣ ድምር 1 አማካይ ዋጋን ይሰጣል። ስለዚህ በእነዚህ ሁለት እሴቶች መካከል ያለው ልዩነት የድምፅ ምልክቱን ስፋት ይሰጣል። በእኔ ሁኔታ ፣ በ 5 ገደማ ስፋት ስፋት እሴት በትክክል ይሠራል።

4. በነባሪ ፣ ይህ ኮድ የተገኘውን ማስታወሻ ያትማል። ሆኖም ማስታወሻውን ለሌላ ዓላማ ለመጠቀም ካሰቡ ፣ በቀጥታ የተመደበው ቁጥር ጥቅም ላይ መዋል አለበት። ለምሳሌ C = 0; C#= 1 ፣ D = 2 ፣ D#= 3 እና ወደፊት።

5. መሣሪያው ከፍተኛ ድግግሞሽ ካለው ፣ ኮዱ የሐሰት ውፅዓት ሊሰጥ ይችላል። ከፍተኛው ድግግሞሽ በናሙና ድግግሞሽ የተገደበ ነው። ስለዚህ ምርጡን ውጤት ለማግኘት ከመዘግየት እሴቶች በታች ዙሪያ መጫወት ይችላሉ። ከ 195 ማይክሮ ሰከንድ በታች ባለው የኮድ መዘግየት። ከፍተኛውን ውጤት ለማግኘት ሊስተካከል የሚችል። ይህ አጠቃላይ የአፈፃፀም ጊዜን ይነካል።

{a = analogRead (Mic_pin) -500; // ሻካራ ዜሮ ሽግግር

ድምር 1 = ድምር 1+ሀ; // ወደ አማካይ እሴት ድምር 2 = sum2+ሀ*ሀ; // ወደ RMS እሴት a = a*(ኃጢአት (i*3.14/128)*ኃጢአት (i*3.14/128)); // የሃን መስኮት በ = 4*ሀ; // ወደ ተንሳፋፊነት ወደ የመቀየሪያ መዘግየት ማይክሮክሰከንዶች (195) // በአሠራር ድግግሞሽ ክልል ላይ የተመሠረተ}

6. ይህ ኮድ እስከ 2000Hz ድግግሞሽ ድረስ ብቻ ይሠራል። በናሙና ናሙና መካከል በ 3-4 kHz አካባቢ መካከል ያለውን መዘግየት በማስወገድ ማግኘት ይቻላል።

ቅድመ ጥንቃቄዎች:

  • በ EasyFFT አጋዥ ስልጠና ውስጥ እንደተጠቀሰው ኤፍኤፍቲ አርዱዲኖን በጣም ብዙ ማህደረ ትውስታን ይበላል። ስለዚህ አንዳንድ እሴቶችን ማከማቸት የሚያስፈልገው ፕሮግራም ካለዎት ከፍ ያለ ማህደረ ትውስታ ያለው ሰሌዳ እንዲጠቀሙ ይመከራል።
  • ይህ ኮድ ለአንድ መሣሪያ/ድምፃዊ እና ለሌላው መጥፎ ሊሆን ይችላል። በስሌታዊ ገደቦች ምክንያት የእውነተኛ ጊዜ ትክክለኛ ማወቅ አይቻልም።

ደረጃ 3 - የበጋ ወቅት

የማስታወሻ ማወቂያ በስሌቱ የተጠናከረ ሥራ ነው ፣ የእውነተኛ ጊዜ ውጤትን ማግኘት በተለይ በአርዱዲኖ ላይ በጣም ከባድ ነው። ይህ ኮድ ወደ 6.6 ናሙናዎች /ሰከንዶች (ለ 195 ማይክሮ ሰከንድ መዘግየት ተጨምሯል) ሊሰጥ ይችላል። ይህ ኮድ ከፒያኖ እና ከሌሎች አንዳንድ መሣሪያዎች ጋር በጥሩ ሁኔታ ይሠራል።

ይህ ኮድ እና አጋዥ ስልጠና ከሙዚቃ ጋር በተዛመደ ፕሮጀክትዎ ውስጥ ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ። ማንኛውም ጥርጣሬ ወይም ጥቆማ ቢኖርዎት አስተያየት ለመስጠት ወይም ለመላክ ነፃነት ይሰማዎ።

በመጪው መማሪያ ውስጥ ፣ ይህንን ኮድ ለሙዚቃ ዘፈን ማወቂያ እለውጣለሁ። ስለዚህ ይከታተሉ።

የሚመከር: