Nick Davies

Author, Musician, Web Developer, etc.





 

Making of Evacuation's Out: Vocals

2024-08-20 00:00:00 +0000

On August 9, I released my third album as Spiral Island, Evacuation’s Out. In my next few blog posts, I’ll share some of what went into this album, starting with vocals.

Recording

All of the songs on this album originally came out of February Album Writing Month, and I had rough demos to iterate on. But the demo vocals generally weren’t worth keeping, because when I recorded those demos, I was finding the melody in real-time, and singing quietly because it was 11pm by the time I wrote lyrics. As a result, 99% of the vocals got re-recorded, and parts got added over time.

(There was one vocal track I didn’t redo, the “echo” vocal on In de Woestijn. I liked it better unpolished, and as a subtle Easter egg that it’s not actually a delay of the lead vocal.)

Acoustics: I refuse

My home studio is in the corner of a rectangular room that’s about 10’ x 15’. Aside from my junk, there’s not much to absorb reflections. I don’t have a great ear for acoustics, but I know that the acoustics in the room are garbage. Besides that, there’s a window facing the street and a vent for the radiator and AC.

The acoustics are something that I don’t feel qualified to fix or even judge, really, so I’ve tried to just avoid them altogether. The sound of an acoustically pleasing space is something I can always add later, in the mix.

I use a Shure SM7B, for that sweet NPR tone and its focused cardioid pattern. It’s mounted on a standing desk, so that I can sing standing up and have my laptop at that level to punch in / punch out.

For lead vocals, I get pretty close to the mic, and for backing vocals, especially when I need to hit high notes, I’ll back up a couple feet and project more. The mic has a proximity effect that picks up more low-end when you sing close, so I typically EQ out any frequencies below the fundamental note of what I’m singing (200-400hz).

In addition to EQ, I’ll typically use a de-esser, compression to tame the dynamics, and auto-tune. At the end, the vocal will be routed to reverb and/or delay buses. But I’ll get into that more later, in my post about mixing the album.

Auto-tune

Recording my Spiral Island albums has been an opportunity to try out new studio tricks and technologies. On my previous album, I did things like use pitch shift to reach melodies I couldn’t sing otherwise. I used a sample-based vocal synth to fill the role of a gospel choir, and a Yamaha vocaloid to reach notes too low for me.

The vocals on that album were all tuned as well, using Reaper’s factory default ReaTune, but without a lot of hand-editing. Listening back to it nowadays, I don’t think I quite achieved the slick pop sound I was going for, and this is one reason why.

Starting on this album, I wanted to make songs that were energetic and digital, and to have vocals matching that vibe. So I did a shoot-out of all the auto-tune options I could find at the time:

  • Melodyne
  • Nectar
  • Waves Tune Real-time
  • ReaTune
  • bx_crispytuner
  • Voloco
  • Little AlterBoy
  • Antares Auto-Tune Pro
  • RePitch

I could write another blog post on my impressions of all these, but for this album I settled on bx_crispytuner.

This was one of the more artificial-sounding plugins I tried, which I was more comfortable with on this album: the goal was to make catchy songs, not necessarily to fool anybody about my singing abilities.

It also does something to the vocal timbre, which I actually like on my vocals. And it does a pretty good job of figuring out what note you’re aiming for, which reduces the work of hand-editing it the rest of the way there.

How I used auto-tune

With a home recording project like this, I just kept doing takes until I had what I wanted, as close to the target notes as I can get. So generally all the notes you hear, I sang as best I could.

Even the low parts on Cinemascope–I sung those notes and then shifted the formant to make it sound like it was pitched down, but it’s not. (The rap verse on Wij Bevonden Ons uses a similar effect.)

One exception would be the harmony on Perfect Imagining, which is a pitched-up copy of the lead vocal. Harmonies made this way often get lost in the mix, and end up sounding like overtones/undertones of the lead vocal, but in this song’s arrangement, I needed the timing to be an exact match.

Other vocalish stuff

The gang vocals on I’m Gonna Sleep were just multiple tracks of me doing grunty voices.

Wij Bevonden Ons also includes a bit of Chipspeech. While I used a vocal synth for a gospel choir on the last album, I think these days, with the proliferation of deceptive AI-based tools, I’d maybe rather inlist actual backing singers, or use a more obvious fake, like Yamaha Vocaloid or Chipspeech.


General updates

2024-04-24 00:00:00 +0000

It’s been a while since I posted a general update, so here goes.

Music

I released a second Spiral Island album in December 2021. I rushed the release a bit to get it out in time to mail CDs to family members in their Christmas packages. Now I’m getting ready to release a third Spiral Island album. Those tracks are currently getting mastered. It should be out sometime this summer, and I might share more about the recording of that album soon.

