Სარჩევი:

რეალურ დროში აუდიო MIDI კონვერტორი .: 7 ნაბიჯი
რეალურ დროში აუდიო MIDI კონვერტორი .: 7 ნაბიჯი

ვიდეო: რეალურ დროში აუდიო MIDI კონვერტორი .: 7 ნაბიჯი

ვიდეო: რეალურ დროში აუდიო MIDI კონვერტორი .: 7 ნაბიჯი
ვიდეო: Marvel's Spider-man: Miles Morales (ფილმი) 2024, ივლისი
Anonim
რეალურ დროში აუდიო MIDI კონვერტორი
რეალურ დროში აუდიო MIDI კონვერტორი

ნამასტე ხალხი! ეს არის პროექტი, რომელზეც ვიმუშავე ჩემი ერთ-ერთი კურსისთვის (რეალურ დროში ციფრული სიგნალის დამუშავება) ბაკალავრის პროგრამაში. პროექტი მიზნად ისახავს DSP სისტემის შექმნას, რომელიც "უსმენს" აუდიო მონაცემებს და გამოსცემს შესაბამისი ჩანაწერების MIDI შეტყობინებებს UART- ით. არდუინო ნანო გამოიყენეს ამ მიზნით. მოკლედ რომ ვთქვათ, მიკროკონტროლერი აკეთებს FFT შემომავალ აუდიო მონაცემებს და ახდენს მწვერვალების ანალიზს და აგზავნის შესაბამის MIDI შეტყობინებას. ნუ შეგაწუხებთ MOSFET– ები, რადგან ისინი სხვა პროექტისთვისაა განკუთვნილი (რომელიც მოგვიანებით დაიდება ინსტრუქციებზეც) და არ არის საჭირო ამ პროექტისათვის. მოდი დავიწყოთ უკვე !!

ნაბიჯი 1: საჭირო კომპონენტები

კომპონენტები საჭირო
კომპონენტები საჭირო

ჩვენ დაგვჭირდება შემდეგი კომპონენტები ამ პროექტის ასაშენებლად, თუმცა ბევრი მათგანი ზოგადია და მათი ეკვივალენტებით ჩანაცვლება შესაძლებელია. ასევე მიმართეთ მიკროსქემის დიაგრამას შემუშავებისა და უკეთესი განხორციელებისათვის.

კომპონენტის რაოდენობა

1. ელექტროტექნიკური მიკროფონი. 1

2. 30 კილო ომის რეზისტორი. 1

3. 150 კილო ომის რეზისტორი. 1

4. 100 ohm რეზისტორი. 1

5. 2.2 კილო ომის რეზისტორები. 3

6. 10 კილო ომ წინასწარ განსაზღვრული ქოთანი. 1

7. 10 კილო ომის საპარსები ქოთანი. 1

8. 47 კილო ომის სტერეო ქოთანი. 1

9. 470 Ohms რეზისტორები. 2

10. 0.01uF კონდენსატორები. 2

11. 2.2uF კონდენსატორები. 3

12. 47uF კონდენსატორები. 2

13. 1000uF კონდენსატორი. 1

14. 470uF კონდენსატორი. 1

15. 7805 ძაბვის რეგულატორი. 1

16. ქალისა და მამაკაცის თავსაბურავი. თითოეული 1

17. ლულის ჯეკის კონექტორი. 1

18. 12 V 1 Amp DC ადაპტერი. 1

19. SPST გადამრთველი. (სურვილისამებრ) 1

20. პერფორი. 1

ნაბიჯი 2: ტექნიკური მახასიათებლები

ტექნიკური მახასიათებლები
ტექნიკური მახასიათებლები

შერჩევის სიხშირე: 3840 ნიმუში/წმ

ნიმუშების რაოდენობა FFT– ზე: 256

სიხშირის გარჩევადობა: 15 Hz

განახლების სიჩქარე: დაახლოებით 15 ჰც

მუსიკალური ნოტების ქვედა და უმაღლესი მასშტაბი სწორად არ არის აღბეჭდილი. ქვედა ნოტები განიცდიან დაბალი სიხშირის გარჩევადობას, სადაც უფრო მაღალი სიხშირეები განიცდიან შერჩევის დაბალ მაჩვენებლებს. არდუინო უკვე მეხსიერებას კარგავს, ამიტომ უკეთესი გარჩევადობის საშუალება არ არსებობს. და უკეთესი რეზოლუცია იქნება განახლების შემცირებული კურსის ფასად, ასე რომ კომპრომისი გარდაუვალია. ჰაიზენბერგის გაურკვევლობის პრინციპის ლეიმანის ვერსია.

