Სარჩევი:

NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები): 6 ნაბიჯი (სურათებით)
NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები): 6 ნაბიჯი (სურათებით)

ვიდეო: NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები): 6 ნაბიჯი (სურათებით)

ვიდეო: NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები): 6 ნაბიჯი (სურათებით)
ვიდეო: Anaal Nathrakh Depravity Favours the Bold bedroom bass cover 2024, ივლისი
Anonim
NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები)
NeckCrusher (გიტარაზე დამონტაჟებული ეფექტის პედლები)

დეილ როზენი, კარლოს რეიესი და რობ კოხი

DATT 2000

ნაბიჯი 1: პრობლემა

პრობლემა
პრობლემა

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

ნაბიჯი 2: პროექტის კონტექსტი

პროექტის კონტექსტი
პროექტის კონტექსტი

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

ვინაიდან არდუინოს შეუძლია მხოლოდ 8 ბიტიანი აუდიო, შეუძლებელია მაღალი ერთგულების სიგნალის დამუშავება. სწორედ ამიტომ ავირჩიეთ ჩვენ მიერ გაკეთებული ეფექტები, რადგან ისინი ემყარება დაბალი ერთგულების, დამახინჯებული ხმის შექმნას. ეს არის ერთადერთი ეფექტი, რომელიც გონივრულად შესაძლებელია არდუინოს გამოყენებით.

ნაბიჯი 3: ნაწილები / ინსტრუმენტები საჭირო

ნაწილები / ინსტრუმენტები საჭირო
ნაწილები / ინსტრუმენტები საჭირო

● ზემოქმედების საბურღი

Ire მავთულის საჭრელი

Ire მავთულის სტრიპტიზორები

Old შესადუღებელი რკინა

● ცხელი წებოს იარაღი

● შედუღების ტუმბო

● გიტარა los დანართი

შემდუღებელი

● ცხელი წებო

Du არდუინო

● პროტო დაფა

● დაფარული მავთული

● აუდიო ჯეკები (x2)

● პოტენციომეტრი (x3)

● კონდენსატორები: 2.2 uF (x2)

● გამოფენილი სპილენძის მავთული

● ხრახნები (M3.5 *8)

● რეზისტორები: 1 კ, 10 კ, 1.2 კ, 1.5 კ, 390 კ

Op * Op Amp (LM358) / * ტრანზისტორი (2N3442)

ნაბიჯი 4: ტექნიკური სტრატეგია

ტექნიკური სტრატეგია
ტექნიკური სტრატეგია

შიდა წრიული სქემა

შეყვანის/გამოყვანის

ჩვენ უნდა გადავიყვანოთ გიტარადან მოსული აუდიო სიგნალი ისეთზე, რისი გამოყენებაც და შეცვლა შეუძლია არდუინოს. შემდეგ ჩვენ დაგვჭირდება არდუინოდან მომავალი სიგნალის აუდიო სიგნალად გადაყვანა. Arduino კითხულობს ძაბვებს 0V– დან 5V– მდე, აუდიო სიგნალები -1V– დან 1V– მდე. ეს გარდაქმნები ხდება რეზისტორების გამოყენებით. სიგნალი გარდაქმნილი იქნება გამომავალ წრეშიც.

არდუინოს ბიბლიოთეკა: ArduinoDSP

პროექტის აღწერა (ინტერფეისი)

სახელურები Knob 1: ნიმუშის განაკვეთი

Knob 2: Bit Crusher

Knob 3: Bit Shifter

ნაბიჯი 5: კოდი

კოდი
კოდი

#მოიცავს "dsp.h"

#განსაზღვრეთ cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #განსაზღვრეთ sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))

ლოგიკური div32; ლოგიკური div16;

არასტაბილური ლოგიკური f_sample; არასტაბილური ბაიტი badc0; არასტაბილური ბაიტი badc1; არასტაბილური ბაიტი ibb;

int fx1; int fx2; int fx3; int fx4;

int cnta; int icnt; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; ბაიტი bb;

ბაიტი დდ [512]; // აუდიო მეხსიერების მასივი 8-ბიტიანი

void setup () {setupIO ();

// ტვირთის გადატვირთვა 1 წამის შემდეგ fill_sinewave ();

// დააყენეთ ადკ პრეკალერი 64 -ზე 19kHz შერჩევის სიხშირეზე cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8 ბიტიანი ADC ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM რეჟიმი დაყენებულია სწრაფ PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // დაყენება Timer2 cbi– სთვის (TCCR2B, WGM22); // Timer2 საათი პრესკალერი: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM პორტი ჩართვა sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

ბათილი მარყუჟი () {

// ეფექტის პოტენომეტრისა და მბრუნავი გადამრთველის სტატუსის შემოწმება ReadKnobs ();

// ************* *** *** ნორმალური *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {ბაიტი შეყვანის = analogRead (მარცხნივ); გამომავალი (მარცხნივ, შეყვანის); }

// ************* *** *** ფაზორი *** // *************

თუ (fx4> 100) {

fx1 = 0; fx2 = 0; fx3 = 0;

ხოლო (! f_sample) {// დაელოდეთ ნიმუშის მნიშვნელობას ADC} // ციკლი 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // ჩაწერეთ ბუფერში fx4 = iw * badc0 / 255; // მასშტაბირებული დაგვიანებული ნიმუში პოტენომეტრით iw1 = dd [icnt2]; // წაიკითხეთ შეფერხების ბუფერი badc0 = badc0 / 20; // ლიმიტის მნიშვნელობა 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // ლიმიტის ინდექსი 0.. icnt1 = icnt1 & 511; // ლიმიტის ინდექსი 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // PWM გამოყვანის ნიმუშის ღირებულება

PORTD = PORTD ^ 128; გამომავალი (მარცხნივ, PORTD); // გამომავალი}

// ************* *** *** Flanger *** // ************ თუ (fx3> 100) {

fx1 = 0; fx2 = 0; fx4 = 0;

ხოლო (! f_sample) {// დაელოდეთ ნიმუშის მნიშვნელობას ADC- დან} // ციკლი 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // წაიკითხეთ შეფერხების ბუფერი iw = 127 - bb; // ამონაწერი ოფსეტური fx3 = iw * badc0 / 255; // მასშტაბის დაგვიანებული ნიმუში პოტენომეტრით iw1 = 127 - badc1; // ამონაწერი ოფსეტური ახალი ნიმუშიდან iw1 = iw1 + iw; // დაამატეთ დაგვიანებული ნიმუში და ახალი ნიმუში, თუ (iw1 127) iw1 = 127; // აუდიოს შემზღუდველი bb = 127 + iw1; // დაამატეთ ოფსეტური dd [icnt] = bb; // ნიმუშის შენახვა აუდიო ბუფერში icnt ++; icnt = icnt & 511; // ლიმიტი bufferindex 0..511 OCR2A = bb; // PWM გამოყვანის ნიმუშის ღირებულება

PORTD = PORTD ^ 128; გამომავალი (მარცხნივ, PORTD); // გამოყვანის

} }

void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);

}

void fill_sinewave () {float pi = 3.141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // შეავსეთ 512 ბაიტიანი ბუფერი (iw = 0; iw <= 511; iw ++) {// 50 პერიოდით sinewawe fd = 127 * sin (fcnt); // ფუნდამენტური ტონი fcnt = fcnt + dx; // 0 -დან 2xpi და 1/512 ნამატის დიაპაზონში bb = 127 + fd; // დაამატეთ dc ოფსეტური sinewawe dd [iw] = bb; // ჩაწერეთ მნიშვნელობა მასივში

} }

// ********************************************* ***************** // Timer2 Interrupt Service 62.5 KHz // აქ აუდიო და ქოთნის სიგნალის შერჩევა ხდება სიხშირით: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // გაყავით ტაიმერი 2 სიხშირე / 2 31.25 კჰც -მდე, თუ (div32) {div16 =! div16; if (div16) {// არხის ნიმუში 0 და 1 მონაცვლეობით, ასე რომ თითოეული არხი შერჩეულია 15.6kHz badc0 = ADCH; // მიიღეთ ADC არხი 0 sbi (ADMUX, MUX0); // დააყენეთ მულტიპლექსერი არხზე 1} else {badc1 = ADCH; // მიიღეთ ADC არხი 1 cbi (ADMUX, MUX0); // დააყენეთ მულტიპლექსერი არხზე 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // მოკლე შეფერხება კონვერტაციის დაწყებამდე sbi (ADCSRA, ADSC); // შემდეგი კონვერტაციის დაწყება}

}

ნაბიჯი 6: ვიდეო

პოტენციური პრობლემები ● პიკაპი ძალზე სუსტია დენის წრეზე - საჭიროა ოპერატიული გამაძლიერებელი. - ვიდეოში ჩვენ გამოვიყენეთ სიგნალის გამაძლიერებელი. (ნაცრისფერი ყუთი მაგიდაზე იწვა.)

გირჩევთ: