In response to a request, here is a brief outline of how to build a whistle that can be heard by more than just the local dogs. This whistle is fitted to my Mamod engine. It takes its steam through a pipe soldered into the mouth of the Mamod whistle, so it works off the Mamod whistle valve.
The body of the whistle is made from brass tube, approximately 15mm diameter. This is cut to length. The mouth is cut close to one end. Mine is 10mm x 7mm. The tube is flattened above and below the mouth so that the mouth is actually straight. The top edge of the mouth is filed to give a sharp edge.
A piece of brass is cut to fit inside the tube leaving a 1mm gap across the full width of the bottom of the mouth. This is soldered in place. The top end cap is made from a piece of brass and soldered in place. The whistle should now work if held up to the mouth and blown. Mine worked first time so I didn't make any adjustments. If it doesn't work, try bending the top and/or bottom of the mouth to alter the airflow a bit. Remember that steam pressure will be a lot higher than you can blow!
The bottom cap was then soldered on and a hole drilled in the back of the whistle for the steam pipe. My whistle was mounted with the mouth downwards so that condensate would drip out onto the track.
Mamod, showing the whistle (in need of polishing) under the side
tank. The feed pipe from the original whistle can be seen curving
down in front of the cab. The whistle is held in place by the feed
pipe and a bracket to the front of the locomotive.