Rectangles are what they are: rectangular. So a touch-event on your overlapping black button is also either within the hitRect of the left or right white button beneath it (assuming your white buttons don't overlap). This means that a click on a black button is always triggering the underlying white button's sound too (first or last, depending on which side of the middle-axis you hit the black button).
To avoid this, you need to check if a white button's touch-event is also within a black button's hitRect. And if it is, ignore the white button and only trigger the black button. So
if (hitRectWhite.contains((int)event.getX(), (int)event.getY()) && !hitRectBlack.contains((int)event.getX(), (int)event.getY()))
then trigger white and ignore black, otherwise ignore white and trigger black only. Play around with it, this is just an example. This means you will have to change your implementation so that you have the relevant hitRects of the overlapping white AND black buttons at the same time.
To differentiate between white and black you could use tags like this:
private enum ButtonColor {BLACK, WHITE}
img_c.setTag(ButtonColor.WHITE);
img_db.setTag(ButtonColor.BLACK);
img_d.setTag(ButtonColor.WHITE);
// and the check e.g. like this..
if (button.getTag() == ButtonColor.WHITE) {
...
}
Maybe you can also make use of methods like contains(), intersects() etc., but above solution should suffice.