უპირველესი სირთულეა ნოტებს შორის ექსპონენციალური მანძილი (როგორც ეს მოცემულია ფიგურაში. სიხშირის ღერძზე ყოველი იმპულსი არის მუსიკალური ნოტა). ალგორითმები, როგორიცაა LFT შეიძლება დაგეხმაროთ, მაგრამ ეს ცოტა მოწინავე და ცოტა გართულებულია ისეთი მოწყობილობისთვის, როგორიცაა არდუინო ნანო.

ნაბიჯი 3: წრიული დიაგრამები

წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები
წრიული დიაგრამები

შენიშვნა: ნუ შეგაწუხებთ სამი MOSFET და ხრახნიანი ტერმინალები სურათებზე. ისინი არ არიან საჭირო ამ პროექტისთვის. გაითვალისწინეთ, რომ მიკროფონის შეყვანის დაფა არის მოსახსნელი ან როგორც ეძახიან მას მოდულურს. ქვემოთ მოცემულია სხვადასხვა ბლოკის მცირე აღწერა.

1) ორი 470 ოჰმიანი რეზისტორი აერთიანებს სტერეო აუდიო სიგნალს მონო აუდიო სიგნალთან. დარწმუნდით, რომ სიგნალის საფუძველი გადადის ვირტუალურ მიწაზე (vg წრიული დიაგრამაში) და არა წრიულის მიწაზე.

2) მომდევნო ბლოკი არის მე -2 რიგის სალენ-გასაღები დაბალი გამავლობის ფილტრი, რომელიც პასუხისმგებელია შემსრულებლის შეზღუდვაზე შემავალი სიგნალისთვის, რათა თავიდან იქნას აცილებული ალიაზირება. ვინაიდან ჩვენ ვმუშაობთ მხოლოდ +12 ვ მიწოდებაზე, ჩვენ მიკერძოებული ვართ op-amp– ით RC ძაბვის გამყოფის გაკეთებით. რომელიც ატყუებს op -amp- ს და ფიქრობს, რომ მიწოდება არის 6 0 -6 ვოლტიანი მიწოდება (ორმაგი სარკინიგზო), სადაც vg არის ამომრთველის ძირითადი მინიშნება.

3) შემდეგ გამომავალი დაბალ გავლაა გაფილტრული, რომ დაბლოკოს DC ვოლსტი 6 ვოლტიანი და DC- თან ერთად 0.55 ვოლტი, რადგან ADC იქნება კონფიგურირებული გამოიყენოს შიდა 1.1 v როგორც Vref.

შენიშვნა: ელექტრო მიკროფონის წინასწარი გამაძლიერებელი არ არის საუკეთესო წრე ინტერნეტში. უკეთესი ჩართვა იქნებოდა ჩართვა op-amp– ით. ჩვენ გვსურს, რომ სიხშირის პასუხი იყოს რაც შეიძლება ბრტყელი. 47 კილოგრამიანი სტერეო ქოთანი გამოიყენება გათიშვის სიხშირის დასადგენად, რომელიც ჩვეულებრივ უნდა იყოს შერჩევის სიხშირის ნახევარი. 10 კილო ohm წინასწარ (პატარა ქოთანი თეთრი თავით) გამოიყენება ფილტრის მომატებისა და Q მნიშვნელობის გასაზომად. 10 კილოგრამიანი ომის საპარსები ქოთანი (ერთი მეტალის დამამკვიდრებელი სახელურით, რომელიც ჰგავს პატარა ბრტყელ თავზე ხრახნს) გამოიყენება ძაბვის დასაყენებლად ნახევარ Vref– თან ახლოს.

შენიშვნა: როდესაც თქვენ აკავშირებთ ნანოს P. C. შეინახეთ SPST გადამრთველი სხვა დახურული. განსაკუთრებული სიფრთხილით მოვეკიდოთ ამას, თუ ამას ვერ გავაკეთებთ, შეიძლება ზიანი მიაყენოს მიკროსქემს/კომპიუტერს/ძაბვის მარეგულირებელს ან ზემოაღნიშნულის რომელიმე კომბინაციას

ნაბიჯი 4: აუცილებელი პროგრამები და IDE

საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
საჭირო აპლიკაციები და IDE
  1. Arduino Nano– ს კოდირებისთვის მე წავედი პრიმიტიულ AVR სტუდიასთან 5.1, რადგან ის ჩემთვის მუშაობს. თქვენ შეგიძლიათ იპოვოთ ინსტალერი აქ.
  2. Arduino Nano– ს პროგრამირებისთვის მე გამოვიყენე Xloader. მისი მართლაც ადვილი გამოსაყენებელი მსუბუქი ინსტრუმენტი დამწვრობა.ექვსმეტი ფაილი Arduinos. შეგიძლიათ მიიღოთ აქ.
  3. მცირე ბონუს მინი პროექტისთვის და მიკროსქემის დასარეგულირებლად გამოვიყენე დამუშავება. თქვენ შეგიძლიათ მიიღოთ იგი აქედან, მიუხედავად იმისა, რომ ყოველ გადახედვაში არის მნიშვნელოვანი ცვლილებები, ასე რომ თქვენ შეიძლება დაგჭირდეთ მოძველებული ფუნქციების დაკავება, რათა ესკიზი იმუშაოს.
  4. FL სტუდია ან ნებისმიერი სხვა MIDI დამუშავების პროგრამა. თქვენ შეგიძლიათ უფასოდ მიიღოთ FL studio შეზღუდული წვდომის ვერსია აქედან.
  5. მარყუჟის MIDI ქმნის ვირტუალურ MIDI პორტს და გამოვლენილია FL სტუდიის მიერ, თითქოს ეს იყოს MIDI მოწყობილობა. მიიღეთ იგივე ასლი აქედან.
  6. თმის გარეშე MIDI გამოიყენება MIDI შეტყობინებების წასაკითხად COM პორტიდან და გასაგზავნად მარყუჟის MIDI პორტში. ის ასევე აფიქსირებს MIDI შეტყობინებებს რეალურ დროში, რაც გამართლებას მოსახერხებელს ხდის. მიიღეთ თმის გარეშე MIDI აქედან.

ნაბიჯი 5: შესაბამისი კოდები ყველაფრისთვის

მინდა მადლობა გადავუხადო Electronic Lifes MFG (ვებ გვერდი აქ !!) იმ ფიქსირებული წერტილის FFT ბიბლიოთეკისთვის, რომელიც მე გამოვიყენე ამ პროექტში. ბიბლიოთეკა ოპტიმიზირებულია მეგა AVR ოჯახისთვის. ეს არის ბმული ბიბლიოთეკის ფაილებსა და კოდებზე, რომლებიც მან გამოიყენა. მე ვამაგრებ ჩემს კოდს ქვემოთ. იგი მოიცავს დამუშავების ესკიზს და AVR C კოდსაც. გთხოვთ გაითვალისწინოთ, რომ ეს არის ის კონფიგურაცია, რომელიც მუშაობდა ჩემზე და მე არ ვიღებ არანაირ პასუხისმგებლობას, თუ რაიმე ზიანს მიაყენებთ ამ კოდების გამო. ასევე, მე მქონდა ბევრი პრობლემა კოდის მუშაობის მცდელობისას. მაგალითად, DDRD- ს (მონაცემთა მიმართულების რეესტრი) აქვს DDDx (x = 0-7), როგორც ბიტი ნიღბები ჩვეულებრივი DDRDx- ის ნაცვლად (x = 0-7). დააკვირდით ამ შეცდომებს შედგენისას. ასევე მიკროკონტროლერის შეცვლა გავლენას ახდენს ამ განმარტებებზე, ასე რომ თვალი ადევნეთ ამას ასევე შედგენის შეცდომებთან მუშაობისას. და თუ გაინტერესებთ, რატომ ჰქვია პროექტის საქაღალდეს DDT_Arduino_328p.rar, მოდით ვთქვათ, რომ საღამოს ძალიან ბნელი იყო, როცა დავიწყე და მე საკმარისად ზარმაცი ვიყავი, რომ შუქი არ აენთო.: P

რაც შეეხება დამუშავების ესკიზს, მე გამოვიყენე დამუშავება 3.3.6 ამ ესკიზის დასაწერად. ესკიზში ხელით უნდა დააყენოთ COM პორტის ნომერი. თქვენ შეგიძლიათ შეამოწმოთ კომენტარები კოდში.

თუ ვინმეს შეუძლია დამეხმაროს კოდების Arduino IDE- ში და დამუშავების უახლეს ვერსიაში, მოხარული ვიქნები და კრედიტებს მივცემ დეველოპერებს / კონტრიბუტორებსაც.

ნაბიჯი 6: მისი დაყენება

  1. გახსენით კოდი და შეადგინეთ კოდი #განსაზღვრეთ pcvisual uncented და #განსაზღვრეთ midi_out კომენტარით.
  2. გახსენით xloader და დაათვალიერეთ დირექტორია კოდით, დაათვალიერეთ. Hex ფაილი და დაწვით ის ნანოზე შესაბამისი დაფისა და COM პორტის არჩევით.
  3. გახსენით დამუშავების ესკიზი და გაუშვით შესაბამისი COM პორტის ინდექსით. თუ ყველაფერი კარგად მიდის თქვენ უნდა გქონდეთ სიგნალის სპექტრის დანახვა pin A0– ზე.
  4. მიიღეთ ხრახნიანი დრაივერი და გადაატრიალეთ ტრიმერის ქვაბი სპექტრის სიბრტყემდე (DC კომპონენტი ნულთან ახლოს უნდა იყოს). მაშინ არ შეიყვანოთ სიგნალი დაფაზე. (არ დაურთოთ მიკროფონის მოდული).
  5. ახლა გამოიყენეთ ნებისმიერი სახის გაწმენდის გენერატორი, როგორიცაა მიკროფონიდან დაფაზე შეყვანა და სპექტრის დაკვირვება.
  6. თუ თქვენ ვერ ხედავთ სიხშირეების გაფრქვევას, შეამცირეთ გათიშვის სიხშირე 47 კილო ომის წინააღმდეგობის შეცვლით. ასევე გაზარდეთ მოგება 10 კილოგრამიანი ომზე წინასწარ განსაზღვრული ქოთნის გამოყენებით. შეეცადეთ მიიღოთ ბრტყელი და თვალსაჩინო გაწმენდის შედეგი ამ პარამეტრების შეცვლით. ეს არის სახალისო ნაწილი (პატარა ბონუსი!), ითამაშეთ თქვენი საყვარელი სიმღერები და ისიამოვნეთ მათი რეალურ დროში. (Უყურე ვიდეოს)
  7. ახლა შეადგინეთ ჩამონტაჟებული C კოდი ამჯერად #განსაზღვრეთ pcvisual კომენტირებული და #განსაზღვრეთ midi_out უკომენტაროდ.
  8. გადატვირთეთ ახალი შედგენილი კოდი arduino Nano– ზე.
  9. გახსენით LoopMidi და შექმენით ახალი პორტი.
  10. გახსენით FL სტუდია ან სხვა MIDI ინტერფეისის პროგრამა და დარწმუნდით, რომ მარყუჟის midi პორტი ჩანს MIDI პორტის პარამეტრებში.
  11. გახსენით თმის გარეშე MIDI არდუინოსთან დაკავშირებული. აირჩიეთ გამომავალი პორტი, რომ იყოს LoopMidi პორტი. გადადით პარამეტრებზე და დააყენეთ Baud– ის მაჩვენებელი 115200. ახლა შეარჩიეთ Arduino Nano– ს შესაბამისი COM პორტი და გახსენით პორტი.
  12. მიკროფონის მახლობლად დაუკარით რამდენიმე "სუფთა" ტონი და თქვენ უნდა მოისმინოთ შესაბამისი ნოტის დარტყმა MIDI პროგრამულ უზრუნველყოფაშიც. თუ პასუხი არ არის, შეეცადეთ შეამციროთ C კოდით განსაზღვრული up_threshold. თუ შენიშვნები ხდება შემთხვევით გააქტიურებული, მაშინ გაზარდეთ up_threshold.
  13. მიიღეთ თქვენი ფორტეპიანო და შეამოწმეთ რამდენად სწრაფია თქვენი სისტემა !! საუკეთესო ის არის, რომ ოქრო-ჩაკეტილი ჩანაწერების ზონაში მას შეუძლია კომფორტულად გამოავლინოს რამდენიმე ერთდროული ღილაკის დაჭერა მარტივად.

შენიშვნა: როდესაც COM პორტს წვდება ერთი პროგრამა, მას სხვა ვერ წაიკითხავს. მაგალითად, თუ თმის ვარცხნილობა MIDI კითხულობს COM პორტს, Xloader ვერ შეძლებს დაფის დახეთქვას

ნაბიჯი 7: შედეგები/ვიდეო

სულ ესაა ბიჭებო! იმედია მოგეწონებათ. თუ თქვენ გაქვთ რაიმე შემოთავაზება ან გაუმჯობესება პროექტში, შემატყობინეთ კომენტარების განყოფილებაში. მშვიდობა!

გირჩევთ: