(deleted)
would this menu reside in the Loop() section of the sketch?
If it were not called from the loop then it could never be executed. The loop is your main program, functions are called from this, functions are much the same as subroutines.
All "menu" tutorials all appear to have thier own loops?
No idea what that means. All code is called from either setup () once only or loop repetitively.
Try doing some tutorials and understanding of what you are doing. Make changes to the examples. Predict what those changes will do, then see if you are right. You won't be at first but as you learn you get better at the prediction.
If I understand your question, a menu would be a set of choices on an LCD display, and you would like to choose among them using some input device. This will slow you down, but you can minimize the effects if you decide that whenever you activate the menu the sounds stops, restarting only when you close the menu. So, normally, each loop() will just check that you are not in menu mode and call the sound function. You'll also need to check for a button press in order to activate menu mode. The impact on performance should be minimal.
// this is just pseudocode
void loop()
{
if (menu_button_pressed)
{
// set menu mode to true unless already in menu mode
}
if (menu_mode)
{
// call a function to manage the inputs and outputs when the menu is open,
// and save the parameters;
// when finished, the function will reset menu mode to false
}
else
{
// call the normal function to output sounds
}
}
Take a look at my phi panel if you want an elegant solution that won't make you spend a huge amount of time up front.
You can debounce without delay. Just test if enough time has elapsed each time you detect a state change on the switch. As for doing it all at once, try:
(deleted)