# AudioFormatWriter -\>write or -\>writeFromAudioSampleBuffer

**URL:** <https://forum.juce.com/t/audioformatwriter-write-or-writefromaudiosamplebuffer/32217>\
**Category:** General JUCE discussion\
**Created:** [March 11, 2019, 6:57pm UTC](https://forum.juce.com/t/audioformatwriter-write-or-writefromaudiosamplebuffer/32217 "2019-03-11T18:57:58Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gcass002](https://avatars.discourse-cdn.com/v4/letter/g/779978/32.png) [@gcass002](https://forum.juce.com/u/gcass002)\
**Post date:** [March 11, 2019, 6:57pm UTC](https://forum.juce.com/t/audioformatwriter-write-or-writefromaudiosamplebuffer/32217/1 "2019-03-11T18:57:58Z")

</div>

Hi, I taking inspiration from the JUCE recording tutorial I wrote this function for my class

> void AudioRecorder::Record(const AudioSourceChannelInfo& bufferToFill, const File& file)  
> {  
> auto fileStream = std::unique\_ptr (file.createOutputStream());  
> WavAudioFormat wavFormat;  
> auto writer = wavFormat.createWriterFor (fileStream.get(), sampleRate, 1, 16, {}, 0);
> 
> ```
> const auto numSamples = bufferToFill.buffer->getNumSamples();
> 
> AudioBuffer<float> toRecord;
> 
> toRecord.copyFrom(0, 0, *bufferToFill.buffer, 0, 0, numSamples);
> 
> if (writer)
> {
> writer->writeFromAudioSampleBuffer(toRecord, bufferToFill.startSample, bufferToFill.numSamples);
> }
> 
> ```
> 
> }

However in the JUCE Demo it uses AudioFormatWriter::ThreadedWriter\* in order to keep it Thread’Safe

My Question :

Is there a way to use “-\>writeFromAudioSampleBuffer” on a “AudioFormatWriter::ThreadedWriter\*” (threadSafe pointer as the DEMOs show ), or

Is there a way to convert a buffer into InputChannelData so i can use activeWriter.load()-\>write (inputChannelData, numSamples); ?
