Freescale H.I.T. Project #1: MonkeyJam - A DIY Guitar Stomp Box

cancel
Showing results for 
Search instead for 
Did you mean: 

Freescale H.I.T. Project #1: MonkeyJam - A DIY Guitar Stomp Box

Freescale H.I.T. Project #1: MonkeyJam - A DIY Guitar Stomp Box



Project Summary

SheldonJam.pngMonkeyJam will use the FRDM-K20D50 board (which has a Cortex M4 core with DSP instructions) along with the FRDM-JAM shield so you can  make your very

own guitar /bass  stomp box.  The end result will be a functional DSP system that will allow you to do high quality amplifier simulation and effects.

The FRDM-JAM does not limit you to DSP on musical instruments!  There are 3.5mm stereo jacks to DSP filtering any type of audio signal.    You could even use the USB interface to create a USB-MIDI Synthesizer!  Lastly,  no need to bring the house down.....  a headphone amplifier circuit is provided so you can jam out without bothering the neighbors.

MBED Support coming *very soon*

Skills Developed:

  • Real Time Processing
  • DSP Algorithms
  • Fixed Point Mathematics
  • 24-bit I2S Data Converter Interfacing
  • Soldering SOIC8 and 1206 Surface mount devices
  • Cortex CMSIS DSP Library

Materials:

FRDM-K20D50

K20D50.PNG.png

FRDM-JAM

FRDM-JAM-s.png

Development Tools

Install Codewarrior 10.5 for Microcontrollers (Eclipse) Special Edition to your  machine



Example Code


Get the latest copy from Github

Step 0: Prerequisite Videos


The videos are organized into a nice YouTube playlist:


H.I.T 1: Monkey Jam - YouTube


https://www.youtube.com/playlist?list=PLWM8NW5LEukgM-D5eRMtKZ8R2WfXnqKGp

  • MonkeyJam Watch Me 1st
  • FRDM-JAM Hardware Overview
  • MonkeyJam Software Overview
  • Introduction to Fixed Point Math for Embedded Systems - Part 1 of 3
  • Introduction to Fixed Point Math for Embedded Systems - Part 2 of 3
  • Introduction to Fixed Point Math for Embedded Systems - Part 3 of 3
  • Real Time Signal Processing Part 1 of 3
  • Real Time Signal Processing Part 2 of 3
  • Real Time Signal Processing Part 3 of 3
  • q31_t (Q0.31) Number Format for the CMSIS DSP Libraries and the MonkeyJam Software
  • Guitar physics in a nutshell
  • Ideas for hacking the MonkeyJam


Step 1: Get a FRDM-JAM

MonkeyJam Build Package on the FRDM-JAM site.    Please let us know if you are interested in a pre-assembled version.  If there is enough demand we will get some preassembled for purchase, I will get a Kickstarter going!   Don't be afraid to build it yourself,  Soldering is fun!  There is plenty of good stuff on the web on how to do SMT soldering.  All of the parts on the board are fairly simply once you get the hang of it and everything can be hand soldered  The key is having some decent tools.

Step 2: Put it Together


Attach the FRDM-JAM to the FRDM-K20D50.  The FRDM-K20D50 comes with female headers that you can solder on so the boards can be easily separated.  Note that as of Rev Gamma (current version),   it is possible to connect to a K64F.    The software isn't quite there but it hardware connections are available.   If you are unsure,  stick with the FRDM-K20D50

Step 3: Download


Download the Example Software from Github.  The video "Loading and Configuring the MonkeyJam Example Software" will step you though downloading the program and doing some basic configuration.

Step 4: Hack and Slash!


Plug In and jam!

Sound Samples


Each sound sample was my Carvin Ultra-V guitar plugged direct into the MonkeyJam Board.  The output was fed to a Zoom Handy Recorder H4n (Thanks to Brandin Claar of Remodulate LLC for the recorder).  The H4N recorded the signal at 44.1KHz Sample rate @16-bit.  The sound files were converted to mono format via Goldwave.  No processing (other than a  volume boost on the files) was performed.   I listen to the recording in real-time via a line out on the H4N. 



TestSetup.jpg



File (See Attachments)PatchNotes
STE-003-Neck-a12b12g12-mlike.wav

PATCH_TUBEY_CLEAN

Neck Pickup

Alpha Pot - 12 O'Cock

Beta Pot - 12 O'Cock

Gamma Pot - 12 O'Cock

Pattern Similar to Metallica Sanitarium

STE-005-Neck-a7b5g5-mlike.wav

PATCH_TUBEY_CLEAN

Neck Pickup

Alpha Pot - 7 O'Cock

Beta Pot - 5 O'Cock

Gamma Pot - 5 O'Cock

Pattern Similar to Metallica Sanitarium

STE-006-Neck-a12b7g5-mlike.wav

PATCH_TUBEY_CLEAN

Neck Pickup

Alpha Pot - 12 O'Cock

Beta Pot - 7 O'Cock

Gamma Pot - 5 O'Cock

Pattern Similar to Metallica Sanitarium

STE-007-Neck-VariousSettings-d-g-em_strum.wav

PATCH_TUBEY_CLEAN

Neck Pickup

The pots were moved around throughout the file

Strummed D-Major, G-Major and E-Minor

STE-008-Neck+Bridge-VariousSettings-d-g-em_strum.wav

PATCH_TUBEY_CLEAN

Neck + Bridge Pickup

The pots were moved around throughout the file

Strummed D-Major, G-Major and E-Minor

STE-009-Bridge-VariousSettings-d-g-em_strum.wav

PATCH_TUBEY_CLEAN

Bridge + Bridge Pickup

The pots were moved around throughout the file

Strummed D-Major, G-Major and E-Minor

STE-010-Neck-VariousSettings-Jammy.wav

PATCH_TUBEY_CLEAN

Neck + Bridge Pickup

The pots were moved around throughout the file

B-Minor Type Jam

STE-011- Bridge - Various Settings - On-Off Demo-RandomDroppedD.wav

PATCH_OVERDRIVE

Bridge Pickup

Alpha Pot - 5 O'Cock

Beta Pot - 12 O'Cock

Gamma Pot - 12 O'Cock

Random Dropped D twiddling

STE-012- Neck - Various Settings - On-Off Demo-Jammy.wav

PATCH_OVERDRIVE

Neck Pickup

Alpha Pot - 5 O'Cock

Beta Pot - 7 O'Cock

Gamma Pot - 7 O'Cock

Random B-Minor twiddles (bluesy)



PATCH_OVERDRIVE

            +––––––––––––––––––+      +––––––––––––––––––––––––––+      +–––––––––––––––––––––+                 

             |                  |      |                          |      |                     |                 

  Signal In  |    IIR BiQuad    |      |      Hard Overdrive      |      |      IIR BiQuad     |  Signal Out     

 +–––––––––+>|                  +––––+>|                          +––––+>|                     +–––––––––––––+>  

             |   [Peaking EQ]   |      | [atan24pi Look Up Table] |      |  [Low Pass Filter]  |                 

             |                  |      |                          |      |                     |                 

             +––––––––––––––––––+      +––––––––––––––––––––––––––+      +–––––––––––––––––––––+                 

                                                                                                                 

                 0.1 < Q < 1.5    [Pot Alpha]                                     Q = 0                          

                                                                                                                 

                 50 < Fs < 750    [Pot Gamma]                                   Fs = 2000                        

                                                                                                                 

               -20 < dbGain < 20  [Pot Beta]                                                                     

                                                                                                                 

PATCH_TUBEY_CLEAN


             +––––––––––––––––––+      +––––––––––––––––––––––––––+      +–––––––––––––––––––––+                 

             |                  |      |                          |      |                     |                 

  Signal In  |    IIR BiQuad    |      |      Soft Overdrive      |      |      IIR BiQuad     |  Signal Out     

 +–––––––––+>|                  +––––+>|                          +––––+>|                     +–––––––––––––+>  

             |     [LowShelf]   |      | [atan4pi Look Up Table]  |      |  [Low Pass Filter]  |                 

             |                  |      |                          |      |                     |                 

             +––––––––––––––––––+      +––––––––––––––––––––––––––+      +–––––––––––––––––––––+                 

                                                                                                                 

                 0.05 < Q < 2.58   [Pot Alpha]                                     Q = 2.0                          

                                                                                                                 

                1000 < Fs < 4000    [Pot Beta]                                   Fs = 2500                        

                                                                                                             

               -15 < dbGain < 15  [Pot Gamma]                                                                     

                                                                                                             

Utilities, etc:

Biquad Filter View - A IIR Biquad Filter Design &amp; Visualization Tool

Labels (1)
Comments

Hi eli_hughes

Thanks For the awesome tutorial. It pretty much shows the real life implementation of DSP. I wanted to ask you about implementation of CMSIS library in codewarrior. In one of my projects I wanted to implement DSP library to implement FFT. But I am stuck in implementing CMSIS library. I saw your Video for this as well as the 2nd project i.e Project #2: Monkey Listen! Audio Spectrum Analyzer Display That was also awesome like this. But again I cannot move further as I am facing problem in implementing the library.I went through some post regarding implementing the CMSIS library but that was not compiling and was giving errors. and sometimes was exceeding the m-text limit. I went through the following links.

Tutorial: Using the ARM CMSIS Library | MCU on Eclipse

Adding the CMSIS-DSP library

移植CMSIS-DSP库到CodeWarrior的步骤以及Kinetis FPU单元应用的对比

Please look into the matter. I hope this post will be beneficial for many community users. Thanks in advance

Kind Regards

Amit Kumar

Amit:

Do you try importing the MonkeyListen project and see the settings I used?   What chip are you targeting?

Hi Eli Hughes

I Imported the MonkeyListen Project and it got compiled without any error. right now for testing I am targeting FRDM-K20D50M (MK20DX128). After this I will be targeting mk60fn1m0vlq12. What are the settings required to be done for using the library in any project ? If you can provide some snapshot of  the settings required to make it work It will be helpful for all the community members. As I went across some queries which was unanswered regarding the same. In ARM's website also I didn't find any help regarding this. When I saw your tutorial everything was well explained. So If this portion is also covered in it than it will a great help for people like me. and I am sure many people want to use it but can't use due to this implementation part.

Thanks in advance

Kind Regards

Amit Kumar

Amit:

If you click on the project properties for the library and look at processor settings, there are 2 symbols (ARM_CM4 and ARM_ROUNDING).   This is all I had to do to get it compile.

I think I covered it in one of the videos.  If not, I will certainly have to get some sort of small video for it!.

-Eli

Hi Eli

Thanks for your reply. when I am opening your project for the 1st time I am getting some warning message. Is this message of any concern?.

cmp.jpg

Kind Regards

Amit Kumar

Hi Eli Hughes

Can you provide me the link of the video in which you have demonstrated how to implement  CMSIS library with codwarrior basically I am concerned with FFT library which you have implemented? It Will be a great help. Thanks

Kind Regards

Amit Kumar

Hi Eli

I have implemented the CMSIS code and also made the document for others , kindly look if anything is incorrect in the process and please update it. https://community.freescale.com/message/414670#414670

Kind Regards

Amit Kumar

Version history
Revision #:
2 of 2
Last update:
‎09-10-2020 02:48 AM
Updated by:
 
Contributors