I’m also kind of looking forward to working on new Spiral Island material soon. Electric guitar has been one of my latter-year pandemic hobbies, so it could be pretty different.

Meanwhile, Gentle Brontosaurus is recording a third album right now too.

Writing

I have a story coming out in Fusion Fragment next month, which is very exciting! This is my first professional publication.

There’s a bit more revision to do on my historical / epistolary novel, before I can start querying that.

NaNoWriMo 2023 just didn’t work out for me, with a very time-consuming routine and feeling very emotionally taxed. I’m hoping to be back on that horse next fall.

It was also a real thrill and honor when Flights of Foundry won a 2023 Ignyte Award, and to be one part of the team.

Language

At the start of 2023, I made a resolution to learn Dutch, to be able to talk to my family in the Netherlands in their local / preferred language. I’ve made a lot of progress on that, to where I can follow a lot of dialogue in Dutch films in realtime.


Idi Davies, 2007? - 2023

2023-12-06 00:00:00 +0000

Idi swaddled in blankets

Idi came into my life in summer 2008, via the Dane County Humane Society. We don’t know for sure how old she was then. She was named for a dictator, in keeping with Mobutu Davies. She was never my cat alone, but her vets over the years knew her by my last name.

Young Idi looking down from above

Throughout her life, she loved her humans so much, those she lived with and those she got to know. When we had to leave her home during the day, we’d leave NPR on for her, to help keep her calm. Whenever we were sad or anxious or sick, she would drape herself on us protectively. Last time I was job-searching, she knew I was nervous during live-coding interviews, and she’d try to help the only way she knew how: by meowing and demanding pets.

Idi sitting mugly on a row of books

When we had a bunk bed in a small downtown apartment, she loved to be at face level for easy head-butting. Most nights, we had a bedtime ritual where I’d lie down and she’d walk up my chest and nuzzle my nose. This year in particular, she’d often do this again just before my morning alarm. She loved ear rubs, and it’d often make her purr. Lately she learned to pet us gently with her paw, as a way to ask us to pet her.

Idi looking at the camera from a high shelf

She enjoyed musical instruments: tin whistle, accordion, trumpet, keyboards, guitar. When I’d restring a guitar, she’d chase the loose strings.

Her jumping skills were never the best, but she loved sitting somewhere high. Over the years she moved four times, and always had to explore.

Idi sitting on a scratched up old couch

For many years, she loved playing with a “fishing rod”-style toy most of all, chasing it in circles until she’d spin out on the floor. She also loved chasing a laser pointer. She’d play-wrestle with my hand, always holding back her teeth and claws.

Idi sitting on my lap in the way of a laptop

She was no hunter, but she chattered at birds. When we lived in a 12th floor apartment, we’d put on bird videos for her. She’d look for the birds behind the television.

Her substances of choice were catnip–lots of rainbows to lick and kick–silvervine, and plastic carrot bags. Human food was rarely interesting to her, but there were times she went for a corn chip, or a cheddar popcorn bag, or a plate that had bacon on it. For a while, she had a habit of drinking water out of people’s water glasses. She’d also drink from the faucet in the bathtub. If you took a bath, sometimes she’d hop up to the side of the bathtub and drink the human broth.

A mischevious loaf in front of a laptop

We took her out on a leash occasionally, though it took a long time for her to get used to the harness. In her last few days, she actually requested to go outside, despite snow and meltwater on the ground.

I knew this day would come. I thought about it enough that I should have been ready for it when it came. Turns out not so much.

Playing video games with me

Making sure she ate enough had been a struggle, since her first brush with death back in 2011 or so. And then this year, everything started to go. She had a bladder infection in February, which led to an intestinal blockage in March.

Extremely cozy cat on a red blanket

Then in May, she was getting thin and bony, and the arthritis in her hips was getting worse and not responding to injections. That was the first time a vet suggested talking “about her quality of life”. It was a valid question–the vet only saw Idi growling and hissing–but it seemed like we were running out of potential treatments, and I started to wonder if she might not make it to next year.

Idi on her side looking at camera with big eyes

Over the following months, we started keeping score of how many servings of food she finished. Her front feet were collapsed, and it started to put a strain on her back feet, until she was essentially walking on her wrists and ankles.

In September, she suddenly started vomiting a lot. We got a last minute appointment with her regular vet. They gave her an anti-nause injection and said if she still threw up after that, she needs emergent care. So the next morning we had to take her to the ER vet. She was completely out of it when we got there; the doctor said she was in a state of shock.

Ready to pounce on squirrels in the TV

She was hospitalized most of that week, and they determined that she had an infection of her liver and gallbladder, and also diabetes. After five days in hospital, she came home with a tube in her neck and an intensive course of antibiotics.

Over the last two months or so, we’ve been back to the vet a lot. We’ve been doing feedings through her e-tube multiple times of day. For a little while, she was eating more on her own, and it seemed like she might outlive the tube.

Asking for pets please

In the past week, the nausea started coming back. Plus her back legs started failing her, and her eyes got a weird texture. Whatever reflex made her gnash her teeth and paw her face was limiting her ability to eat.

Then yesterday (Dec 5), she stopped throwing up. It seemed like an improvement at first, but by the evening, she was just really out of it and fading.

We took her to the ER, and they determined that her kidneys were failing. According to the ER doc, they could put her on life support, but even then she wasn’t likely to make it through the night. There was basically no chance she’d ever come home, or really be conscious again.

Coaching me while I exercise

In that first visit to the ER, there was no choice because she could pull through and have some quality time left with us. And she did. She made it clear every day that there was still joy in her life and that she wanted to be with us.

In the last visit to the ER, the choice was clear because drawing it out would do nothing for her or for us. It was still hard to give up on that chance she’d get better, no matter how implausibly slim it was.

Sitting on me in bed, about to bap me for not petting

I’m glad we had so much time together. I’m glad so many people got to meet her. Not just people who came over, but in the COVID/Zoom era, lots of coworkers and family and friends. And I’m glad that so much of her life is documented. Thanks to Sylvie, she had her own following on Instagram.

I would’ve had more time with her if I could. I know she would’ve wanted that too. We’re lucky that she was so very herself up until the end, up until she wasn’t here at all. We’re lucky that her slow decline didn’t frog-boil us into keeping her around in misery. This gentle, loving cat deserved a gentle, loving end.

Idi at the hospital for the last time


Explaining explaining in Rails

2021-08-16 00:00:00 +0000

What is EXPLAIN?

SQL variants like MySQL include ways to inspect how a particular query would be executed, including what indices will be used. This can give you an idea of how the query can be expected to perform.

For instance, if there’s more than one index on a table that the query could make use of, it can be handy to know which one it actually will make use of, for the particular database instance. That’s not something that’s always easy to reason out abstractly, and what route the database picks can be dependent on the scale/shape of the data actually present.

The actual database query would go something like this:

EXPLAIN ANALYZE SELECT *** FROM *** ...;

But in the context of a Rails application, you may want to get this output from the Rails console, or add a statement somewhere in your application code that runs the query and writes the result to a log file.

I recently learned about this while troubleshooting a long-running query, where the tables involved in the query were temporary and not available after the fact, and the query itself was dynamically constructed in application code.

There are a couple ways to perform an EXPLAIN query, depending what you’re starting with…

Adding to a scope/relation

If you’re chaining together a scope or relation, something like Person.where(first_name: 'Nick'), then you can tack .explain on the end of the method chain, to return the explain output.

Bespoke SQL

Let’s say your code has constructed a SQL query directly. Maybe you have the query (as a SQL-encoded string) in a variable called sql.

In a model context, where self.class.connection is the database connection, you might run the actual query using self.class.connection.execute(sql). There are other methods that might be more convenient depending what you expect to get back from your query.

In order to get the EXPLAIN output, you do need to consult the database itself, and the syntax could be self.class.connection.explain(sql).

Hope this helps!


Querying tips: Comps

2021-01-11 00:00:00 +0000

Starting in January 2020, I queried a novel for the first time. Working through the list of agents I identified took about a year overall, though there was a chunk of time in April-July when I put the process on hold. I was starting to get editorial feedback, and wanted to put the novel through another draft before sending out more queries.

I gave it a fair shake, but now that I’ve reached the end of the querying process for that novel, I’m ready to trunk it for now and move on. I still think that novel has potential, and I have some ideas for how to improve upon the current nth draft, but I’m reluctant to sink time into another revision of it right now, when I could spend that time on something that hasn’t gone through that cycle already.

I’ve kept pretty mum throughout the process, on purpose. I didn’t want to reveal that agents I had queries out to were further down my list than others, not that that means anything. Nor did I want to reveal that other agents had already looked at the novel and passed on it, not that that means anything either.

Now I’m at a good point to reflect on what I learned along the way. Take this all with plenty of salt. I’m not an authority! This is just about my experience with the process.

In the first of these posts, I’ll be talking about comps. Comps, or comparable titles, are other books (or shows, movies, etc.) that you name-drop to help form an impression of your book. Some agents may ask for comps directly. It’s a common field in QueryManager. But pretty much any query you send out can include comps in the body of the query letter if you choose to, and it’s typically recommended to include them if you can.

The Comp Don’ts

Unfortunately, there are lots of ways to pick the wrong comp, or to misuse a comp.

Don’t aim too high

If you compare your book to a very successful touchstone of your genre, you’re probably saying one (or more) of these things:

  • You haven’t actually read much of your genre.
  • You may think very highly of yourself.
  • Your work may be cliche, taking inspiration from a well that many others have already drawn from.

If Harry Potter is the clear reference point, then so be it. No point in obscuring that, if the first time anyone reads the manuscript they’re going to spot your primary inspiration. In that case, make sure you also make it clear what new element you bring to it. Harry Potter, but in Antarctica.

Don’t aim too low

If you compare your book to a more obscure title, you risk giving one of these impressions:

  • The comp might not mean anything to the agent. (Whether they take the time to check it out probably depends on the agent, and how their day is going.)
  • If it’s a book that didn’t perform well, that could tell the agent that selling something similar is going to be an uphill battle.

Don’t go too old

If you’re citing a classic, you run into the pitfalls of citing a bestseller. You may think highly of yourself. You may not be reading enough of the genre you’re writing. You may be in dialogue with a work that there has already been a lot of dialogue with. It may be a style that got saturated. The readership may have moved on already.

Citing something older and less famous risks some of those perceptions as well. It also means that if a book didn’t do well, and isn’t still selling today, there’s a longer track record by which to judge it.

Although if your book taps into nostalgia for a particular period of literature, or if there’s specific source material you’re updating or subverting, it could well be the exception.

Don’t go too far afield

If you cite a comp that’s too different from your book, someone who reads your manuscript expecting one thing could be disappointed to find another. They could feel duped.

However, if you’re doing a genre mashup, you may want to do an X-meets-Y comp, as a way to specify which strains of each genre you’re mostly pulling from.

Don’t repeat yourself

If your book is about werewolves, you could comp another book about werewolves. But then including more comps about werewolves might just seem redundant and unhelpful. We get it. It’s a werewolf book, just like these hundred others. What else went into it?

The Do’s

I still struggle with identifying comps. With so many pitfalls to it, it would certainly be nice if there were just one methodical set of instructions to follow, but it’s a subjective thing. It depends on what your story is about, and how you could convey that to someone else’s mind. But here are some possible starting points.

Read

This is kind of the default way to get comps. If you like writing, hopefully you’re already into reading, right?

That said, it could be arduous to keep a pulse on books that seem similar to yours. If they’re recent titles, there’s no telling which ones are going to be well-received or not. Plus you likely also want to read things outside the particular sub-genre you’ve been writing in.

I don’t think “this could be a comp” would be enough to justify reading something front to back. If you hate it, then the person who’s going to love what you’ve written is liable to hate it too. (Or not! Who knows.)

Ask your readers

Writing isn’t a solitary pursuit. There’s always someone else’s eyes involved. Whoever reads your work, ask them, if you get the chance, what they would compare it to. Be ready for them to name things you might not actually like.

Get a second opinion about what genre (or genres) your story belongs in. You might be too close to get an accurate view of it. You worked so hard on that romantic subplot. That makes it a romance, right? Maybe you’ll gain a new understanding of what genre you should be listing in your query. Or maybe there’s something to fix in the manuscript, if it didn’t land in the genre you were aiming for.

Follow the tags

Use Goodreads, Amazon, or possibly your local library system, to find books that share characteristics with yours. This can also be a way to find authors, agents, publishers, etc. who are into what you’re into.

Keep track of your inspiration

Maybe you write because you read something amazing, and you want more of it in the world. Maybe there was a book that you read that didn’t go the way you expected, and you write to explore the possibilities that another author didn’t. Your influences could end up unrecognizable by the time you query. They could end up irrelevant (due to age or popularity). But it could be somewhere to start.

Test different combinations

Enter pitch contents like DarkPit, SFFPit, PitMad, DVPit (if that applies to you), etc. Try out a number of different pitches throughout the event, including different combinations of comp titles. See what people respond to.

Tailor your comps to the submission

If an agent has mentioned a particular book (favorably), then you know that’s a comp title that they’ll recognize, and that it’s something that matches their taste. That’s no guarantee of course. If you cite someone’s favorite novel as a comp, they’re going to have high expectations. But it does give you some common ground to build on.

Good luck!

I hope my thought process helps you with yours. Above all, my guiding principles throughout the query process are:

  • This is a match-making process for business relationships.
  • Agents are human beings.
  • You’re a human being too.
  • Agents are professionals.
  • You’re aiming to be a professional too.