Category Archives: Electronics

  • 0

Adafruit FX Sound Board 16 MB

January 2018

This is a continuation of an earlier exploration of Adafruit’s FX Sound Board. Previously, I worked with the 2MB version, but soon found I needed more storage for the intended application.

The 16 MB version is basically identical in functionality – just more storage. The attraction of this board is that it is extremely easy to use, and it can do 44.1 Khz 16 bit audio in WAV or OGG. The ease of use comes from a file name-based trigger system whereby you can set sounds for one-shot, random, temporary play, and loop on any one of 11 pins.

Sound Board with a hodge-podge of switching options

Though this board goes together quickly on a breadboard, the time consuming part is calculating how much space you are going to use with your files. I typically work in 44.1 Khz 24 bit (stereo) WAV which is just too big for this platform. So right away there is a compromise to get down to 16 bit. Then, depending on the file, you may need to reduce from stereo to mono.

Using the Sound Devices Audio Time Calculator, I was able to get some pretty good estimates on just how much I would have to reduce my files before putting the files in the naming format required for the FX board.

The basic calculation to keep in mind is 1 min of stereo 44.1 Khz 16 bit audio (WAV) is going to be roughly 10 MB of data.

 

 

This calculator did not offer OGG, but it does MP3 which gets you close.

It helps to have a TXT file or notepad handy to work out the mapping of what files you want to do what, and their associated pin so you match them to the hardware correctly.

Files as they appear on the sound board’s flash memory

In this case I landed came up with 11 files that took up about 14.2 MB. I could only get close to the intended result by using OGG format (converted from WAV). I was able to keep some files stereo, but the “NEXT” files are mono. In a sense this doesn’t matter since the speaker I am using doesn’t have good separation, but for a larger system this would matter more.

One odd thing… for some reason the OGG files took forever to transfer from my Macbook to the FX board over a Sparkfun Cerberus cable, even though WAV files zipped right across. I’ve never experienced this before, and the cable has been performing great otherwise. I’m going to toss this out as some strange behavior of my USB hub, which was also in the chain.

The downside to the Adafruit FX Sound Board is that it can only play one sound at a time.

Ultimately, this board will not work for what I would like to do. The Teensy Audio Board is a much better option. Look for a write-up of that after my next Sparkfun order comes in!

 

 

Category : Arduino , Blog , Electronics


  • 0

Sparkfun ESP8266 Thing (WRL-13231)

January 2018

Next up in IoT exploration is the Sparkfun ESP8266 Thing – part WRL-13231. Note that this is not the Dev board – a separate device with different pinout and other changes.

Navigating Sparkfun’s hookup guide was fairly easy, especially since I had already installed the ESP8266 libraries as part of another project. The example they walk through on Sparkfun’s site shows you how to set up a basic, localized server. All of the other ESP8266 experiments I’ve done up to now were designed to make a device connect to an existing network, so this was a nice change.

Web server accessible from my Android.

Having experienced the easy connection of Particle Photon and the NodeMCU boards, using the FTDI Basic module to program the Sparkfun Thing was a bit odd. I had an FTDI module on hand from a previous project, but it had female headers soldered onto it. So I had to use a 6-pin male-to-male header to make the connection. This overly complicated connection may have contributed to some of the wonkiness with uploading my sketches, though uploading is also a known issue with this board that Sparkfun addresses in detail on their site.

The web server example went by pretty quickly, so I went over to Hackster.io and found a light sensor project to try. This too was pretty easy.

Yeah, not terribly exciting on the surface, but this is something that took way more hardware to pull off even a few years ago.

Impressions:

I like the fact that the Sparkfun Thing has a power switch onboard. The JST battery connector is a bit fragile, so I could see that having to be repaired or replaced with rough handling, especially if that was the only way to turn it on/off.

Still not crazy about the FTDI, but I can deal with it. Going to consider how I can pull this device into my ecosystem of other similar devices. Probably need to play with some other sketches. Also interested in trying the sister board. It seems there are more projects on Hackster.io for the Dev board than the one shown here.

Category : Arduino , Blog , Electronics


  • 0

NodeMCU Sensor

A lot has changed since my last connected sensor project in 2013, so I wanted to jump in again to see how the technology has come along. After playing with some Particle Photon stuff, I came across NodeMCU. Hackster.io has lots of  ideas for this board, so I sought to recreate what Achraf Oukheir did there.

Achraf’s project is good, but it left out a lot of details, which I will summarize below. It was only by referencing Adafruit and Instructables for similar projects that I was able to eliminate errors and get the code to work. The other consideration is – if you have stepped away from Arduino for a while – just do yourself a favor and update your IDE first!

Tips and links:

