top of page
Search

[26] L'lasons de Aether ver Beinags #8

  • Writer: Conlan Walker
    Conlan Walker
  • Mar 25, 2022
  • 2 min read

At the start of the week, I wanted to do at least two things, though I only ended up having time for one. Though, I think the one thing I did accomplish is substantial enough, so I'm not too worked up over it.

I wanted to make a prototype for some kind of concatenative synthesis, specifically.

For this purpose, I needed a soundbank of some kind. It didn't have to be a big one, or really even one larger than, like, 3 in size. To try replicating that one source-filter test I heard, I thought I'd only need those three to get the point across. So that's what I started with.

ree

Shown above are the original ah, ee, and oh vocalizations I recorded. they are all about 400-something samples long, but not exactly. to produce the kind of effect I want more easily, I'd need to stretch these clips to actually be exact. I noticed that the ah sound was the middleground between the ee and oh, so I simply stretched the other two to meet that goal (467, 462, and 483 respectively).

I thought the easiest way to try smoothly interpolate between two of these is a linear interpolation on a sample-by-sample basis. Visually, it looks a lot like this:

ree

As you can see, the speed of movement between the two samples are dependent on their distance to one another. Here's a link to the sketch if there's interest:


For my program to recognize and load the samples more easily, I exported the soundbank's files without wave headers, which basically means that they're just raw binary files with a bunch of 16 bit numbers in them.

ree

The result of this work?

Kinda bad, unsurprisingly.

On the bright side, I immediately thought of a few ways to make it better.


The most major one also turned out to be the greatest pain to get past. It came in the form of simply recording more of the element for the soundbank. Instead of 1 cycle, I'd instead do 56.

56, because it's how many cycles were in the new ah sound when I started splicing it, so I might as well make the rest follow. A few problems came up when I had to not only sync up the clips before stretching, I also needed to make sure that the cycles match perfectly, to avoid wave overlaps alongside other undesirable stuff.

ree

For example, these 4 are synced up to more closely match their shapes.

To edit the amount of cycles each clip had, I basically just needed to count them manually.

Other than the longer clips and syncing their zero crossings, I also:

  • Normalized the clips, making their peaks the same magnitude

  • Use better timings for the vowels (there is no text preprocessing)

  • Added one more vowel, for a total of 4 in the soundbank

The result the many changes?

A lot better, and a lot less robotic.

I didn't implement it, though maybe non-linear interpolation would sound a bit better.


I might try dynamically pitching the output up or down at some point, but for this week I think it's fine enough. Here's the code:

ree

 
 
 

Comments


bottom of page