Categories
code Music programming qt Recommended Software

Touch up your sound with SoundTouch [w/code]

Screen Shot 2014-10-13 at 11.55.42 AM
So I needed to speed up / slow down an audio stream I had (speech generated with Flite TTS) and naively I thought it would suffice to simply sample it at the right intervals and interpolate.
I quickly discovered that just re-sampling won’t do because changing frequency also changes pitch proportionally. And then I discovered the world of Time Scaling in audio and it’s many algorithms and approaches to change the tempo without changing pitch.
To my surprise there were a number of ready made free libraries that do it, but the first one I tried – RubberBand – did not work out, it had too many dependencies I simply couldn’t be bothered compiling it for the Mac. But SoundTouch, well it had a Homebrew formula so it won by default.
I wrote a little simple wrapper around it, that interfaces nicely with Qt.
Let’s see what’s going on there

Categories
Android ffmpeg linux Music Networking Solutions Stream

FFMpeg with Lame MP3 and streaming for the Arduino Yun

So, I’ve been trying to stream audio off of a USB microphone connected to an Arduino Yun.
Looking into it online I found some examples using ffserver & ffmpeg, which sounded like they could do the trick.
However right from the start I’ve had many problems with playing the streams on Android and iOS devices.
Seems Android likes a certain list of codecs (http://developer.android.com/guide/appendix/media-formats.html) and iOS like a different set of codecs (Link here), but they do have on codec in common – good ol’ MP3.
Unfortunately, the OpenWRT on the Arduino Yun has an ffmpeg build which does not provide MP3 encoding… it does have the MP3 muxer/container format, but streaming anything other then MP3 in it (for example MP2, which the Yun-ffmpeg does have) simply doesn’t work on the Android/iOS.
From experiments streaming from my PC a ffmpeg/libmp3lame MP3 stream, it looks like the mobile devices are quite happy with it – so I will need to recompile ffmpeg with Lame MP3 support to be able to stream it.

Categories
electronics

Small footprint Bluetooth-enabled Arduino clones

Just a bit of online research on a small footprint Bluetooth-enabled Arduino clone for prototyping:

Categories
code electronics work

Simple ATTiny85 USB board

IMG_20140623_121908_fixI needed to create a small, cheap USB-enabled circuit to serve as a key logger, and I’ve found some nice projects online that explain how to do this.
I found out you could use an ATTiny85 to run the V-USB software USB stack, and I only needed the one input pin to gather data (it’s going to be a USB “That was easy” button).
Since this was done so many times before, I will be brief, and try to point out problems I had instead of a regular tutorial.

Categories
linux Solutions

Struggles with creating Linux Live USB on Mac OSX

SO I’ve been trying to create a bootable live USB of some linux distro on the Mac and failed consistently. That is – until I found a magical solution!

Categories
code programming python school tips

GDoc/LaTeX compilation GUI with Tkinter/Python [w/ code]

¡Hola mis amigos!
I’m learning spanish, but I’m also annoyed with collaborating on LaTeX papers. That’s why I’ve created the GDoc-LaTeXifier so the syntax will be clear when I collaborate on a paper with a remote friend.
But now we both want to compile a PDF on our machines. So I’ve created the tiny shell script that downloads the paper and runs PDFLaTeX.
The problem is that this opens a new terminal window and runs the script. I’ve been able to sort it out so that it closes the terminal window when it’s done, by on my friend’s mac it doesn’t, so he ends up with a ton of open windows.
Enter – the GDoc/LaTeX compiler GUI.

Categories
Uncategorized

Speak friend and enter

Screen Shot 2013-12-21 at 12.58.00 PM

Categories
code graphics opencv programming

Simple NURBS renderer [w/ code]

Screen Shot 2013-12-18 at 11.01.23 AMDon’t you just love scouring the web for a piece of simple code, come up short and then just write it yourself? Well that was the case with NURBS for me. These simple curvy lines, why doesn’t anyone just dish out a straightforward implementation of them? Well, now you have it. I wrote a simple renderer that reads a DXF file with NURBS (from Rhino3D) using DXFLIB, although the DXF file format is super easy to parse, and renders them to an image with OpenCV.

Categories
code programming

Simple HID driver to save an old AIPTEK HyperPen tablet trashing

rect3948So I have this incredibly old and stupidly cheap AIPTEK tablet (like a Wacom, only Chinese and cheap) that is so outdated it practically has almost no existence online. Why did I bring this item across the atlantic? I have no answer, but it’s here anyways and I can’t seem to bring myself to trash it. Of course no drivers are available for it so I wrote a tiny simple driver using the great libHID library from Brandon Fosdick. It was painless, and my old tablet was saved.

Categories
code tips

LaTeX colorization in Google Docs with AppScript [w/code]

Screen Shot 2013-12-03 at 7.38.53 PMThere’s a fantastic way to collaborate when writing an academic paper in LaTeX – using Google Docs. LaTeX is all text anyway, so collaborating over GDocs is straightforward, but alas there is no colorization to make it like a good LaTeX editor… Fortunately there’s AppScript to help us!