Tag Archives: Fourier

Brad Ormand - Renegade Rambler Audio UI idea

2016.03.01 – Audio Granulator Progress

While in the process of writing an audio program for the ARM chip and another display, I began to also write code for Mac OS 10 and iOS.  I hit some good vibes and continued going forward with the Mac app and left the ARM system on the bench, as is, to come back to later after I finish this Mac app.  I switched gears, as I normally do, but I now have the pieces together to make this app, and it’s multiplying my motivation…

I have been studying DSP and audio algorithms in C++ quite a bit lately (and I had already made great progress with the DFT and FFT in 2015), and am having a great deal of fun analyzing and manipulating sound.  My degree and background are from this area, but I have never had to actually code a chorus or reverb or EQ (although I’ve built hardware analog EQ’s and compressors).  So… I decided to go through making this higher-level abstraction app to beef up more of my real-time digital audio knowledge.  I’m using Core Audio and Audio Units.  Then, after one or two of these apps, I can come back to the bare ARM system, with which I’ll have to write these “units” from scratch (and I can’t wait – looking forward to it.  Just need a quick win first, ‘cuz I’m gon spend some time on it – like a year).  It’ll also help me decide how I’m going to organize the higher-level abstractions from my low-level C++ code once I get back to coding the embedded ARM system.

ARM Breadboard Circuit 1 Brad Ormand

I’ll have the fast FFT implementations and FIR and IIR filters in the CMSIS DSP lib, etc, and I’ll at least have a fast sine and cosine routine, but it’s a lowest-level implementation that I’ll have to “hand” assemble to be a 4-pole LPF or a phaser or even a simple notch, etc.  I’ll have to make my post-DAC “Nyquist” filter at 22kHz and all of that stuff on the ARM system in hardware, etc.  It’ll be at least 44.1kHz at 16-bit – I want (people) to be able to actually use the audio generated by it – some really killer and sonicall-pleasing sounds.  So, that’s coming up…

Brad Ormand's Second Fourier Transform - Noise

It’s kind of a tall order for me.  I have some work to do before I can write a digital audio system from scratch at the chip/embedded level – from Math to code to electrical components. I can’t wait to do it and spend time on it, but I must prepare.  So, I did a few mathematics problems this weekend dealing with impulse response and the summation of the FIR filter to get to know what I’m dealing with.  So, I’m going to do it all step-by-step in my free time until I’m able to grasp it and code good implementations.

M A C   A U D I O   A P P

I have been successful at building a Core-Audio-based sampler for iOS in C++ and Swift.  I have a functional demo that starts and ends the time window at particular points along the audio clip using touch – all real-time.  My next step is to draw the waveform out into a SpriteKit view and to get the app to respond to the touch drags to resize the play window to the visual waveform on the UI.  Just that part itself has been a bit tedious, not-to-mention any zooming of the waveform, which hasn’t even been considered, yet.  Then, of course, I’ll need to render out the playhead rolling along as the samples get played.  There’s a lot of interpolation that has to be done since there aren’t enough pixels to show every sample, and I’m trying to get that stuff out to it’s own thread and to see if I can somehow pre-calculate it all when it first comes in.  I made a pencil sketch of the UI to come – it’s the initial view, but I’ll have a keyboard or sample pad view of sorts.

Brad Ormand - Renegade Rambler Audio UI idea

As for the audio source, right now I have it playing from a file.  But, I don’t think I’ll let the user bring in files with  it.  It’s just too weird on the legal side since I’ll let the user save it back to disk, and I have to detect and convert what type of files they attempt to load in and stuff (mp3, ogg, AAC, which wav, etc), and well…  I really just want the user to be able to press record and mess with the stuff that gets recorded, and probably with a 15-second limit – focus – kind of like Twitter’s 140 char limit.  That audio will then be recorded into and played from a file of course, but I can count on it being a 32-bit float PCM format, and just run with it.

