(about the potential of hacking extra audio outputs without extra hardware...)
Looping over the BUFSIZE will not schedule the pwm duty cycle changes on corresponding sample-interval timing.
In Axoloti firmware, there is no code that is scheduled synchronously with the audio sample clock, only at 16-sample buffers, and it is the responsibility of the DMA engine and I2S (SAI) peripheral to transmit the audio data to the audio converter, synchronously to the sample clock.
In order to make PWM duty cycle changes synchronously to the audio sample clock, one approach is to enable an interrupt (an EXTI interrupt on PE4 or PI11 should work as interrupt source).
In the interrupt service routine, read the next sample value from a (double) buffer and set the pwm duty cycle. This requires firmware hacking! An object could then write audio data in that double buffer.
A better (more acceptable) solution would be to set up a DMA stream to the timer, that avoids interrupts consuming precious time. But I'm afraid there is no suitable DMA channel left, or no suitable source to synchronize DMA.
Rather than using PWM out for lofi audio, I'd suggest to use the on-chip DACs. Same story,
gpio/out/analog only schedules at k-rate, looping it does not make it schedule at audio-rate. The bad solution: write the DAC register from within an audio-rate interrupt. The good solution: configure conversions to be triggered by the audio clock (refer to chapter "14.3.6 DAC trigger selection" in stmicro's RM0090 reference manual, and use DMA to copy data to the DAC. The only DMA streams that can be mapped to DAC1 and DAC2 are DMA1stream5 and DMA1stream6 (according to chapter "10.3.3 Channel selection" in RM0090), while those are already assigned to I2C on user-gpio pins. So since DMA is not available, need to use interrupts to copy data to the DAC's.
In summary, quite an effort and the result will still have significant side effects. And I fear the audio quality would still be disappointing.