I would recommend to use the DiskRecorder Prototype to write data.
In Kyma you can only write to files via Smalltalk under speical circumstances, for example when you write a special state in a Tool for it.
Used in a normal sound smalltalk is always evalutated before the sound is started. What you could do is generate your data upfront with a Smalltalk script and "record" the data to a Diskwriter. If you just want to generate some values in Smalltalk you could try to write a smalltalk script  or code snippet which you "evualuate" with the Command+Y key combo.
Here is an acient script from the old forum which should do "offline comvolution" maybe this is helpfull for you to figure out how to write to a  samplesFiles.
I hope that helps a bit.
best
Chris
 
---
| impulseFile sf impulseResponse impulseLength sourceFile sampleCount inBuffer destFile outBuffer |
"Ask for the impulse response file and read the samples into RAM. The samples file must be mono."
impulseFile :=
    HostDriverInterface
        getFileWithPrompt: 'Select the impulse response file:'
        fileTypes: (Array with: HostDriverInterface sampleFileType)
        ifCancel: [^ self].
sf := SamplesFile for: impulseFile ifAbsent: [^ self].
impulseLength := sf sampleFrames.
impulseResponse := sf getSamplesFromMonoWavetableFileStartingAt: 0 length: impulseLength.
"Ask for the file to be convolved."
sourceFile :=
    HostDriverInterface
        getFileWithPrompt: 'Select the source file:'
        fileTypes: (Array with: HostDriverInterface sampleFileType)
        ifCancel: [^ self].
sf := SamplesFile for: sourceFile ifAbsent: [^ self].
sampleCount := sf sampleFrames.
inBuffer := sf readBuffer.
"Ask for the name of the output file."
destFile :=
    HostDriverInterface
        putFileWithPrompt: 'Select the source file:'
        initially: sf filename
        fileTypes: (Array with: HostDriverInterface sampleFileType)
        ifCancel: [^ self].
sf := sf copyForFilename: destFile asFilename.
sf writeHeader.
outBuffer := sf writeBuffer.
"Now, convolve. (This processes left channel only.)"
self dialogClass displayStringWithThermometer: 'Now computing convolution...' while: [
    | pastInputSamples samplePair progressScale sampleScale |
    pastInputSamples := Array new: impulseLength withAll: 0.
    samplePair := Array new: 2.
    progressScale := 1.0 / sampleCount.
    sampleScale := (impulseResponse inject: 0 into: [ :sum :x | sum + x abs]) inverse.
    1 to: sampleCount do: [ :x | | sum |
        (x bitAnd: 16rFF) = 0 ifTrue: [self dialogClass thermometerSignal raiseRequestWith: x * progressScale].
        pastInputSamples replaceFrom: 2 to: impulseLength with: pastInputSamples startingAt: 1.
        inBuffer nextSampleInto: samplePair.
        pastInputSamples at: 1 put: (samplePair at: 1).
        sum := 0.
        1 to: impulseLength do: [ :i | sum := (impulseResponse at: i) * (pastInputSamples at: i) + sum].
        sum := sum * sampleScale.
        outBuffer writeLeftSample: sum rightSample: sum]].
"Close the files, we are done."
inBuffer close.
outBuffer close.