new implementation of song_reader to handle new data format