In the end, I want the thing to act as a granulator, where you bring in audio and are able to loop sections of audio at really tight intervals, or even with randomized time and pitch parameters, where it acts as a sound design tool.  I do this in Pro Tools all the time by hand and cut samples like 1000 at a time and shift them incrementally and copy and paste them offset next to each other for effect, but it’s definitely time-consuming.  I’ll probably still do that because I have ultimate control, but I’d like to be able to go into the app environment and get sounds from machines or birds or rubber bands or my voice or even the wind and allow the user to really fuck with them to make them something else entirely.  Of course, they’ll be able to save the original tracks and save the performance.  And, I’ll offer a few time-based effects and definitely some distortion and crush on there, too.

So…  that’s what I’ve been getting into.  It’s after-work stuff, so it’s kind of slow-going after a day of already programming for hours at the day job, but I’m making definite progress and can’t wait to circle back to the embedded system, as well.  I have many, many things to look forward to on this front.

 

 

Brad Ormand Books - Cortex BN Oct

10.06.2015 – New Books came in and ARM CortexM4F

BOOK ORDER

Books again!  I really love getting used books from Barnes and Noble.  The most expensive book I wanted, bought new, went for $120+, and I literally got it for $5 at a used textbook bookstore affiliate of B&N.  Two of ’em, I got for less than $3.  I just share the occurrence because I get really excited about getting them in! (like I did the last time I did this) They’re beautiful.  Analog.  Books.  Also, they pertain to my current projects, as well.

I ordered 6 books this time – 5 electronics-related and one about architecture / building construction.  I got a  book on Digital Logic from the 70’s!  Haha – I just wanted to see what it was like back then, plus there’s actually good logic education content in there.  I even sometimes fantasize about living at the age I am now back when transistorized computers were just getting started.  I have a great love of computer history.

And, I got 2 books about power supply design – One for Linear supplies and one for Switched-Mode.  Can’t wait to see if I can beef up my design capabilities and understanding with these.  I would like to have a more versatile palette of production possibilities for providing power. 😉 a P alliteration, why not…  And, I got another one about different ways to build analog audio amplifiers – circa 1980.  Much love!

I got an ARM Cortex M-series book, as well, which was the main one I went to the site for.  I started reading it yesterday outside in the cool Fall weather on my comfy chair out near the garden and wood pile.  What a nice experience.  I’m really looking forward to using the DSP/floating-point features of this chip to drive displays (with FFT, etc) and my electronic art.  I wrote an 8-bit, integer FFT after this linked post a year ago.  Now, I want to bump it up a bit.  I want to get a complete, comprehensive understanding of this chip so I’ll know just what all I can do with it when it comes to design time.  I don’t want any surprises come firmware time – I wanna be caught up completely, so I’m reading it front to back.  Made it to page 71 out of 800 so far… 🙂

Brad Ormand Books - Cortex BN Oct

And, it’s been since last Spring that I have been immersed in embedded stuff.  It good to have the time to focus on it again.  Recently, I had been focusing on the album release (and also changed software jobs), and now I have a little more free time to get back on what I left off of. Very exciting.

ARM CORTEX M4F

I’m targeting the Silicon Labs (also headquartered in Austin) CortexM4F chip, EFM32WG942F256 in a QFP64 package, code-named the Wonder Gecko.  Awesome.  32-bit, 256K of flash, 32KB of SRAM, and runs at 48MHz, with a hardware FPU, and with SIMD that I will try to take advantage of for light and stereo sound applications.  That’ll do the trick.  Let’s start some work…

In September, I went on a river cruise with friends and family on the Austin “Town Lake”, and we floated by the main Silicon Labs building, downtown (right on the river).  I had been using the Atmel SAM4S ARM chips.  They were fine, but I had to use an open source toolchain, lots of dependencies and patches, and – I program using a Mac, and just..  well, there was no ported IDE or any integration at all and lots of complications.  So, that got me to thinking, “I wonder what Silicon Labs has in their portfolio”?  It was just a few minutes after I saw their suitable offerings that night online and that they had a Mac version of their IDE that triggered my interest right away!  And, now, I’m trying it out.  Boots up fine and with CMSIS support and support for my programmer/debugger.  And, energy efficient – I’m runnin’ it with a CR2032 as well, right now.  Awesome!  So, I’m doing that now, instead.  Plus *they frum Texas..  BTW, ARM also has an office in Austin.  I drive by it every day. 🙂