Tip #1 – Update to latest Arduino IDE (unless told otherwise)
Tip #2 – Do not copy code into Notepad and back into Arduino IDE – it may introduce non-compliant quotes or other characters.
Tip #3 – Replace your DHT library with the latest one. The one I had was from 2013/14 and it did not work with this project. I used Adafruit’s library: Adafruit_Sensor
Tip #4 – Get the Blynk library directly from their site. Otherwise you might see an error like the one above.
Tip #5 – Be sure you have the NodeMCU. See this Instructables article.  Select NodeMCU 1.0 ( ESP-12EModule).
Tip #6 – See also Adafruit’s tutorials on this sort of thing. Different WiFi chip, but helpful for wiring.

So what did I think of this device? Things have come a LONG WAY since 2013! The app connectivity with Blynk is great. Less hardware, smaller footprint. The NodeMCU was $7 from Bandgood.com – and now the newer version with Bluetooth and more capability is out for only a few more dollars. Crazy! The next step will be to possibly use this platform to create a notification setup for our hot tub for both temp and water level. Still considering Photon for that, but NodeMCU might be a good option too.

 

Category : Arduino , Blog , Electronics


  • 0

Particle Photon Starter Projects

December 2017

Since my last embedded project experiments in 2013, a lot has changed. Costs have gone down, size has reduced and functionality is way up. After researching some of the more current platforms, I selected the Particle Photon for its size, prize and capability.

Photon Project #1

After successfully duplicating Clarissa San Diego’s Hackster.io project, which uses the Particle Internet Button, I expanded the program to do different things with the buttons.

Button 1 – Append date/time info to a text file in a Dropdox folder.
Button 2 – Sends an email.
Button 3 – Sends command to play music on my Android.
Button 4 – Update Adafruit Welcome data feed.

I also got multiple functions working per button. During this time I had to upgrade my cell phone (not for this project, it was just overdue). After the upgrade to a Droid Z Play, the IFTTT trigger to play music does not work completely. The new Droid forces you to use Google Play to play audio, so I’ve been unable to play a specific custom WAV file.

Google music player doesn’t seem to like my custom WAV file, and only plays music automatically if it is part of the Google Music service.

With time it should be possible to get around this. Other music players haven’t worked either. So, more to learn.

Photon Project #2

More exciting that the Internet Button is the Particle NeoPixel Ring, which is offered by Adafruit.

One of the starter projects is designed to make the ring light up (wirelessly) when the International Space Station goes over your house. That’s a neat idea, but given that the ISS doesn’t go over our house all that often, I wanted to have something a bit more dynamic and regularly occurring.

Using IFTTT, I set up the lights to display when:

  • a tweet is sent from my account.
  • an SMS message is sent to an IFTTT phone number.
  • time reaches the top of the hour.

As for the light display itself, I am still modifying the code from the original. I’d like to build in separate light show responses for different IFTTT events.

Tip: One of the upsides to upgrading my cell phone is that I have a bunch of Mini USB 5V chargers that can now be used for embedded projects (the Z Play uses a USB-C connector). Just have to be sure that whatever circuit I use them on has a regulator for 3.3V if needed.

Here is a short video (made with Adobe Spark) of some testing when I was troubleshooting a lighting routine loop that went nuts.

Category : Arduino , Blog , Electronics


  • 0

LED Controlled Panner

12/22/16 – The LED Panner is another fun circuit from the great book “Handmade Electronic Music” by Nicolas Collins.

This circuit uses a single 74C14 Hex Schmitt Trigger chip, taking advantage of only a few pins (so you could to much more with this). LEDs paired with photo resistors create an optically controlled circuit which is designed to switch audio off and on in a flip-flop or ping-pong type motion. A single dial adjusts the speed of the effect. You can use just one side of the device for a mono signal, or in stereo, though stereo is where you get the neatest effects.

I always seem to do the most building during the holiday season, hence the Christmas themed box. The initial breadboard prototype went together rather quickly, so it wasn’t long before I had everything in the box. The hardest part was deciding on a physical layout for the LED/photoresistors, as they take up a lot of space. I would probably try a different orientation if I built one of these again, but this works fine.

The unit below with the green knob is the same unit as the one with the red knob. Only difference is that at first I didn’t add an on/off switch. That was added later and I changed the knob because I thought it matched the case better.

I built this device as an addition to my constantly evolving electronic/experimental music soundscape table, which you can hear on my Soundcloud page. Recordings featuring this device coming soon.

Category : Electro , Electronics


  • 0

Xmas Fly Piezo Box

12/9/16 – The Xmas Fly is a riff on the Black Fly, which is basically nothing more than a piezo element and a few parts in a nice box. The Black Fly includes springs, which cause interesting vibrations for the piezo to pick up.

To make springs work you need a very solid box that can hold up to the hardware. I didn’t have such a box, so I used one of my Christmas tins and made this into more of an ambient pickup rather than a device that created it’s own sound. Youtube shows several hacks for the Black Fly, so all I needed was an interior photo of the build from one of those videos, and the rest was easy.

