Oregon State University|blogs.oregonstate.edu

Archives: February, 2022


Leaving February 25th, 2022

Like a lot of folks in this class, I am graduation in a couple of weeks. I have been working and preparing myself for a new career for the past couple of years, even dreaming of getting a new job, and yet while approaching the finish line, I can’t help be but a little sad.

I have been working in my current field (outdoor education) for almost 15 years. There are many parts about the job that I really do love. I will miss teaching. I will miss seeing students grow and get excited about the material. I will miss being good at my job.

I don’t want to brag, but I am a good instructor. I have spent a long time practicing, reflecting, copying, and perfecting teaching the curriculums that I am responsible for. There is a non trivial part of me that is scared about leaving a job that I am decent at to go after a career where I am not. I am not a bad programmer, but I am not a developer with 15 years of experience.

It’s hard to walk away from all of that, and that’s not even including the great people I have worked with. I will miss the obligation to chat with my mentor and coworkers.

I am really looking forward to a job that wants me to be around full time and can help me earn enough to pay off my students loans, but I am also mourning a ‘dream’.

Read the post...


A whole new world… February 10th, 2022

one of channels and sampling.

This week I have been really diving into how to process audio data. It turns out that there is more to it than I originally thought.

Some reflections. Audio data comes in so many forms and it turns out a bunch of them are not compatible. Here’s an example. Even within the same audio format (aka file extension), tracks can be sample at crazy different rates. This means that when trying to combine their data, you either have one track missing data at certain time stamps, or you are jumping over data on the track sampled at a higher rate. When trying to play back the track, you have to decide on a sample rate for playback and since there is a mismatch one of the two audio tracks will suffer.

Once you have that problem solved, let me tell you about my friend NumChannels(). Here’s the kicker, you can have two tracks sampled at the same rate, but at each sample they may have more than just one data point. For each channel, the track has a float value (between -1 and 1) per sample. These values align with what each speaker should be playing at that time. So mono track (or 1 channel) only have one value, and if you play it on more speakers they all play the same (copied) value. For stereo, you have 2 channels and of course 2 values. This means we can tell 2 different speakers to play a different “notes”. Audio tracks can be recorded in several multichannel formats, including 6 channels, or 8 channels.

So, when I am trying to take that data in, I have to figure out how to get the “best” channels to play on to our 2 channel system (i.e. headphones).

Kinda makes you want to take a magic carpet ride 🙂

Read the post...


Nitty… meet gritty February 4th, 2022

So this last week has been a cycle of attempts, failure, pondering life choices, and then new attempts at solving the core functions of our application.

For our group project, I have been tasked with manipulation of the basic audio playback (which I thought would be straight forward). I walked into this project with very little experience in audio data or even C++.

I can now confidently say I have a slightly more experience with both! I have been working through tutorial after tutorial and have a much better understanding of how audio is stored in memory and how to process that memory into the device IO.

I am not going to lie. There was a low moment where I couldn’t figure out why the program kept throwing exception after exception. I felt frustrated, inadequate, confused, and frankly just really PO. I wasn’t getting errors consistently and I did, I couldn’t figure out exactly why the error was being tossed.

So I got a beer.

And when my wife asked what was going on, I explained “I don’t know what the problem is,. I don’t know when, or even exactly how, but given enough time, I will figure it out. ”

One beer smarter and a couple of hours later I was asking her to come listen to “door_slam.wav” and “cello.wav” sing in a harmony that only a witless programmer can appreciate.

Read the post...