Brad Ormand - Austin Downtown Cruise

Brad Ormand - Family - Guys - Austin Downtown

There have been instances, in the past, of me deciding on a platform and going with it, Sam4 gcc, Pickit3, etc., but I wasn’t actually entirely satisfied with my toolchain.  I really hope I’ll be able to have a really smooth time with this setup – one where I can really work efficiently and creatively.  I’ll continue and report on my results later.

And, as a final thought…  I think it’s time that I finally settle down with the gear I am going to use and show what I can do with it besides flashing LEDs and running cool animations on displays.  I wanna show myself what I can do system-wise, mainly, and for the marketplace and for my future creative career.  I’m sincerely dedicated and interested in doing that just for the love of the game alone, and for the expanse of possibilities that I can produce (for IoT and light and sound) if I just had the right calm mindset and time to do it.  It’s coming up, I think.  I’ll batten down and see what I can do.

Brad Ormand HoneycombLight Main MCU Board

03.25.2015 – Main MCU Board & ComCath RGB LED MaTRIX

After hours and hours of taxing my brain for what approach to use to streamline the “guts” of the HoneycombLight (for real – it deadened me for a bit from getting stuck several times and trying to overcome these obstacles.  I lost sleep.), I finally came to a conclusion for the architecture of the matrix routing (and then I was ok).

MATRIX BOARD

So, I figured, I’ll just place daughter boards, matrix mixer boards, every 4 pixels and let the pixel driver boards run straight to it, 4 at a time, raw, (R, G, B, and cathode) instead of “mixing upstream” by soldering wires together right on the drivers (like I did last time).  Mix as I go – 4 times downstream to the final MCU – it’ll all be prepared once it arrives there.   …Because the entire thing is really messy if done with twisting or soldering wires together onto connectors at the pixels, believe me.  It’s a “grid”, a Matrix, a mess.  I really needed the double-sided planes, here.  I did it in two “phases” (those 9 via holes in the center), alternating top and bottom copper.  Reminds me of the butterflies in Fast Fourier Transforms, but physical.

This allows the entire path to the MCU boards to be nice and clean with dedicated plugs for easy service and replacement, and I admit, also for the cleanliness of the way it looks – fresh, not cluttered.  I like that. 🙂  That was one of the tradeoffs I made.  The way that “under the hood” looks is important to me.

Brad Ormand RGB LED Matrix1x4 MixerBoard

MCU BOARD

And, as for the MCU board, most of its architecture is the same as the first through-hole rendition, but it’s just double-sided, solder-masked, and silk-screened, now.  Loads of improvement!  But, the concept is the same…  However, I can’t have it looking like it’s still a prototype.  (I have already built that and it worked (with wires all over the place), so now it’s time to do it for real).  So, every component is now surface-mount, minus the row and column connectors (for rigidity).  It’s not the *final*, final version – I have already thought of things that I’ll have to do to revise it, but it’s a good start.

I am yet to send it off to be manufactured, so I haven’t tested it yet, but I’m really excited to get a small batch back and run it through the ringer!  I mean, I’m almost as excited about how it’s going to *look* as I am about how it’s going to work!  Haha – to me, it’s like a work of art!  Especially with that ground plane in there surrounding the traces – looks dope.

Brad Ormand HoneycombLight Main MCU Board

I don’t know if putting “BradOrmand.com” on there is “forced” or not, actually.  I want a “maker’s mark” on there, but am still deciding if that’s the direction I wanna go or not.  I might put in a bitmap with my logo or even transfer it over to the company name I’m thinking about using for the marketing of the lights, etc.  I don’t know, yet.  Decisions, decisions.

All-in-all, though, this board was weeks in the making and took a lot out of me.  I didn’t think I could do it there for a while…  But, I was also kind of stressed out with all of the Portfolio and job stuff, recently.  But, I have it quite in-hand, now.  Let’s hope the electrical connections all check out and that those tiny-ass traces can handle the current I’ll give it.  It’ll be multiplexed, but still only milliseconds between blasts.  We’ll see.  This is all part of the learning.  I’m determined to do this.

