440 likes | 623 Views
Digital Guitar Effects. Group 5. Shaun Caraway, EE Matt Evens, EE Jan Nevarez, CpE. Motivation and Value of Project. Goals. Professional grade audio quality (Low noise, high resolution, etc.) Able to process a guitar signal in real-time with less than 3 ms of latency
E N D
Digital GuitarEffects Group 5 Shaun Caraway, EE Matt Evens, EE Jan Nevarez, CpE
Goals • Professional grade audio quality (Low noise, high resolution, etc.) • Able to process a guitar signal in real-time with less than 3 ms of latency • Simple user interface • Include common effects used by guitarist. Reverb, distortion, etc.
Specifications • Lessthan 3 ms of latency • 16 bit 44.1kHz • Maximum input 2 Vpp • Line level output of 1.228 Vrms • Headphone output impedance lessthan 50Ω
Over all System Design User Interface Subsystem JTAG INTERFACE Audio Processing Subsystem JTAG INTERFACE LM1085 3.3V I2C (TW) MSP430G2553 ATMEL ATSAM3X8E SPI I2C (TW) GPIO WM8731 CODEC LM1085 5V I2C (TW) ATMEGA328P LM1085 3.3V SPI DISPLAY CONTROLS
Algorithms • Delay • Used to create an “echo” type of sound. • y(n) = x(n) + [x(n – D) + G*y(n – D)] 1 Z^-n x(n) S S y(n) 1
Algorithms • Reverb • Simulates sound being played in a large room or hallway. • Most intense algorithm. Pushed the limits of the ATMEL SAM 3X8E • Uses parallel combination of Comb filters in series with all pass filters.
Algorithms • Reverb • All Pass Filter • y(n) = -gx(n) + x(n – D) + gy(n – D) • Comb Filter • y(n) = x(n – D) + gy(n – D) • Low Pass Comb Filter • y(n) = x(n – D) – g2x(n – D – 1) + g2y(n – 1) + g1y(n – D) • Where g = g2/(1-g1), with g < 1.0
Algorithms • Reverb x(n) LPF1 APF1 APF2 Pre-Delay Comb 1 Comb 2 S LPF2 APF3 y(n) LPFComb 3 LPFComb 4
Algorithms • Chorus • Meant to simulate multiple instruments playing together. • Generally used to “thicken” the sound. • y(n) = a1x(n) + Gx(n – D(n))
Algorithms • Compressor • Meant to control the dynamics of incoming signal • y(n) = x(n) + [x(n – D) + G*y(n – D)]
Algorithms • Distortion • Used to purposefully distort the incoming guitar signal. Known as a static wave shapper. • y(n) = arctan(x(n))
User Interface Subsystem PCB MSP430-JTAG connection I2C Terminal Block MSP430G2553 ATMEGA328P Controls Terminal Block LCD module Terminal Block Push Button Voltage Regulators
Audio Processing Subsystem PCB ATMSAM3X8E JTAG-Interface/ Configuration ATMSAM3X8E Microcontroller WM8731 Audio CODEC I2C/TW Terminal Block Audio Input Line Output Headphone Output Voltage Regulator
Power Requierments 0.1489 0.49137 0.039 0.195 0.68637
Software Overview • User Interface • Allow for control • Display Menu Options • Signal Interrupts • Audio Processing Software • Model Amplifier • Model Effects • Allow for various parameter changes I2C Bus
User Interface Subsystem • Written in C language • MSP430 used Energia IDE • ATmega328 used Arduino IDE • Push buttons generate interrupts • Generates binary coded commands • MSP430 Transmits to the screen controlled by the ATmega328 and the Audio Processing Subsystem over the I2C bus
User Interface Subsystem Codes for the Audio Processing Codes for the Screen Subsystem
User Interface Subsystem Buttons LCD Controller Main I2C Menu void initSetup() void downButton() void upButton() void forwardButton() void backButton() void whatToDo() intmain() void initSetup() void changeDisplay() void onRecieve() intmain() void initSetup() void I2CTransmite() void navigate() void pushButton() void menuSetup() intmain() void SPIConfig() void sendData() intmain() void init() void interrupt() intmain()
Audio Processing Subsystem • Writing in C via Atmel studios • Model Amplifiers/Effects • Communicates to the Codec through the SPI peripheral • Programs the Codec through the I2C bus • Receives controller codes through I2C bus
Audio Processing Subsystem Main SPI I2C Amplifier Effects void initSetup() void I2CReceive () void modelAmplifier() void modelEffects() void SPItransmit() void SPIreceive() intmain() void initSetup() void changeGain() void changeBass() void changeMid() void changeVolume() intmain() void initSetup() void changeGain() Void changeInterval() intmain() void SPIConfig() void tranSmiteData() void receiveData() intmain() void I2CSPConfig() void receiveData() void transmitData() intmain()
Project Challenges • Digital Signal Processing • Doing multiple double and int multiplication and division • Preventing noise on the distortion effect • Learning the PCB CAD software • Hardware Debuging Challenges
Project Challenges - User Interface POWER TRACE VIA TO GROUND GROUN PIN
Project Challenges - Audio Processing JTAGSEL TST
Project Challenges - Audio Processing CUT TRACES DATA CLOCK