Πίνακας περιεχομένων:

NeckCrusher (Pedal Effect Pedal): 6 βήματα (με εικόνες)
NeckCrusher (Pedal Effect Pedal): 6 βήματα (με εικόνες)

Βίντεο: NeckCrusher (Pedal Effect Pedal): 6 βήματα (με εικόνες)

Βίντεο: NeckCrusher (Pedal Effect Pedal): 6 βήματα (με εικόνες)
Βίντεο: 35 Scary Ghost Videos: Mega Compilation του 2023 [V1] 2024, Ιούλιος
Anonim
NeckCrusher (Πετάλι εφέ με κιθάρα)
NeckCrusher (Πετάλι εφέ με κιθάρα)

Dale Rosen, Carlos Reyes και Rob Koch

DATT 2000

Βήμα 1: Πρόβλημα

Πρόβλημα
Πρόβλημα

Τα πεντάλ της κιθάρας περιορίζουν τον μουσικό στην πλατφόρμα του πεντάλ. Λύση: Δημιουργήστε και ενσωματώστε μια λειτουργικότητα πετάλων κιθάρας στην ίδια την κιθάρα. Αυτό επιτρέπει στον μουσικό να κινείται ελεύθερα σε όλη τη σκηνή, χρησιμοποιώντας το λαιμό της κιθάρας ως διεπαφή αντί να περιορίζεται στη θέση του πεντάλ. Θα διερευνήσουμε αυτήν την ιδέα δημιουργώντας μια συσκευή εφέ ρυθμού δειγμάτων/δείγματος.

Βήμα 2: Πλαίσιο έργου

Πλαίσιο έργου
Πλαίσιο έργου

Υπάρχουν πολλά πετάλια κιθάρας που χρησιμοποιούν οι μουσικοί για να χειριστούν τον ήχο των κιθάρων τους. Τα περισσότερα από αυτά είναι συνήθως σε μονάδες με βάση rack ή stomp box, περιορίζοντας επομένως τον έλεγχο των εφέ στη θέση της μονάδας εφέ. Η τοποθέτηση της συσκευής στην κιθάρα επιτρέπει στους παίκτες να ελέγχουν τις παραμέτρους του εφέ οπουδήποτε στη σκηνή. Αυτό σημαίνει ότι δεν θα περιορίζονται και μπορούν να έχουν την ελευθερία να κυκλοφορούν για την απόδοσή τους.

Δεδομένου ότι το Arduino είναι ικανό μόνο για ήχο 8 bit, είναι αδύνατο να γίνει επεξεργασία σήματος υψηλής πιστότητας. Αυτός είναι ο λόγος για τον οποίο επιλέξαμε τα εφέ που κάναμε, καθώς βασίζονται στη δημιουργία ενός χαμηλού πιστού, παραμορφωμένου ήχου. Αυτά είναι τα μόνα εφέ που είναι λογικά δυνατά με ένα Arduino.

Βήμα 3: Απαιτούνται εξαρτήματα / εργαλεία

Απαιτούμενα μέρη / εργαλεία
Απαιτούμενα μέρη / εργαλεία

● Τρυπάνι κρούσης

● Κόπτες σύρματος

● Απογυμνωτές καλωδίων

● Συγκολλητικό σίδερο

● Gun Glute Gun

● Αντλία αποκόλλησης

● Κιθάρα los Περίβλημα

● Συγκολλητικό

● Ζεστή Κόλλα

● Arduino

● Proto Board

● Καλυμμένο καλώδιο

J Υποδοχές ήχου (x2)

● Ποτενσιόμετρα (x3)

● Πυκνωτές: 2,2 uF (x2)

● Εκτεθειμένο καλώδιο χαλκού

● Βίδες (M3.5 *8)

● Αντιστάσεις: 1 k, 10 k, 1.2 k, 1.5 k, 390 k

* Op Amp (LM358) / * Transistor (2N3442)

Βήμα 4: Τεχνική στρατηγική

Τεχνική Στρατηγική
Τεχνική Στρατηγική

Εσωτερικό κύκλωμα

Εισόδου-εξόδου

