We propose two different setups to generate single photons on demand using an atom in front of a mirror, along with either a beam-splitter or a tunable coupling. We show that photon generation efficiency ~ 99% is straightforward to achieve. The proposed schemes are simple and easily tunable in frequency. The operation is relatively insensitive to dephasing and can be easily extended to generate correlated pairs of photons. They can also in principle be used to generate any photonic qubit in arbitrary wave-packets, making them very attractive for quantum communication applications.