The piezo is set in place with Guerrilla Glue. The filter capacitor value was a bit tricky. First attempt with a 10pF cap showed no filtering effect. I couldn’t make out what they were using in the photo, so I checked with my dad who advised based on his experience with similar circuits, “try .01uF to .05uF. The pot could be 50K more or less… ” The second attempt with a .022uF Mylar cap works well!

What’s it for? This can be used as a pickup for all sorts of sounds around the studio, basically like a low-fi mic. The filter acts as a tone control, which is necessary to roll off some of the harshness of the piezo. Paired with a proper DI box, this can be a very effective tool for sound design. The larger form factor and thinner metal also gives this much different properties from a Black Fly, though I would still like to build one of those when I have the materials.

To hear this in action, check out some of my piezo sound scapes.

Category : Electro , Electronics


  • 0

Get Lo Fi Quad Oscillator

June 2016 – The Quad Oscillator below is a common beginner project, with surprising nuances depending on parts and configuration.

In this case, I bought a kit online from GetLoFi.com. The kit arrived quickly, but was plagued by a few issues. First, my kit didn’t include the SPDT switch that was listed on the packing list. In fact, several other parts, while present, were completely different from what was pictured online or on the packing list. Most notable was the output jack – pictured as stereo, but mono was included instead. The battery clip was also completely different.

Included with the kit was a slip of paper noting a resistor substitution compared with the online instructions, apparently to allow the LED to shine brighter. Due to the poor online photos, this simple kit turned out to be way more complicated than necessary. There’s only three resistors, so how hard can this be, right? (I contacted the seller, and they quickly responded, but I never got the missing part.)

Despite all this, I assembled the kit and got audio out of it, but the LED got very hot (due largely to the resistor value modification). Later I took this to my dad for some troubleshooting, and to drill holes for the case (a holiday candy tin from Big Lots). We ultimately put the resistors back in the original configuration, and removed the 100 Ohm resistor on the output, otherwise we didn’t get audio.

The Quad Osc is good for drones, though I’ve had mixed results connecting it directly to my recording rig or submixer. Seems to be some impedance mismatching or something because it sounds way better plugged into an amp first. Still, it’s a lot of fun.

Here’s some samples:

Category : Electronics


  • 0

MIDI Drum Kit by Spikenzie Labs

DKK-AI

DKK-AI

Just as 2015 was wrapping up I put together a MIDI drum trigger kit from Spikenzie Labs. The Drum Kit Kit – All Included (DKK-AI) comes with everything you need to set up six triggers using piezo discs. Programming is done via an Arduino IDE using the built-in ATMEGA328-PU chip, so you don’t need a separate Arduino board for the project. A 5-pin DIN connector is provided for interfacing with legacy MIDI gear, and this is how I planned to use it for the moment.

The DKK-AI went together quickly with no issues in about an hour. Unit comes pre-loaded with a sketch that assigns the pads to MIDI notes as follows:

unsigned char PadNote[6] = {52,16,66,63,40,65};

On the first try, using Ableton Live set to receive on all channels, this worked perfectly. However, the default MIDI notes used in the DKK-AI are not in the best range for most of Ableton’s drum kits.

DKK-AI - easy to build!

DKK-AI – easy to build, but configuring may take some time!

While General MIDI is a standard, each hardware/software manufacturer can come up with different approaches to how they implement the standard. Often with today’s advanced software, the actual MIDI note assignment is buried under one or more layers of settings. Typically that is OK because you simply use the defaults. But the DKK-AI uses six pads, which is a bit strange compared to most modern controllers that work in groups of eight.

Ableton Drum Kit with default DKK-AI mapping

Ableton Drum Kit with default DKK-AI mapping

To reassign the MIDI notes that the DKK-AI is sending, you only need to edit one line of code (above), and re-load the sketch. This is where things got interesting.

Spikenzie Labs provides a lot of documentation, but they left out a few key things. Thankfully the folks at Spikenzie Labs were accessible (even on New Year’s Eve) and later in 2016 they walked me through the issues I was having.

Assembled DKK-AI with test pad

Assembled DKK-AI with test pad

Working with the Code

The DKK-AI uses an FTDI connection for reprogramming the device. I already had an FTDI cable from a past project, and thought this would go pretty smoothly. The first issue I ran into was how to set up the Arduino IDE to communicate with the DKK-AI while the ATmega328 chip was installed. Previous versions of this Drum Kit used an Arduino Uno to act as the programmer, but I didn’t want to do that. The whole point of having the FTDI header was to program the DKK-AI directly.

I tried numerous board settings, but all returned the error:

Both retured error: avrdude: stk500_getsync(): not in sync: resp=0x00

If you plug that error into Google, you’ll see that it is very common and has dozens of possible causes – some quite involved. I didn’t really have the patience to go down a lot of bizarre rabbit holes for this, so I pushed forward.

The FTDI drivers installed on my laptop were CDM v2.10.00 WHQL Certified, but I downloaded a newer 2.12 version and installed those. The DKK-AI was successfully found on COM5. Eventually I had more success using Pro Mini 3.3v/8Mhz ATmega 328, with programmer set to USBtinyISP. My new sketch with new MIDI note values uploaded successfully.

unsigned char PadNote[6] = {53,17,67,64,41,66};

sketch edit

However, at that point I couldn’t get a successful test with Ableton. I saw MIDI input, but the new pad note of 53 (F4) was clearly not sounding. Oddly, striking the pad returned a green TX light as appropriate. We’ll come back to this a bit later…

Taking a step back I reloaded the old sketch and went back to Ableton to repeat my initial, out of the box, test. This time, this test FAILED. This led me to believe that something was wrong with how the sketch was loading.

I explored a variety of 3.3v vs 5v settings for the Pro Mini 5v/16Mhz ATmega 328 and got the original sketch to load. Again, striking the pad looked good on the board’s green TX light, but I still didn’t see activity in Ableton.

It was at that point where I contacted Spikenzie Labs via Facebook, and they offered to help via email. Our email exchange didn’t take place until later in the week. My burning question was: what board setting do you use??

2016-01-01 19.09.09

VIDEO: Sketch upload via FTDI (PC test)

2016-01-01 19.11.31

VIDEO: TX light activity for pads (PC test)

 

2016-01-02 00.53.02

VIDEO: TX light (Mac test)

Let’s Pop Some Chips Out

While I was waiting for Spikenzie Labs to get back to me, my father suggested that I could verify that the DKK-AI’s ATMEG328 chip was OK by pulling it out of the DKK-AI and putting it into one of my Unos. Then I could load the sketch using the typical Arduino Uno board setting. This wasn’t ideal because I didn’t have an Uno with an open ATMEG slot, so this also meant pulling a perfectly good chip out of an original Uno. Still, curiosity got the best of me, and after performing this operation, what did I get??

avrdude: stk500_getsync(): not in sync: resp=0x00

So that didn’t get me anywhere. I put everything back together and continued experimenting with board settings, hitting upon the Duemilanove 328, which was successful, but the sketch doesn’t work (flashing TX light, etc). Thinking this might be a laptop issue with either my sound card or other settings, I took the project to my Macbook and verified same experience with MIDI setup in Ableton. No triggering taking place.

The DKK-AI has an option for using the FTDI serial connection to send MIDI instead of the 5-pin DIN connector. This isn’t what I wanted to use, but I thought it might be worth a shot. However, for this to work, I had to install a helper app (MIDI Yoke) to take the serial data and translate it to MIDI data. MIDI Yoke is a pretty old program, and doesn’t look like it is supported any longer. I was hesitant to install one more thing on my development machine, but really wanted to see if it made a difference.

Same issue. MIDI still not getting to Ableton even though TX light on circuit lights up.

Yeah, pretty frustrating.

Alesis SR-16 MIDI Drum Machine tests

Up to this point my focus was on making the DKK-AI transmit. On the other hand, the problem could be with receiving data in Ableton, and after all of the obvious checked (using correct port, etc) the only other option for testing was to use another MIDI-generating device. Luckily, I had an Alesis SR-16 drum machine on hand.

MIDI OUT to Ableton worked just fine. So with a quick swap of the MIDI cable to the DKK-AI, I could see again that no signal from DKK-AI was getting into Ableton (despite green TX light flashing when pad is hit).

Maybe try another DAW?

Ableton us usually a bit easier for quick MIDI mapping tests. For me, Ableton is such a blank slate with little clutter to get in the way and you can immediately see what’s happening. My experience with the Audio Cubes using Ableton brought me into contact with a lot of routing and mapping that just doesn’t take place as easily in other DAWs.

But for testing purposes, I wanted to see if maybe a different DAW – like Reason – would demonstrate the same problems. Using Reason’s KONG drum device, I proved that incoming MIDI notes are indeed recognized (using the Alesis). This required a little detour into the default MIDI note assignments on the Alesis, which gave me the following:

Pad # Note
Kick 036 C1
Snare 038 D1
Cls Hat 042 F#1
Open Hat 046 A#1
Claps 039 D#1
Perc 2 067 G3
Tom 1 048 C2
Tom 2 045 A1
Tom 3 041 F1
Ride 051 D#2
Crash 049 C#2
Perc 1 065 F3

So the next step was to take six of these and see if DKK-AI would trigger using same note values that I confirmed were good for mapping to Kong. Back from the original sketch we had:

unsigned char PadNote[6] = {52,16,66,63,40,65};

This became:

unsigned char PadNote[6] = {36,38,42,46,39,67};

Used the Duemilanove 328 setting, got a successful load, but the sketch didn’t work. Still getting green TX light, etc.

The Six Hour Mark

At this point I had 6 hrs troubleshooting into the DKK-AI. It was time to stop. The other issue I was dealing with is that Ableton runs like a dog on my HP laptop, and I had lots of time taken up just waiting for it to load for each test. I was trying not to run Arduino IDE and Ableton at the same time for fear that they might bog down the machine further. I also think that adding MIDI Yoke to the equation added to the system resources that Ableton was using, and I probably should uninstall it. Even when Ableton isn’t listening to MIDI Yoke channels, it seems there’s a performance hit on program start because the program has to account for the possibility that MIDI Yoke might be used.

Spikenzie Labs to the Rescue

1/13/16 – Spikenzie Labs took a while to get back to me, but their tips were very helpful.

1. Set baud rate in the DKK sketch to 31250 bps – This was an obvious note in the tutorial, and I thought this was already set. It’s possible it got reset while I was massing about. However, since I did not plan to use the MIDI over serial, I dont think this had an impact. I purposely only wanted to use the 5-pin MIDI out.

2. Serial.print vs Serial.write in the MIDI_TX void section of the program –

This should be Serial.write but in older versions of the Arduino IDE it was Serial.print.

Once that was changed, IT WORKED!

2016-01-12 22.18.39

VIDEO: Success!

Spikenzie Labs then confirmed that the board setting I found by trial and error was correct. They recommend “Arduino Duemilanove W/ATmega328 as the board. If your version of IDE gives you the choice of speed it is 16mhz.”

This can make all the difference and sends many people down various troubleshooting rabbit holes that waste a lot of time….

More Mapping

All of the energy spent getting the sketch to load properly was a major distraction from the main goal – to come up with a suitable mapping for Ableton. When I say “suitable” I mean something that easily fits into Ableton’s Drum Rack device, and can be easily recalled. If you think of a physical drum kit, you usually have:

Kick
Snare
Hi-Hat
Hi Tom
Mid Tom
Low Tom
Crash
Ride

Depending on the style of music, you might have more or less individual drums, and for some more electronic styles, you might have completely different components, or multiple kick drums. Hi hats often have notes reserved for open and closed hi hat sounds.

Since the DKK-AI has only six pads, if you want to play a typical drum kit, you have to determine which sounds you want to assign to each pad, and then what note is going to be used to trigger that sound. Again, this is all somewhat subjective, and there is no “right” answer, but you generally want to make it easier on yourself by using consecutive note numbers, or following the conventions used in the General MIDI spec (see below).

The point here is that if you indicate note X is a kick drum, and you have a performance of a kick drum part that uses that note (boom, boom, boom, boom) , it will be fine. But if your mapping isn’t consistent, you could be triggering a cymbal with that kick drum part (crash, crash, crash, crash). This can have interesting creative possibilities. The GM standard is also very biased toward Western (European) music and doesn’t take into account Middle Eastern or Asian forms. So some imagination is needed to tweak it for use in those styles. These days, the software usually does all of that for you under the hood.

Drum machines have evolved from the General MIDI mapping, and as various electronic and dance music styles evolved, so did the conventions for mapping the drums to controllers. People who use AKAI MPC drum machines might use their own mapping:

Ableton Live Drum Rack mapping for MPC devices…

Pad 1- Note # 60
Pad 2 – Note # 62
Pad 3 – Note # 64
Pad 4 – Note # 65
Pad 5 – Note # 67
Pad 6 – Note # 69
Pad 7 – Note # 71
Pad 8 – Note # 72
Pad 9 – Note # 60 (On MIDI Channel 2A)
Pad 10 – Note # 62 (On MIDI 2A)
Pad 11 – Note # 64 (On MIDI 2A)
Pad 12 – Note # 65 (On MIDI 2A)
Pad 13 – Note # 67 (On MIDI 2A)
Pad 14 – Note # 69 (On MIDI 2A)
Pad 15 – Note # 71 (On MIDI 2A)
Pad 16 – Note # 72 (On MIDI 2A)

Trying the first six MPC mappings for DKK-AI:

unsigned char PadNote[6] = {60,62,64,65,67,69};

Ultimately this wasn’t a very good mapping for Ableton’s Drum Rack. I got a bit closer to what I wanted with:

unsigned char PadNote[6] = {35,36,37,38,39,40};

The problem with this setting is that 35 falls on a different pad set and is rarely mapped to any sound (unless you manually change it). So I shifted this over and chose to start with 36.

Ableton Drum Kit DKKAI Map

Ableton Drum Kit DKKAI Map

Default

Pad 1 = 36 (from bottom left)
Pad 2 = 37
Pad 3 = 38
Pad 4 = 39
Pad 5 = 40
Pad 6 = 41

unsigned char PadNote[6] = {36,37,38,39,40,41}; // Ableton Drum Rack 3rd attempt

This is based on Ableton’s “GM Suggestions” for drum mapping. This is all relative of course – you can map anything wherever you want. You could even make several mappings depending on the project, and comment out the ones you don’t need at the moment.

abletonMIDInotesGM

The lesson here: General MIDI conventions for drum mapping are nice, but sometimes they don’t line up very well. Much depending on how the manufacturer decided to implement the standard. Propellerhead Reason is a little more predictable in this case, perhaps because it relied on MIDI for so long before Propellerhead added audio recording capability. Ableton has deep programmability and can handle whatever you throw at it, but the Drum Racks often use multiple kick drums and (I’ve found) aren’t always consistent when importing third party MIDI drum performances.

DKK-AI with prototype pads

DKK-AI with prototype pads

GM Drum Layout (Reference)

#  Note  Name
35 B0 Acoustic Bass Drum
36 C1 Bass Drum 1
37 C#1 Side Stick
38 D1 Acoustic Snare
39 Eb1 Hand Clap
40 E1 Electric Snare
41 F1 Low Floor Tom
42 F#1 Closed Hi Hat
43 G1 High Floor Tom
44 Ab1 Pedal Hi-Hat
45 A1 Low Tom
46 Bb1 Open Hi-Hat
47 B1 Low-Mid Tom
48 C2 Hi Mid Tom
49 C#2 Crash Cymbal 1
50 D2 High Tom
51 Eb2 Ride Cymbal 1
52 E2 Chinese Cymbal
53 F2 Ride Bell
54 F#2 Tambourine
55 G2 Splash Cymbal
56 Ab2 Cowbell
57 A2 Crash Cymbal 2
58 Bb2 Vibraslap
59 B2 Ride Cymbal 2
60 C3 Hi Bongo
61 C#3 Low Bongo
62 D3 Mute Hi Conga
63 Eb3 Open Hi Conga
64 E3 Low Conga
65 F3 High Timbale
66 F#3 Low Timbale
67 G3 High Agogo
68 Ab3 Low Agogo
69 A3 Cabasa
70 Bb3 Maracas
71 B3 Short Whistle
72 C4 Long Whistle
73 C#4 Short Guiro
74 D4 Long Guiro
75 Eb4 Claves
76 E4 Hi Wood Block
77 F4 Low Wood Block
78 F#4 Mute Cuica
79 G4 Open Cuica
80 Ab4 Mute Triangle
81 A4 Open Triangle

Category : Electronics


  • 0

Nebulophone by Bleep Labs

jdnebulophonebuiltDec 2015 – The Nebulophone has been on my wishlist for a while, so when Makershed held their holiday sales, it was great to pick one of these for an even better price. Even without a discount, this is a worth while piece of gear and makes some great sounds.

Build took about 1.5 hours, going at a steady pace with no interruptions. The online instructions were great. This was also the first project that I did with a new circuit board holder, which replaced my former method of using a desk vice. This was SOOO much better.

I had read on the Makershed reviews that there was a “gotcha” somewhere in the capacitor placement, but my board was very clearly marked and I had no issues. The Nebulophone worked the very first time I powered it up.

The 1/4″ jack acts as a switch, which is a really nice feature that more projects should have. I think it makes it less likely that I will leave it on and drain the battery.

How does it sound? Great! Check out some of the experiments below via Flickr and Soundcloud. I have not ventured into changing the stock program, and would still need to add an FTDI header to tap into that option, but even the stock sketch gets you some great sounds.

My first experiment involved just recorded a few minutes of random dial tweaking. I then took that file and, using the Simpler device in Ableton, created a number of instrument tracks based on different sections of the original sample session. The ended with about 16 or so separate sounds that I played to create the piece you hear. Aside from a little bit of delay and reverb, those sounds remained unprocessed.

These sorts of synth units often benefit from reverb and delay, so the second experiment involved running the Nebulophone directly through my EHX Memory Man – my go-to delay unit. From there I created a number of textures and short pieces to demonstrate the variety of tons and rhythms you can get with a delay.

The Nebulophone is one of the more musical devices I’ve built lately, and I see it fitting into my electronic music rig very nicely. Another untapped feature is the IR control, which allows you to with other Andromeda Space Rocker and some Gieske devices. I don’t have any of those, so this feature won’t be useful… yet.

Nebulophone

 

You can read more about this device at the sites linked above, but here are the key features:

Key Features

Light controlled analog low-pass filter with five adjustable LFO LED modes.
Six arpeggio modes with adjustable rate.
Portamento with three speed settings.
Infrared control of arp rate with other Andromeda Space Rocker and some Gieske devices.
Open-source Arduino code and hardware
Improved sound generation.
Five new waveforms (eight total) including two with dual, detuned oscillators.
Programmable sequencer to easily make your own arpeggios right on the Nebulophone.
Perfect tuning across six octaves.
Improved white noise mode.
Adjustable temperment and key.
HYPERNOISE 30XX mode.