Πρέπει να μετατρέψουμε το ηχητικό σήμα που προέρχεται από μια κιθάρα σε κάτι που μπορεί να χρησιμοποιήσει και να τροποποιήσει το arduino. Στη συνέχεια θα χρειαστεί να μετατρέψουμε το σήμα που προέρχεται από το arduino σε ηχητικό σήμα. Το Arduino διαβάζει τάσεις από 0V έως 5V, τα ηχητικά σήματα είναι από -1V έως 1V. Αυτές οι μετατροπές γίνονται χρησιμοποιώντας αντιστάσεις. Το σήμα θα μετατραπεί και στο κύκλωμα εξόδου.

Βιβλιοθήκη Arduino: ArduinoDSP

Περιγραφή έργου (διεπαφή)

Πόμολα Κουμπί 1: Ποσοστό δείγματος

Knob 2: Bit Crusher

Κουμπί 3: Bit Shifter

Βήμα 5: Κωδικός

Κώδικας
Κώδικας

#include "dsp.h"

#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))

boolean div32; boolean div16;

πτητικό boolean f_sample; πτητικό byte badc0; πτητικό byte badc1; πτητικό byte 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; byte bb?

byte dd [512]; // Πίνακας μνήμης ήχου 8-bit

void setup () {setupIO ();

// επαναφόρτωση κύματος μετά από 1 δευτερόλεπτο fill_sinewave ();

// ορίστε το adc prescaler σε 64 για συχνότητα δειγματοληψίας 19kHz cbi (ADCSRA, ADPS2). sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bit 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 Mode έχει ρυθμιστεί σε γρήγορο PWM cbi (TCCR2A, COM2A0). sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Ρύθμιση για Timer2 cbi (TCCR2B, WGM22); // Timer2 Ρολόι Prescaler σε: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Enable sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// ελέγξτε την κατάσταση του ποτενσιόμετρου εφέ και του περιστροφικού διακόπτη readKnobs ();

// ************* *** *** Κανονικό *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (αριστερά); έξοδος (αριστερά, είσοδος). }

// ************* *** *** Phasor *** // ************

αν (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; // εγγραφή στο buffer fx4 = iw * badc0 / 255; // κλίμακα καθυστερημένου δείγματος με ποτενσιόμετρο iw1 = dd [icnt2]; // διαβάστε το buffer καθυστέρησης 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]; // διαβάστε το buffer καθυστέρησης iw = 127 - bb; // αφαίρεση μετατόπισης fx3 = iw * badc0 / 255; // κλίμακα καθυστερημένου δείγματος με ποτενσιόμετρο iw1 = 127 - badc1; // αφαίρεση μετατόπισης από νέο δείγμα iw1 = iw1 + iw; // προσθέστε καθυστερημένο δείγμα και νέο δείγμα εάν (iw1 127) iw1 = 127 · // Περιοριστής ήχου bb = 127 + iw1; // προσθήκη μετατόπισης dd [icnt] = bb; // αποθηκεύστε το δείγμα στο buffer ήχου icnt ++; icnt = icnt & 511; // limit 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; // συμπληρώστε το buffer 512 byte για (iw = 0; iw <= 511; iw ++) {// με 50 περιόδους sinewawe fd = 127 * sin (fcnt); // θεμελιώδης τόνος fcnt = fcnt + dx; // στο εύρος από 0 έως 2xpi και προσαυξήσεις 1/512 bb = 127 + fd; // προσθήκη dc offset στο 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,25kHz εάν (div32) {div16 =! div16; εάν (div16) {// δείγμα καναλιού 0 και 1 εναλλάξ, έτσι ώστε κάθε κανάλι να λαμβάνεται δείγμα με 15,6kHz badc0 = ADCH. // λήψη καναλιού ADC 0 sbi (ADMUX, MUX0). // ορίστε τον πολυπλέκτη στο κανάλι 1} else {badc1 = ADCH; // Λήψη ADC channel 1 cbi (ADMUX, MUX0). // ορίστε τον πολυπλέκτη στο κανάλι 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // μικρή καθυστέρηση πριν από την έναρξη μετατροπής sbi (ADCSRA, ADSC). // έναρξη επόμενης μετατροπής}

}

Βήμα 6: Βίντεο

Πιθανά προβλήματα ● Η παραλαβή είναι λίγο πολύ αδύναμη για να τροφοδοτήσει το κύκλωμα - χρειάζεστε ενισχυτή. - Στο βίντεο χρησιμοποιήσαμε ενισχυτή σήματος. (Το γκρι κουτί ξαπλωμένο στο τραπέζι.)

Συνιστάται: