Help making my knock sensor more accurate?

I'm working on a game that's basically a knock sensor. I have a sensor inside a hard plastic bottle, and I need to detect when that bottle is struck hard with a metal rod. And it shouldn't be triggered when adjacent bottles are struck.

Currently I'm doing that by placing one of these inside each bottle:

That has 3 different types of outputs, but I'm currently using the "audio" output, wired straight to one of the Arduino's analog inputs.

It often works very well, but sometimes the knock is completely ignored, and sometimes very soft knocks, or knocks nearby, are registered. I can't figure out the pattern, but its not very reliable.

Can anyone think of anything to make this more reliable? A resistor between the analog and + maybe?

Or maybe another way to approach this entirely?

Thanks for any help.

I'm currently using the "audio" output,

Looking at the schematic I would try the gate output. The problem with using the audio output is that the knock spike is faster than you can sample the input so you are likely to be missing some of the signals. Using the envelope output smooths this and it is fed into a trigger to give the gate output, so that is going to be more consistent.

You could replace R17 with a pot and have adjustable gain for fine tuning.

Thanks, great idea.

You could replace R17 with a pot and have adjustable gain for fine tuning.

Fantastic idea.

I also picked up a Piezo, which I'll be testing later tonight. Any thoughts on that method?

That is not going to be as sensitive.