https://github.com/mtolly/jammittools/commit/3c31b7ac5d1dca9adc52ffea82dbdceaa79b2b81 tried to use the WAVE library on Hackage instead of SoX, but it uses a huge amount of memory (I saw 1 GB), even though the library docs say it does lazy IO. I might write a replacement that uses explicit IO instead. For our purposes it does not need to support seeking; just one-way start-to-finish reading and writing. It does need to support asking for a varying number of samples at once because of the sample offset in Take the Time's drums.
While I'm at it I might also port the AIFC reader from C to Haskell (thus removing the recent CPP hackery on Windows). This would allow going straight from multiple input AIFCs to the output backing WAV without the intermediate WAVs.
https://github.com/mtolly/jammittools/commit/3c31b7ac5d1dca9adc52ffea82dbdceaa79b2b81 tried to use the WAVE library on Hackage instead of SoX, but it uses a huge amount of memory (I saw 1 GB), even though the library docs say it does lazy IO. I might write a replacement that uses explicit IO instead. For our purposes it does not need to support seeking; just one-way start-to-finish reading and writing. It does need to support asking for a varying number of samples at once because of the sample offset in Take the Time's drums.
While I'm at it I might also port the AIFC reader from C to Haskell (thus removing the recent CPP hackery on Windows). This would allow going straight from multiple input AIFCs to the output backing WAV without the intermediate WAVs.