Category : Electronics


  • 0

LilyPad MP3 Player

2015-12-05 lilypad

December 5, 2015

After a long break from Arduino, and electronics in general, I wanted to jump back in with an easy/medium difficulty task or project. With the many holiday discount sales out there for companies like Adafruit and Sparkfun, I went ahead and got a few projects to keep me busy over the winter.

First up is the LilyPad MP3 Player by Sparkfun. While it isn’t exactly taking me into new territory, the form factor of a round board was something I hadn’t worked with before, and the pre-configuration as a trigger device was a nice feature to get up and running quickly. But how does the board perform?

My setup consisted of the LilyPad, a 3.7 V 1200 mAh LiPo from Adafruit and two 8GB microSD cards from an old Android phone (formatted FAT32)

It took longer to charge the battery and format the SD card than it did to test the Trigger sketch on the LilyPad. For the test I started with free loops from Loopmasters (I’ve got literally hundreds of these), and some MIDI drum performances from Odd Grooves, a company that produces MIDI performances of live drummers.

LilyPad file specs from Sparkfun (at time of this posting):

MPEG layer III (.MP3)
Two channels max
Sample rates: 8 through 48 kHz
Bitrates: 32 through 320 kbit/s
Variable bit rate (VBR) supported
Layer I and II also supported with additional setup, see the VS1053B datasheet for more
information.

Ogg Vorbis (.OGG)
Two channels max
Window size: 64 – 4096 samples
Sample rate: 48 kHz max
Bitrate: 500 kbit/s max

AAC (.AAC .MP4 .M4A)
Two channels max
Sample rates from 8 kHz to 96 kHz (rates > 48 kHz are downsampled to 48 kHz)
Bitrates to 576 kbit/s
ATDS (streaming) format recommended

WMA (.WMA)
Two channels max
Sample rates from 8 kHz to 48 kHz
Bitrates from 5 kbits/s to 192 kbits/s
Variable bit rate (VBR) supported

(.WAV)
Two channels max
PCM format
8 or 16 bits, sample rates < 48 kHz
IMA_ADPCM format
Sample rates < 48 kHz
MPEG LAYER 3 format
Same as MP3 modes

MIDI (.MID)
General MIDI and SP-MIDI format 0
Format 1 and 2 files must be converted to format 0
Maximum polyphony: 64
Actual polyphony: 19-31 notes at 3.5X clock
Two instrument banks:
GM1 (instruments)
GM2 (percussion)

All you need to do is rename the audio files on the micro-SD card so that the first character of each filename
is the number “1” to “5”, corresponding to the trigger that you want to play that file. You don’t need to change anything else about the file name.

This might be the first time I’ve mixed WAV and MIDI data for a project. Usually they are treated separately. Having the ability to use both is helpful for saving disk space because a MIDI performance takes up very little space. Sound boards like LilyPad and Adafruit’s Sound FX boards are getting more sophisticated and can handle both without much, if any, additional coding. This is impressive, since both file types are significantly different. WAV, MP3 and most other file types that consumers use for music contain actual audio data. MIDI is not audio data at all, but control information for music – the notes, rhythms, etc but not the sounds (wave forms).

MIDI files played just fine. Initial tests with my 44.1 Khz 16 bit stereo WAV files resulted in noise:

Then I realized my WAV loops were 24 bit, but the LilyPad only handles 16 bit. So I converted them to 16 bit with Adobe Audition, and had same issue – terrible distorted noise – in time with where the music should be, but obviously not played back correctly. According to the specs, 44.1 Khz 16 bit stereo audio is supported, so I reported the issue to Sparkfun, but continued to test.

Additional tests:
1. Loaded into Audacity and resaved files but had same issue.
2. NTFS card format didn’t work at all.
3. Tried MP3 files (320 bps) and they work fine.
4. Tried using Switch on Mac to generate the WAVs – still same problem
5. Audition offers 4 GB Plus support (RF64) and a Multiple Data Chunks format for Legacy Audition. Too many options if you ask me, but niether seemed to matter for the current issue.
6. Confirmed 8.3 file format (though this doesn’t appear to matter much).

Why am I insistent on using WAV? Besides the fact that the device is documented as supporting it, the main reason is that conversion from MP3 to WAV involves extra steps – steps that take time, even when using batch converters. I’d like to be able to work with WAV audio – directly out of my DAW or stereo editor of choice (which is Adobe Audition right now). There’s that, and the fact that I’ve run into many boards with the same issue, and it seems a fatal flaw in the way these boards are designed (and marketed).

