Bryce.
Caprice32 has a nice tape.c implementation, in fact blocks are just read bit by bit (byte is shifted), at a certain speed. Perhaps starting with a fix CDT small file, reading blocks in loop, cool could be a nice approach around that.
Some has tryed reading sound directly (on emulator), switching to '1' when level (from 0.0 to 1.0) does pass over 0.5+0.1 and to '0' when level does pass below 0.5-0.1, that's the way @ralferoo uses, but @ralferoo seems also interested around CDT. ZX-Uno 464 is also using an audio jack input.
amstrad_190518_r005.8.16.8 does now read CDT. I've seen that sorgelig implements also the CDT with "Breaking Baud" demo running completely.
===== DSK: TODO : snapshoot purpose =====