FINAL THOUGHTS

Last thing…  The main thing I am concerned about right now with this is soldering the central ground pad underneath the 0.8mm pin pitch TQPF without a reflow oven or a good heat station.  I don’t know how that’ll work.  I’ll be thinking about it.  In fact, I think it has solder-mask under it right now.  I’m going to have to investigate, but the datasheet *does* recommend tying it to ground.  Onward we go…

 

Brad Ormand - JTAG Mapping

11.27.2014 – Thanksgiving

Lots of Thanksgiving-related outings I’m going on.  I have been out of town twice on mini-road trips and have seen a lot of wonderful people in the last few days!  I love the holidays.  I got to eat turkey, play football in the yard with the guys, build camp fires, play pool, engage in deep conversation…  I got to “ride along” on a shoot of a TV commercial.  Hell, I was an assistant camera operator to my brother who was running the thing.  It was fun.  I watched as he’d raise the cam from the floor to reach for the sky on the jig crane thing, at least 12 feet in the air and swoop it around back.  Lots of cool and crazy stuff going on right now.

As far as projects, I’m just kind of getting back into the swing of things…  I did figure out the JTAG pins of the ARM Cortex M4 that I soldered onto that board, recently. I got ARM GCC and the communication software rolling.  Now, it’s just seeing if I can communicate to it (or flash it already) from the Mac.  Once I get signal acquisition from the chip, I mean once I can confirm that it’s all in order and works fine, I’ll flip back over to programming it to test out the FFT on the SSD1306 or some other display since my shit went out before I could produce an animated version of the FFT stuff last week (or so).  It was just a weird (and mysterious) coincidence that I was at the pinnacle of the venerable and illustrious Fourier transform showcase, and….  Hardware Malfunction.  Shit.  Gotta step back and rebuild some stuff before I can move forward.  Anyway… then once that’s wrapped up, I’ll finally get back to the main project – the synth! (Oh, and, I have to launch this Project Log pretty soon, too).  There’s a lot to do, and here we go…

Brad Ormand - JTAG Mapping

Whew!  So, I’m just in a nested function call right now with all of these things going on at once, especially with the holidays.  But, I did my social stuff, got my fill, I encountered and overcame adversity, and now I’m going strong as ever.  Just gotta knock these bits out piece by piece.

Also, after Thanksgiving lunch while on the couch watching the Cowboys with my friends and family, I had a chance to draw a little bit of a better diagram for my Moon Painting “snake”.  It’s that LED square matrix array that I want to be made into a cable that I started a few weeks back.  So, now I’ll be intermittently going over to the “art dept.” when I take breaks from the synth and FFT vector.

Brad Ormand - 4 x 4 LED Matrix Snake, part 2

I realize, again, that there’s really a lot on my plate, as far as the projects I’m into.  But, I actually love it.  In a few weeks, everything will be caught back up and I’ll have a product to demo and a better direction for what all of this means, long-term.  I just have an indication in my mind that I want to produce these projects, and I’m not about to stop now.  I’m biting off more than I have ever bit off before.  Now spending time chewing.  But, if you have done that in real life (bit off too much food for the size of your mouth hole), you know you eventually get it all chopped and swallowed and then you’re free for whatever comes next (or you choke or spit it out, but that’s not going to happen 😉 ).  I kind of have that same feeling today.  But, all while smiling and wanting to get back into it.  whew.  hahaha – But, I’m busy chewing.

Brad Ormand - Synth Diagram

11.17.2014 – Synth & Chips

I like this title, “Synth and Chips”.  Makes me think of a small, dark British pub that serves fish (and chips) that has a few guys up there with Moog’s and TR-808’s and TB-303’s playing night jazz.

But, I mean to say that I started back on the synth circuit and that I’m ordering new ARM chips.  Haha.

Alright, so, all of this investigation into the Fourier Transforms was to add that to my toolbelt to use when designing audio gear.  It’s interesting to me as well, and was great learning.  Plus, I can investigate using it for synthesis sometime in the near future.  But, for now, I’m designing the amp and filters to use in my digitally-controlled analog synth.  The sound generation and signal path will be all analog, but the control voltages and gates and triggers and some effects (opted in or out, blatantly digital, like granulation or sample glitches, and maybe the delay) will be digital.  I drew a diagram (not exactly finished, yet – very preliminary scratch note) while I was waiting for my hamburger, at the deli across the street from work, between my morning and afternoon meeting.  It’s work that has to be done, first.  Still coming up with the concept…

Brad Ormand - Synth Diagram

There’s much to be designed, and I’m making this my official embedded project right now.  The work with the SSD1306, the Fourier work, the work on the Audio Tool, the analog filters work, and the VCO work all converge to contribute to this.  I have that ST7565R display that I’ll put some time in to write a driver for and investigate to see if I want to use that instead, but other than that, I’m pretty much committed to this project until at least the end of the year.

Brad Ormand - First Embedded Fourier Transform

11.16.2014 – Fourier Test & Guitar Practice

Well, during my tests of the real-time FFT on the embedded system with the SSD1306 as the display, I blew the Atmel chip out. Ugh.  At least I think so.  No smoke released, no smells, no heat – it just won’t program anymore.  It’s done.  And, I think I know what I did to brick it.

I’m running the chip with an ADC reference of 3.3v, and while using my iPhone as a signal source, I probably drove about 1.8v + 1.8v (peak-to-peak) = 3.6v+ into it (or more), to my estimate.  It’s stated max *is* at 3.6v.  I built a front-end circuit for it to all be positive voltage, so no negative voltage passed through, but had no input peak protection at all.  I measured the signal on the oscilloscope beforehand, and it was lower than the 3.3v, but it was turned down, and it was voiceover instead of mastered music, and there may have been transients and all that…  Ugh.  Basically, I just spaced and didn’t pay attention to currents.  I would never have even hooked it up with it turned up if  I had been really thinking.  I was in a hurry to do the tests, I guess.  Fools rush in. 🙂

So, anyway, I’ll build some input protection on there and re-consider, twice, what signals I feed in next time.  The good thing is…  I have a few more of those chips, soo…  I’ll drop another in and carry on.

But, during the tests, I was actually able to make a real-time-updating waveform display on the SSD1306, which looked soooper cool.  I did do a static test of the FFT implementation on the system and snapped a pic – it’s kind of a crappy pic, but you can see the peak and a few harmonics.  It was a really low sample rate.  However, never got to the part where I enabled the FFT per frame before the system stalled during my ADC tests…  So, I’m really looking forward to doing that, later.  Will it work?  Will it be super slow?  IDK.  When I get more time, I’ll restart.

Brad Ormand - First Embedded Fourier Transform

And, in other news, I re-strung my guitar with those 10’s and tuned it up.  It sounds pretty great.  I set up a comfortable station with an amp and a chair between the kitchen and the living room.  I then began practicing some scales at the level I left off a few months ago.  Breaking off rust, right now.  My goal is to play the “Kitchen” solo, at speed.

 

Brad Ormand's Second Fourier Transform - Noise

11.14.2014 – Fourier

Awesome!  I got the Fast Fourier Transform to work!   There has been a lot leading up to this, and it feels good to have done a custom implementation of it.  During tests, I was surprised to find out that, yes, confirmed, it *is* indeed faster than the DFT, alone.  Haha.  Of course it is, but I had to do it to *really* believe it…   Yes, it runs on the order of 10 times faster than my earlier DFT implementation.  In an interpreted JavaScript environment, it ran at about 1 millisecond, on average, whereas with the DFT alone, it was averaging at about 15 milliseconds!  What a difference that is. But, yeah, the FFT was a muuuch more difficult thing to implement, as the code was over 6 times as long, and the nested matrix adds in the butterflies were a bit hard to comprehend when I had to comined them with i, k , and j iterators in loops.  But, it turned out great, in the end, and the savings speak for themselves.  Love when it works out.

Brad Ormand's First FFT

This pic (above) shows the FFT taken of (about a) 1k sine wave (very clean, without those weird harmonics I was getting earlier).  I also tried to construct a square wave from sines.  I just went as close as possible, going up to the 11th harmonic.  Here’s another screenshot of the combined waves (you can see the Gibb’s peaks forming there).  This one is about up to the 7th harmonic.  And, due to combining the waves, the amplitude is a bit clipped (visibly, in the FFT spectral and waveform chart), but oh well, it was an experiment.  I really just wanted to move on to the embedded implementation…

Brad Ormand - Combined Sines

Later, I started the C implementation and got it showing up on the display as a crude set of dots, and the sample rate and sample window are much less.  So, there’s more work to be done there, of course.  I did confirm, however, that different frequencies produced a sweep across the bands and that it works as expected.  Ah, it’s just amazing stuff – love this kinda thing 🙂

 

Brad Ormand's New Resistor and Capacitor Case

11.13.2014 – Resistors and Caps & Fourier

After work last night, I needed a break from staring at the computer screen.  I mean, it was really getting to me.  So, I decided to re-organize my capacitors and resistors into labeled bins, which is far better than what I had before.

I got a new order in, recently, of caps and resistors, and got a few shelves / cases to organize them with a while back.  So, I just took that project on, labeled it and stuff.  It was nice to work with physical objects for a while instead of being “jacked in” to the system.  So, there ya go.  I got an awesome system going that will serve me well in the future.  And, I’m fully stocked and ready, now.

Brad Ormand's New Resistor and Capacitor Case

And, in other news, I did perform a DFT on simple sinusoids and started my FFT implementation. Whaat.  That feels good, for real!  However, I have more work to do because I want higher resolution in the bass region!  The linear nature of the k-bins, mapped out to the logarithmic nature of our ears’ tone discrepancy, make it so that I have more data than I need up top, and not enough data that I want down below! Haha.  I forgot about that 🙂  Once I performed a few DFT’s I realized this phenomenon.  I’m using a 31.250k sample rate with my destination chip, locked to it’s interrupt (8Mhz/256), hence the Nyquist 14k at the top.  But, I did this implementation with JavaScript and Canvas and drew in the wave used as an underlay so that I could see what I was inputting…  This is a ~400Hz sine.  The labels are approximate.

Brad Ormand's First Fourier Transform - 400Hz Sine

I’m not sure why I’m getting harmonics, though – maybe the crudeness of my sampling?  I’ll continue to work with it…  And, here’s some noise…

Brad Ormand's Second Fourier Transform - Noise

Yeah, so, I have a few ideas.  I can throw away (and not compute) some frequencies that I don’t need.  That’s also an advantage of writing a custom solution –  that I can optimize for my own ends.  I can “make” it logarithmic from within the algorithm, skipping over the non-interpolated values.  How that’ll map to the butterflies and FFT?? – you got me!  I don’t know.  That’s the work left to do.

Let’s say that I want 30Hz on the far left, with another 60Hz bin next to it (and 10 more bands up to 14k on the right, logarithmically up), I’ll have to (at least) bump my number of samples per window up to 1024 (whew – a lot for an embedded system!).  But, I bet I can get that down to at most 256 by skipping bins.  The runtime overhead would of course be the comparisons (compute->don’t compute) and the memory of the key indices.  That’s my first idea.  I’ll try it and see if I don’t come up with something better as I move further along, who knows.  [This is fun 🙂 ]

Oh well, that’s something I’m thinking about.  Onwards we go.

 

Brad Ormand - Combined Sines

11.12.2014 – Fourier & SSD1306

Ok, I am almost ready to begin my implementation of DFT and FFT and perform tests.  At this point, I have a good handle on the math and general algorithms, and recognize that there are a few ways to approach it, not just one specified way.  So, there’s a little flexibility there to let me try different routes.

First, I already have the ATMega328 set up with the SSD1306 on the board, so..  I’ll just use an ADC channel off of that and use it for input from an audio line signal and go to town on a channel of audio.  Even before that, though, I’m going to simulate it with static “fake” data and compare a n^2 DFT implementation with a true n log n FFT implementation, and convince myself that the outputs are the same.  I’ll suspend working with the ST7565R display until I get something going here..

My general path for the algorithm of FFT will be :

• Capture the amplitude data in a periodic window (nyquist freq * 2 [maybe 30kHz for now]) @ the update rate (maybe 15fps)

• Normalize the data.

• Split those into the odd-even butterfly containers

• Take the DFT of those, in place, as iterations proceed

• Re-order the indices with a reverse “bitmask” into input/capture order

• Take the imaginary / complex parts and flip and mirror them back over to the other side of the axis.

• And then sort (horizontally) and scale (vertically) the DFT data out to match my GUI bins

• And, then animate them on screen at my x fps

Alright, so now….  just gotta get set up to do it.  Gotta get the right frame (of mind) to start this and set up some time where I won’t be disturbed (have to go to bed, go to work, go to a social outing, etc).  I haven’t done anything this complicated since I implemented perspective projection or texture mapping, and I remember that being taxing 😉 .  This is where I’m at right now in my journey, and it’ll be nice to have this tacked.  Then, I can see about optimizations. I’ll plan some time this weekend to start.

Brad Ormand - Fourier Transform Notes

11.11.2014 – Jameco & Blog

Umm..  yeah, I’m super excited because my Jameco shipment came in…  whew!  My 5532’s, JFETs, mylar caps, my 160 LEDs, some PCB connectors, the awesome new white/grey LCD (damn – can’t wait to write the driver and get it dropping black-grey rain!) and a whole bunch of other components that I need for my projects.

I’m still tweaking my WP theme, and it’s coming along.  I have the music page and player to a good point, and I am starting on the blog index, which I think will be a risk, but a hit.  We’ll see.  And, I’m still formatting the posts and image widths and heights and paddings and fonts and etc, for the whole thing.  It just takes tine.  Soon enough, it’ll be dropped and live.

Last night and a few times in the last few days, I went back and tried to get a good grasp on Euler’s formula (e^ix = cos x + i sin x ), so that I could get the necessary background to be able to understand the Fourier Series and Transformations in a little more depth.  I studied Euler’s formula, the power series and the the nth derivatives of sine and cosine – very interesting stuff!  And, it gave me the background I needed to plow through the core of Fourier’s stuff.  So, that seemed to be the key for me – the point where it all came together.  I’m very close.

Brad Ormand's Metal Paint Case

11.10.2014 – Calculus & Paint Case

I spent some time studying trigonometric identities and some more calculus in preparation to be more adept at understanding the Fourier Series and Transforms.  I have a rudimentary understanding of Calculus from school and from other avenues I have ventured into in the past with physics and programming (for instance, I frequently use velocities and acceleration in my animations and have to calculate them).  And, my internship was a actually a physics internship at NASA/JPL, but the day-to-day activities was really more computer-science-related solving some physics problems.   So, I’m not scared of the mathematics anymore, but it is frustrating a bit when you need to derive or transform trigonometric functions and don’t remember the identities or derivatives off-hand.  Or, when I need to understand something quickly and am rusty with some of the less-frequently-used notation.  So…  I’m trying to beef up the skills a bit so that they don’t get in the way of my understanding.

It’s kind of a bit like what I’m doing with guitar, as well.  To get good habits and sufficient skill so as to be able to use them to express myself without having to remember, explicitly, the techniques or placements I’m using – so that they are automatic and ingrained, and I can just speak in fast, native brain machine language and just start expressing instead of thinking: “What was that chord configuration again?”, or in a moment’s instant: “Do I pull off here or pick it?”.  Instead, I just *do*.  So, that’s what I’m trying to achieve.  Also, that’s when it becomes the most fun and interesting, I think 🙂

Also, over the weekend, I built a paint case from supplies I got at the Home Depot – I love that place!  I needed to find a solution because I had robbed the shelf the stuff was formerly in to put my Tek Oscillator on.  And, I had been wanting to make something a little more proper and accessible.  It’s a great addition to the shop.  It was a fun project.

Brad Ormand - Making a metal case

Brad Ormand's Metal Paint Case

Brad Ormand's Metal Paint Case with Paint

 

Brad Ormand Painting Signatures

11.07.2014 – Painting, Blog & Fourier

I’m still working on putting together my WordPress theme.  I have the twenty-fourteen theme modified to fit my purposes.  There are little things everywhere that I’m tweaking and it just takes time to get each thing to a suitable level.  For instance, I don’t want a sidebar, opting for a more dynamic way of showing other posts.  I haven’t decided exactly what I’ll do, but I know that I’m going to have to write some kind of modification to set up an API that my JavaScript can call.  It’s going to be kind of like a dashboard, instead.  So, still tweaking all of that stuff…

Wordpress Coding

And, I signed all of my paintings that didn’t have a signature so that I could take pictures of them to put in the image gallery I’m building for the site.  Then, I took all of the pics in halfway good lighting and good focus and now I’m cropping out the background for each one.  This might carry over to tomorrow.

Brad Ormand Painting Signatures

And, in other news, I had no idea that there were different forms of mathematical Integration – i.e. Riemann integration, L2 integration from Lebesgue, and others, etc.  I passed through those waters on my way towards attempting to understand Fourier Transforms and Series, and it’s fascinating. If I relax and take my time, I find math very enjoyable.

Fourier Series and Transforms are fascinating, themselves, but I gotta tell ya, it’s some thick-ass reading! Especially when stuff is proven out, like when they take one single “n” out of the summation, call it “m”, and prove that one “m” case as opposed to the other n’s and then end up with a few integrals and a few inverse exponentials with complex numbers where that entire mess stretching the entire drawing surface just equates to a big fat Zero after all that work.

But, it’s pretty thick if you aren’t refreshed with your calculus, trigonometric identities and derivatives and exponent algebra. Every time I attempt to understand a more involved concept like this, I have to go work some more basic problems to get caught up to being able to intuitively understand the underlying meaning and relationships, which is what I’m after. But, it’s like warming up for the “big game”. I have to get in the right mindset and mode. The payoff is, however, every time I study a concept just above my limit and can “get it”, I can add that to my implementation toolbox, which is the ultimate goal in studying it in the first place 🙂 .

Brad Ormand Fourier Matrix Notes

11.04.2014 – Blog, SSD1306 & Fourier

I wrote a few more utility functions for my graphic lib and started a grid-like animation for the SSD1306.  Still having fun with that, exploring more.  And, as a result of looking up some other stuff, I stumbled upon some physics stuff that I had been studying from a few months ago and switched over to that.  I have studied Fourier Transforms like 1000 times before and still don’t have it all down, ugh – I have pages and pages of notes from a few years ago, from two months ago, and I’m generating more tonight, analog and discrete.

Seems like I’m gonna get it down one day by brute force.  Ha. Just by failing and failing at it until I see daylight.  I have many applications for it.  Yeah, when I get to start implementing it in practice, I think I’ll have an even better understanding of it since I can use code to explore it.  I’m interested mostly in exploring additive synthesis and the DFT time-to-frequency translation of arbitrary signals.

Fourier Transform Notes

I don’t see the point in using any FFT code libraries right now until I understand it, since this is one of the things I really want to write in depth, not just “obtain and use”.  I’ll write *my* implementation of it first, and then if I have a good understanding of the steps involved (decimation, butterflies, etc), then I might consider a DSP lib or something.  But, knowing me, I probably will just keep tweaking my own implementation, since my goal is to understand it, and if I understand it, then well, I can write better and better versions of the utilities over time.  But, in any case, I seek to know how the shit works and why.  And, I’m almost there.  I have real applications waiting to have these concepts put to use.

Fourier Matrix Notes

And, in other news, there’s the work for this blog that I have been doing – building the scaffolding of the site in CSS and working with the mock and images and GIMP. I love Photoshop, yes, and I have a license for it, but it’s not installed on every computer I have.  So, I have been using GIMP more and more.  Quite a few things you can do with GIMP.  GIMP good.  GIMP pretty cool.  I like the GIMP.  GIMP.