12/6/15 Continued testing
1. Recorded new file with Audacity, saved as 44.1 khz, 16 bit and it failed.
2. Did same with Audition and it failed.
3. Using Audition, downgraded to 8 bit and this played back… sort of. More recognizable, but not as clear as MP3.
4. ExFat card format – failed
5. Created new audio in Reason and Ableton, using the native WAV export from those programs (both on Mac) – Both failed.
6. Downgraded WAVs to 32khz, same issue.

Conclusion: While documented to play 44.1 Khz, 16-bit stereo WAV files, the LilyPad does not do so without significant distortion that makes the audio unrecognizable. 8 bit is somewhat better. If anyone has a workaround for this – for the LilyPad specifically, or for this wide spread problem in general – I’d love to hear from you!

MORE TESTS

12/6/15
Based on past experience, sometimes smaller cards work better for these devices, but a 1 GB FAT16 MicroSD also failed for WAV playback.

12/7/15
Sparkfun asked me some questions about how I am powering the device. “The MP3 Player pulls a lot more power than a regular USB port can provide. If you are only providing power through the FTDI and a computer’s USB port, it will not be sufficient to play tracks with the LilyPad MP3 Player.”

Of course, I was using battery, so not sure why this is an issue. Sparkfun noted the obvious (and what my research shows) – any little deviation in the WAV format can cause problems. My issue is that I can not find a way – with industry-standard programs – to create WAV files that these little boards will play. So I sent them the link to this page so they could see the testing I’ve done.

12/8/15
Bring in the (WAV) strippers
During one of my last experiments, I recall having to use a WAV file stripper, so I did a search to see what’s out there these days…

https://github.com/TooTallNate/node-wav
Command line is pain in the butt.

http://www.lightlink.com/tjweber/StripWav/StripWav.html
Performed Quick Strip process and this made no difference.
Performed Slow Strip process and this made no difference.

Free Audio Converter
Confirms file is pcm_s16le (PCM signed 16 bit little-endian)
Otherwise, no effect on the result.

12/11/15
Sparkfun was in touch again and asked for copies of some WAV files to examine, so I sent them a bunch of stuff to review.

In case I didn’t note this before, I am working mostly on Win 8.1 for this project. But I also use Mac in the studio.

Further testing with an SD card formatted from my Macbook, but no difference there with WAV playback. In this case, the card format and size seem to be fine. So focusing rest of my testing on WAVs.

Found an old WAV file from 2013 that was used in a previous audio experiment and had been stripped of any unnecessary data. Even that file didn’t work.

Tried a command line stripping program RiffStrip, but this resulted in an unplayable file on the PC.If the WAV file is a normal WAV-PCM, the output file will be a RAW-PCM.
C:Riffstrip4_auditRS.wav
Error: The byte stream type of the given URL is unsupported.

AudioShare for iPad – Stereo 44.1 16 bit – fail
RecordHQ for iPad – Stereo 44.1 16 bit – fail
Android SmartVoice Recorder app MONO 44.1 16 bit – fail (but better than most attempts, possibly because it was MONO)

12/12/15

Sparkfun response:

Testing the files, I am seeing the same thing that you are seeing. I tried other sample wav files that I had around my computer with the same noisy muffled output on my speakers. For some strange reason, reducing the sampling rate to a lower rate in the preferences of Audacity helped. While I could hear the track better with less noise, the quality of the output was muffled and bad. =( Looking at the datasheet, the tracks were within the sample rate range so it should have played distinctly like an MP3 track. I am currently waiting on the designer/engineer of the LilyPad MP3 Player to see if he knows of any way to resolve this issue.

So at least this shows they can reproduce the problem, and I am not crazy! Well… mostly.

Epilogue:

12/16/15 Response from Sparkfun:

I just talked to the engineer and he is not quite sure why the wav files are failing. When creating the LilyPad MP3 Player tutorial, he was basing the Supported Audio Formats off the VS1053B IC’s datasheet. He wasn’t able to test out your setup yet but he was able look at your tutorial/review briefly. I’m not sure when he will be able to test it since it is not at the top of his priority list right now.

Quick Fix
I do remember another engineer had somehow got it working so I tested out the .wav files from this tutorial => https://learn.sparkfun.com/tutorials/sound-page-guide#hacking-your-kit . I was able to get those .wav files working from the tutorial. It looks like he reduced the file size to mono and 22050 Hz for the project rate in Audacity. Testing this on your .wav files exported as a “signed 16-bit PCM”, I was able to get a clearer sound. Try modifying the .wav files with that configuration. The issue is that the rate is reduced and the audio track has been converted from stereo to mono. I’m not exactly sure why 32000 Hz and 44100 Hz rates with stereo and .wav files as signed 16-bit PCM do not work. Maybe the VS1053B cannot handle the quality of the .wav files and the datasheet is wrong?

Category : Electronics