Post on 30-Dec-2015
description
Digital Guitar EffectsGroup 5
Shaun Caraway, EEMatt 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
• Simple user interface• Include common effects used by
guitarist. Reverb, distortion, etc.
Specifications
• Less than 3 ms of latency• 16 bit 44.1kHz• Maximum input 2 Vpp• Line level output of 1.228 Vrms• Headphone output impedance less
than 50Ω
Over all System Design
ATMEL ATSAM3X8E WM8731
CODEC
LM1085 3.3V
JTAG INTERFACE
MSP430G2553
ATMEGA328P
LM1085 3.3V
LM1085 5V
JTAG INTERFACE
CONTROLSDISPLAY
I2C (TW)
I2C
(T
W)GPIO
I2C (TW)
SPI
SP
I
Audio Processing Subsystem
User Interface Subsystem
Algorithms
Algorithms
• Delay– Used to create an “echo” type of sound.
» y(n) = x(n) + [x(n – D) + G*y(n – D)]
S Sx(n) y(n)
1
1
Z^-n
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
Pre-Delay LPF1 APF1 APF2
Comb 1
Comb 2
LPFComb 3
LPFComb 4
APF3LPF2S
x(n)
y(n)
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))
Hardware
User Interface Subsystem Microprocessors
MSP430G2553IPW28Program Memory 16KB
Speed 16MHz
IO 24
I2C Serial Communication interface Compatible with TW
Operating Voltage 3.3V
ATmega328P AVRProgram Memory 32 Kbytes
Speed 20MHz
IO 23
TW Serial Communication interface Compatible with I2C
SPI Serial Communication
Operating Voltage 5V
User Interface Subsystem Schematic
User Interface Subsystem Schematic
V
User Interface Subsystem PCB
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
SAM3X8E Cortex-M3Program Memory 512 Kbytes
Speed 84MHz
I/O Lines 103
2xTW Serial Communication interface Compatible with I2C
SPI Serial Communication
CPU Core ARM
Operating Voltages 3.3 and 1.95 V
Audio Processing Subsystem Schematic
Audio Processing Subsystem Schematic
Audio Processing Subsystem Schematic
Hz
Audio Processing Subsystem PCB
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.491370.1489
0.68637
0.1950.039
Power Requierments
LM1085 LDO regulator series
V in Max 27 volts
V out 3.3, 5 volts
Drop Out Voltage 1.3 volts
I out Max 3 amps
Enercell AC Adapter CAT-NO 273-333
Input 100-240V AC 50/60Hz 0.5Amps
Output 7.5V DC 2 Amps
Original DSP Subsystem
Original User Interface Subsystem PCB
Software
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
void initSetup ()void I2CTransmite()void navigate()void pushButton()void menuSetup()int main()
Main
void SPIConfig()void sendData()int main()
I2C
void init()void interrupt()int main()
Buttons
void initSetup ()void downButton()void upButton()void forwardButton()void backButton()void whatToDo()int main()
Menu
void initSetup ()void changeDisplay()void onRecieve() int main()
LCD Controller
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
void initSetup ()void I2CReceive ()void modelAmplifier()void modelEffects()void SPItransmit()void SPIreceive()int main()
Main
void SPIConfig()void tranSmiteData()void receiveData()int main()
SPIvoid I2CSPConfig() void receiveData()void transmitData()int main()
I2C
void initSetup()void changeGain()void changeBass()void changeMid()void changeVolume()int main()
Amplifiervoid initSetup()void changeGain()Void changeInterval() int main()
Effects
Administrative
Distribution of Responsibilities
Shaun User Interface Hardware
Audio Processing Hardware
Power
Jan User Interface Software
Audio Processing
Software
Audio software Algorithm Simulation
Matt Audio Codec Input
Audio Codec Ouput Algorithms
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
GROUN PIN
VIA TO GROUND
Project Challenges - Audio Processing
JTAG Configuration – According to data sheet
Signal State
FWUP HI
NRSTB HI
JTAGSEL HI
TST LO
JTAG Configuration – WorkingSignal State
FWUP HI
NRSTB HI
JTAGSEL LO
TST LO
JTAGSEL
TST
Project Challenges - Audio Processing
DATA
CLOCK
CUT TRACES
Budget
Questions?