Talaan ng mga Nilalaman:

Arpeggiating Synthesizer (Mosquito I): 6 na Hakbang
Arpeggiating Synthesizer (Mosquito I): 6 na Hakbang

Video: Arpeggiating Synthesizer (Mosquito I): 6 na Hakbang

Video: Arpeggiating Synthesizer (Mosquito I): 6 na Hakbang
Video: Synth Arpeggiation Tutorial — Daniel Fisher 2024, Disyembre
Anonim
Arpeggiating Synthesizer (Mosquito I)
Arpeggiating Synthesizer (Mosquito I)

Ang Mosquito I ay isang maliit na synthesizer ng arpeggiating na gumagamit ng isang Arduino Nano at ang library ng synthesis ng tunog ng Mozzi. Maaari itong maglaro ng higit sa dalawampu't 8-hakbang na mga pagkakasunud-sunod ngunit maaari kang magdagdag ng maraming mga pasadyang pagkakasunud-sunod ayon sa gusto mo. Ito ay medyo simple upang i-set up at hindi nangangailangan ng maraming mga bahagi.

Mga Pantustos:

  • Arduino Nano (o anumang Arduino talagang dapat gumana)
  • 5 ea Potentiometers (10K Linear)
  • 2 ea Push button
  • 1 ea LED
  • 1 ea Resistor (330 ohm)
  • 2 ea Resistor (1K)
  • 1 ea Resistor (2K)
  • 1 ea Electrolytic Capacitor (100 uF)
  • 1 ea Ceramic Capacitor (33 nF)
  • 1 ea Stereo Jack
  • Hookup wire
  • Breadboard

Hakbang 1: Pag-set up ng Arduino

Pag-set up ng Arduino
Pag-set up ng Arduino
Pag-set up ng Arduino
Pag-set up ng Arduino

Una, kunin natin ang Nano sa breadboard at i-set up ang ating lakas:

  1. Ilagay ang Nano sa breadboard. Ilagay tulad ng ipinakita sa imahe sa itaas. Dapat itong straddle sa gitnang channel ng breadboard. Gugustuhin mong tumayo ito patungo sa isang dulo ng breadboard, na nakaharap sa gilid ng USB port. Sa ganitong paraan hindi makagambala ang cable kapag na-plug in namin ito. Kung gumagamit ka ng isang mas malaking Arduino tulad ng Uno o Mega, hindi mo ito ilalagay sa breadboard syempre.
  2. Ikonekta ang mga riles ng kuryente sa Arduino. Ikonekta ang isa sa mga positibo (pula) na daang-bakal ng iyong breadboard sa 5V pin ng Arduino gamit ang wire o jumper wires. Pagkatapos ay ikonekta ang isa sa mga negatibong (asul) na daang-bakal sa isa sa mga pin ng GND ng Nano.
  3. Ikonekta ang mga riles ng kuryente sa bawat isa. Upang makakuha ng kuryente sa mga daang riles sa magkabilang panig ng breadboard, ikonekta ang mga riles sa magkabilang panig ng breadboard sa bawat isa sa pamamagitan ng pagpapatakbo ng isang kawad mula sa positibong riles sa isang gilid patungo sa positibong riles sa kabilang panig. Ulitin ito sa mga negatibong daang-bakal.

Hakbang 2: Pagdaragdag ng Mga Kontrol

Pagdaragdag ng Mga Kontrol
Pagdaragdag ng Mga Kontrol

Gumagamit ako ng lamok ng limang potentiometers at dalawang mga pindutan para sa mga kontrol.

Mga potensyal:

  1. Ilagay ang mga kaldero sa breadboard. Ilagay ang mga kaldero upang ang bawat pin ay nasa sarili nitong hilera.
  2. Ikonekta ang mga kaldero sa mga riles ng kuryente. Ikonekta ang kaliwang gilid na pin ng bawat palayok (kung nakatingin ka sa knob-side) sa isa sa mga negatibong daang-bakal sa breadboard. Ikonekta ang kanang gilid na pin ng bawat palayok sa isa sa mga positibong daang-bakal ng breadboard.
  3. Ikonekta ang mga kaldero sa Arduino. Ikonekta ang gitnang pin ng bawat palayok sa isa sa mga analog na pin sa Arduino. Ang pin ng pangunahing palayok ay kumokonekta sa A0, ang pangalawang palayok sa A1 at iba pa kasama ang huling palayok na konektado sa A4.

Mga Push Button:

  1. Ilagay ang mga pindutan sa breadboard. Ilagay ang dalawang pindutan ng push sa breadboard upang mai-straddle nila ang gitnang channel.
  2. Ikonekta ang mga positibong panig. Sa isang bahagi ng breadboard, ikonekta ang isa sa mga pin ng push-button sa positibong riles.
  3. Ikonekta ang mga negatibong panig. Ilagay ang isa sa mga resistors ng 1K sa breadboard upang ang isang dulo ay konektado sa hindi nagamit na pindutan ng push button at ang kabilang panig ng risistor ay kumokonekta sa negatibong riles.
  4. Button na kumonekta sa Arduino. Patakbuhin ang isang kawad sa hilera na nag-uugnay sa pindutan sa negatibong riles sa D2 pin. Gawin ang pareho sa iba pang pindutan ngunit ikonekta ito sa D3.

Hakbang 3: Pagdaragdag ng Mga Output

Pagdaragdag ng Mga Output
Pagdaragdag ng Mga Output

Naglalabas kami ng audio mula sa pin 9 pati na rin ang pag-flash ng isang LED sa unang hakbang ng bawat pagkakasunud-sunod. Narito kung paano i-set up ang hardware para doon.

LED

  1. Maglagay ng isang LED sa isang walang laman na puwang sa breadboard.
  2. Ikonekta ang negatibong (maikling) binti ng LED sa negatibong riles.
  3. Ilagay ang kasalukuyang-nililimitahan ang risistor. Ikonekta ang isang bahagi ng isang 330 ohm risistor sa positibong (haba) na binti ng LED. Ikonekta ang kabilang panig ng risistor upang i-pin ang D4 ng Arduino.

Audio output

  1. Ilagay ang RC network. Ang output signal mula sa Arduino ay nagmumula sa pin 9 ngunit ang signal ay maaaring medyo mas mainit kaysa sa mahahawakan ng ilang speaker. Upang maibaba ito sa isang bagay na malapit sa antas ng linya, nagdagdag ako ng isang RC network (batay sa isang disenyo ng Mga Tala at Volt). Ilagay ang mga capacitor ng 33nF at 100uF, kasama ang resistor ng 2K tulad ng ipinakita sa imahe / eskematiko. Siguraduhin na ang electrolytic 100uF capacitor ay konektado sa tamang polarity (ang positibo / mahabang binti ay pupunta sa 9 sa Arduino at ang negatibo / maikling binti na konektado sa jack).
  2. Ikonekta ang negatibong bahagi ng audio jack sa lupa. Ang mga koneksyon sa audio jack ay bahagyang mag-iiba depende sa uri ng iyong ginagamit, ngunit sa pangkalahatan ay pareho silang gumagana. Kailangan naming ikonekta ang manggas ng jack sa lupa. Minsan ito ay minarkahan ng isang minus na simbolo o may label na "manggas", "singsing", o "gnd". Kung walang mga label sa iyong audio jack, maaaring kailanganin mong kumunsulta sa datasheet o magsagawa lamang ng isang malapit na inspeksyon ng jack at tingnan kung matutukoy mo kung aling pin ang konektado sa manggas o panlabas na singsing ng jack.
  3. Ikonekta ang positibong bahagi ng audio jack sa negatibong bahagi ng 100uF capacitor. Ang aming audio signal ay dumadaloy ngayon mula sa pin 9 ng Arduino sa pamamagitan ng RC network at lumalabas mula sa negatibong bahagi ng 100uF capacitor. Ikonekta namin iyon sa positibong bahagi ng aming audio jack. Karaniwan itong minarkahan ng isang simbolong plus o maaaring may label na "tip". Muli, kung hindi ito may label, maaaring kailanganin mong siyasatin ito upang malaman kung aling pin ang kumokonekta sa dulo ng jack. Gayundin, kung gumagamit ka ng isang stereo jack, maaaring mayroong isang koneksyon sa L tip at R tip. Dahil naglalabas kami ng isang mono signal, maaari ka lamang kumonekta sa alinman sa mga koneksyon sa tip.

Mahalaga: Kung nalaman mong ang audio ay masyadong tahimik maaari mong alisin ang RC network sa hakbang 1 at direktang kumonekta sa audio mula sa pin 9 ng Arduino. Ito ay dapat maging okay kung ikinokonekta mo ang audio sa isang bagay na may pre-amp tulad ng panlabas na mga speaker ng computer kung saan mayroon kang volume knob, ngunit hindi ko ito inirerekumenda para sa mga bagay tulad ng mga headphone, earbuds, o direktang mga kable sa isang speaker. Kung magpasya kang alisin ang network ng RC, iminumungkahi ko na ibalik ang dami sa iyong mga speaker pababa bago magpaputok ang Arduino, at pagkatapos ay unti-unting tataas ang lakas ng tunog upang maiwasan ang pagbuga ng iyong mga speaker.

Matapos mong ma-set up ang lahat, i-double-check kung ang lahat ng mga koneksyon ay mukhang tama at tumutugma sa imahe at eskematiko sa itaas

Hakbang 4: Pag-upload ng Code

Ngayon na ang lahat ng pag-setup ng hardware, handa na kaming talakayin ang panig ng software:

  1. Ilunsad ang Arduino IDE. Sa iyong computer, ilunsad ang Arduino IDE (kung wala ka nito, maaari mo itong i-download mula sa
  2. I-download ang Mozzi library. Ang silid-aklatan ng Mozzi ang nagbibigay-daan sa amin na gamitin ang aming Arduino bilang isang synthesizer. Upang makuha ang library na ito sa iyong IDE, pumunta sa pahina ng Mozzi github https://sensorium.github.io/Mozzi/download/. Mag-click sa berdeng "Code" na pindutan at piliin ang I-download ang ZIP.
  3. I-install ang Mozzi library mula sa zip file. Sa Arduino IDE, pumunta sa Sketch-> Isama ang Library-> Magdagdag ng. ZIP Library… Mag-navigate sa zip file na na-download mo upang idagdag ito. Dapat mo na ngayong makita ang Mozzi na nakalista sa ilalim ng Sketch-> Isama ang seksyon ng Library.
  4. I-download ang Mosquito I Arduino code. Maaari mo itong makuha mula sa aking github site https://github.com/analogsketchbook/mosquito_one. (Tandaan ang mga eskematiko ay magagamit din doon kung kailangan mo ang mga ito para sa sanggunian ng mga kable.
  5. Ikonekta ang Arduino sa computer at i-upload ang code.

Hakbang 5: Gulo sa paligid

Ayan yun. Dapat mong maikonekta ang iyong mga speaker sa audio jack at marinig ang matamis na tunog ng arpeggiated synthesis mula sa ittybitty Nano na iyon! Kung wala kang maririnig sa una, subukang isentro ang mga knobs sa lahat ng kaldero upang matiyak na nakakakuha ka ng disenteng mga halaga sa pagsisimula.

Narito kung ano ang ginagawa ng mga kontrol:

Mga kaldero:

Rate: Kinokontrol nito kung gaano kabilis ang pag-play pabalik ng sequencer. Ang pag-turn down nito ay gumaganap ng mga discrete note nang sunud-sunod. Ang pagliko nito ay nagpapahid ng mga tala nang magkakasama upang lumikha ng ganap na mga bagong waveform.

Legato: Kinokontrol ng pangalawang palayok ang haba ng legato o tala. Ang pagliko nito nang higit pa sa kaliwa ay gumagawa ng maiikling, sticatto na tala, habang ang pag-on sa kanan ay gumagawa ng mas mahahabang tala.

Pitch: Itinatakda nito ang base pitch para sa pagkakasunud-sunod. Ang pitch control ay nagtatakda ng mga halagang MIDI, kaya't pinapataas / binabawas nito ang pitch sa semitoness kaysa sa isang tuluy-tuloy na pitch shift.

Phase: Ang pagliko ng knob na ito sa kanan ay nagpapakilala ng isang banayad na epekto ng phasing. Teknikal na pagsasalita, ito ay sanhi ng dalawang oscillator sa Mosquito I na bahagyang masali sa kulungan na siyang sanhi ng pag-phase. Gayunpaman, hindi ito, pagsubaybay sa pitch kaya ang epekto ng phasing ay marahil mas kapansin-pansin sa mas mababang mga tala ng pitch.

Filter: Kinokontrol ng knob na ito ang dalas ng cutoff ng isang Low Pass Filter. Ang pag-on nito sa kaliwa ay pinuputol ang mga matataas na frequency na gumagawa ng isang mas muffled na tunog, habang ang pag-on sa kanan ay gumagawa ng isang mas maliwanag na tunog.

Mga Pindutan:

Ang lamok ay may higit sa dalawampung magkakaibang pagkakasunud-sunod na maaari nitong i-play bilang default. Pinapayagan ka ng mga pindutan ng itulak na piliin kung aling pagkakasunud-sunod ang naglalaro. Inililipat ka ng isang pindutan sa listahan ng mga pagkakasunud-sunod at ang isa ay bumaba sa listahan.

Hakbang 6: Pagpapasadya

Pagpapasadya
Pagpapasadya

Nagdagdag ako ng isang pangkat ng mga default na pagkakasunud-sunod, karamihan ay magkakaibang mga antas, ngunit maaari mong ipasadya ang code nang medyo madali upang mabago ang pagkakasunud-sunod ng mga tala na nilalaro, magdagdag ng mga bago, o baguhin ang bilang ng mga tala sa isang pagkakasunud-sunod. Nasa ibaba ang mga detalye kung paano ginagawa iyon sakaling nais mong ipasadya ito.

Pagbabago ng Mga Tala sa Umiiral na Sequence

Ang mga pagkakasunud-sunod ay nakaimbak sa isang hanay ng mga arrays na tinatawag na NOTA. Ang bawat tala ay naka-imbak bilang isang halaga ng tala ng MIDI, kaya kung nais mong baguhin ang mga tala sa isang partikular na pagkakasunud-sunod, baguhin lamang ang mga numero ng tala ng MIDI para sa pagkakasunud-sunod na iyon. Ang default na pag-setup ay upang i-play ang 8 mga hakbang bawat pagkakasunud-sunod upang maaari ka lamang magkaroon ng 8 mga halagang MIDI sa isang pagkakasunud-sunod (tingnan sa ibaba kung nais mong magkaroon ng magkakaibang haba ng pagkakasunud-sunod).

Isang bagay na dapat tandaan, ang pitch knob ay nagdaragdag ng isang tala na offset sa mga halagang MIDI na tinukoy sa hanay ng TANDA. Kapag ang knob ay nakasentro, nilalaro nito ang mga tala ng MIDI na ipinahiwatig sa array, ngunit habang binabago mo ang pitch knob ay nagdaragdag o binabawas nito ang isang semi-tone sa mga tala na nilalaro.

Pagdaragdag ng Mga Bagong Sequence

Maaari kang magdagdag ng mga bagong pagkakasunud-sunod sa mga tala ng NOTA sa pamamagitan lamang ng pagdaragdag ng isang bagong 8-tala na array sa dulo ng listahan. Kung gagawin mo ito, kailangan mo ring baguhin ang halaga ng variable ng numSequences upang tumugma sa bagong bilang ng mga pagkakasunud-sunod. Halimbawa, ang array na TANDAAN ay may 21 mga pagkakasunud-sunod bilang default kaya ang variable ng numSequences ay nakatakda sa 21. Kung magdagdag ka ng isang bagong pagkakasunud-sunod, kakailanganin mong baguhin ang variable ng numSequences sa 22.

Maaari kang magdagdag ng maraming mga bagong pagkakasunud-sunod ayon sa gusto mo.

Pagbabago ng Haba ng Sequence

Kung nais mong baguhin ang haba ng iyong mga pagkakasunud-sunod (kung nais mong sabihin ang isang 4-hakbang o 16-hakbang na pagkakasunud-sunod), magagawa mo iyon, ngunit ang nag-iisa lang na pag-uugali ay ang lahat ng mga pagkakasunud-sunod ay kailangang pareho ang haba. Kakailanganin mo ring itakda ang variable ng numNotes upang tumugma sa haba ng iyong mga pagkakasunud-sunod.

Iba Pang Mga Pagbabago

Mayroong isang bilang ng iba pang mga pagpapasadya na posible tulad ng paglipat ng mga uri ng alon, setting ng filter / halaga, na lampas sa saklaw ng tutorial na ito. Ang pag-alam sa Mozzi code ay maaaring maging medyo mahirap sa una, ngunit sinubukan kong idokumento ang code hangga't maaari upang maipakita kung ano ang ginagawa ng iba't ibang bahagi ng code.

Mayroong ilang pangunahing mga bahagi ng code para sa Mozzi na may tiyak na tiyak na paggamit at inilista ko ang mga ito sa ibaba upang maibigay sa iyo at ideya ng kung ano ang ginagamit nila para sa:

  • setup () - Kung naka-program ka para sa Arduinos bago ka pamilyar sa pagpapaandar na ito at halos pareho itong ginagamit sa Mozzi. Ginagamit namin ito karamihan upang mag-setup ng mga default na setting para sa mga oscillator, filter, atbp.
  • updateControl () - Dito gumagana ang pagbabahagi ng leon ng Mozzi code. Dito namin nababasa ang mga halaga ng palayok at pindutan, mapa at ibahin ang mga halagang iyon upang pakainin sa synthesizer, at kung saan ginagawa ang pagkakasunud-sunod.
  • updateAudio () - Ito ang pangwakas na output mula sa Mozzi library. Kadalasan ang code dito ay pinananatiling napakaliit at dahil sa pagpapaandar na ito ay ginagamit ng Mozzi upang ma-maximize ang lahat ng mga cycle ng orasan na magagawa nito. Tulad ng nakikita mo sa code ng lamok, maaari itong maging isang maliit na cryptic ngunit lahat ng ginagawa namin sa pagsasama / pagpaparami ng aming iba't ibang mga format ng alon at pagkatapos ay pag-bitshift sa kanila upang magkasya sa isang tukoy na saklaw ng numero. Mahusay na panatilihing magaan ang pagpapaandar na ito (hindi mga Serial na tawag o pagbabasa ng mga pin) at ilagay ang karamihan sa mga bagay-bagay sa function na controlUpdate () sa halip. Ang dokumentasyong Mozzi ay detalyadong detalyado sa ito.

Inirerekumendang: