Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!
Alex Glow
Published © GPL3+

Synthenada: Empanada Synthesizer

This salty synth uses Vegemite spread as the conductor, and is perfect for Pi Day!

BeginnerFull instructions provided30 minutes1,787

Things used in this project

Hardware components

Circuit Playground Express
Adafruit Circuit Playground Express
×1
USB-A to Micro-USB Cable
USB-A to Micro-USB Cable
×1
Pie
×1
Vegemite
×1
Toothpicks
×7

Story

Read more

Code

CPX Code

JavaScript
See tutorial for uploading instructions! Could use a bit of cleaning up... Based on Adafruit's Touch Tone Synth project: https://learn.adafruit.com/touch-tone-for-circuit-playground-express/software
input.pinA6.onEvent(ButtonEvent.Down, function () {
    light.setAll(0x00ffff)
    music.ringTone(294)
})
input.buttonA.onEvent(ButtonEvent.Click, function () {
    control.runInParallel(function () {
        for (let i = 0; i < 4; i++) {
            music.playTone(262, music.beat(BeatFraction.Eighth))
            music.rest(music.beat(BeatFraction.Eighth))
            music.playTone(330, music.beat(BeatFraction.Eighth))
            music.rest(music.beat(BeatFraction.Eighth))
            music.playTone(392, music.beat(BeatFraction.Eighth))
            music.rest(music.beat(BeatFraction.Eighth))
        }
    })
    light.showAnimation(light.sparkleAnimation, 700)
})
input.onSwitchMoved(SwitchDirection.Left, function () {
    music.setVolume(50)
})
input.pinA3.onEvent(ButtonEvent.Down, function () {
    light.setAll(0xffff00)
    music.ringTone(392)
})
input.onSwitchMoved(SwitchDirection.Right, function () {
    music.setVolume(90)
})
input.pinA3.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA7.onEvent(ButtonEvent.Down, function () {
    light.setAll(0x0000ff)
    music.ringTone(262)
})
input.pinA5.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA1.onEvent(ButtonEvent.Down, function () {
    light.setAll(0xff0000)
    music.ringTone(494)
})
input.pinA5.onEvent(ButtonEvent.Down, function () {
    light.setAll(0x7f00ff)
    music.ringTone(330)
})
input.pinA6.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA4.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA2.onEvent(ButtonEvent.Down, function () {
    light.setAll(0xff8000)
    music.ringTone(440)
})
input.pinA1.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA4.onEvent(ButtonEvent.Down, function () {
    light.setAll(0x00ff00)
    music.ringTone(349)
})
input.pinA7.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})
input.pinA2.onEvent(ButtonEvent.Up, function () {
    light.setAll(0x000000)
    music.rest(music.beat(BeatFraction.Sixteenth))
})

circuitplayground-EmpanadaSynth.uf2

JavaScript
The flashable octave-synth file: just save onto the CPX from your computer!
No preview (download only).

Credits

Alex Glow

Alex Glow

149 projects • 1593 followers
The Hackster team's resident Hardware Nerd. I love robots, music, EEG, wearables, and languages. FIRST Robotics kid.

Comments