Giter VIP home page Giter VIP logo

bluewaffle's Introduction

Blue Waffle

An AVR based waveshaping/bitreduction pedal - Alpha version

It may or may not work, but it simulates pretty nicely in Proteus.

Introduction

Waveshapers and bitcrushers are pretty much the simplest digital signal processors, but they are very usable and versatile. There is a strange lack of open-source digital pedals, althogh there certainly is interest for them in the pedal DIY community. This is a perfect starting point for cheap open-source DSP pedals. ##Specs BlueWaffle is a work-a-like of a commercial pedal, with the following features:

  • high-gain analog input preamp
  • AMZ Presence Control tone control, defeatable
  • 8bit signal processing
  • 245Hz - 62.5kHz continuously variable (256 steps) sampling rate
  • 252 waveforms represented by arrays
  • 1 - 8bit output bitrate -or-
  • bitmasking (bitwise and) with numbers 0-255
  • previous two features available pre- and post-waveshaping
  • buffered and filtered output
  • CV/exp pedal input for controlling any combination of bitmask/bitdepth and samplerate pots
  • 2*7seg displaying current waveform's number in hex

##Implementation ###Hardware Blue Waffle is made with cheap through-hole components, which is kind of traditional for DIY guitar pedals. It consists of:

  • Atmel Atmega1284p microcontroller at the heart of it
  • Microchip MCP3001 8-bit ADC
  • R-2R resistor network based 8-bit DAC
  • several pots, an encoder, and a 2*7seg display
  • 78L05 voltage regulator, TLE2425 and TLE2426 precision voltage references and TLC2272 opamps

###Software Blue Waffle is written in C, intended for compilation with avr-gcc. Parts of the code are autogenerated from JSON files (the waveforms, in particular) by Python-based cog code generation utility. See Waveforms.c's comments for explanation.

MCP3001 communicates to the uC via SPI (without interrupts, busy-waiting). ADC conversions are clocked with Timer0 interrupts.

AVR's own ADC is clocked at 125KHz and used to sample potentiometers and CV input. Display and LEDs are multiplexed on the same 8 outputs, and are alternated on AVRADC interrupts, too.

Modes are implemented by a const struct array - based statemachine which is partially Python-generated.

Encoder and buttons are sampled continuously in the device's main loop.

There's a JS-based waveform generator included in the project - WaveformGenerator. You can use it to draw or make wavetables from functions by pasting arrays into a JSON file (See Waveforms.c's comments for explanation).

##Help It would really help me if someone could make a buy-list from some EU supplier, with the things listed in the schematic, BOM, and 'Buylist_Info.md' in the Documentation folder.

That way everyone could just all of the parts at once, myself included. I hate sourcing parts.

##Licence Original developer: Andrej Radovic ([email protected])

The firmware is released under a GPL3.0 license.

The PCB layouts and schematics are released under a Creative Commons Attribution-ShareAlike 4.0 International 4.0 (CC-BY-SA-4.0) license.

Documentation, tools and simulations are released under a Creative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA-4.0) license.

GPL3 logo CC-BY-SA4.0 logo

bluewaffle's People

Contributors

randrej avatar

Stargazers

Michael Anthony avatar

Watchers

James Cloos avatar Michael Anthony avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.