# Pcmreadcallback is called only once

**URL:** https://qa.fmod.com/t/pcmreadcallback-is-called-only-once/16004
**Category:** FMOD Engine
**Tags:** csharp
**Created:** [July 24, 2020, 6:41am UTC](https://qa.fmod.com/t/pcmreadcallback-is-called-only-once/16004 "2020-07-24T06:41:25Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![LoVic](https://avatars.discourse-cdn.com/v4/letter/l/77aa72/32.png) [@LoVic](https://qa.fmod.com/u/LoVic)
#### Post date: [July 24, 2020, 6:41am UTC](https://qa.fmod.com/t/pcmreadcallback-is-called-only-once/16004/1 "2020-07-24T06:41:25Z")

</div>

Hello  
Why is Pcmreadcallback called only once, after calling FMODsystem.createSound, and not for every data from the microphone?

```
FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();            
            exinfo.cbsize = Marshal.SizeOf(exinfo);
            exinfo.numchannels = 2; // nativeChannels;
            exinfo.format = FMOD.SOUND_FORMAT.PCM16;
            exinfo.defaultfrequency = 44100; // nativeRate;
            exinfo.pcmreadcallback += Pcmreadcallback;
            exinfo.length = (uint)(exinfo.defaultfrequency * sizeof(short) * exinfo.numchannels);

            byte[] data = null;
            res = FMODsystem.createSound(data, FMOD.MODE.LOOP_NORMAL | FMOD.MODE.OPENUSER,
                ref exinfo, out sound);
            if (res != RESULT.OK) return false;

            FMODsystem.update();

            res = FMODsystem.recordStart(id, sound, true);
            if (res != RESULT.OK) return false;

            res = FMODsystem.playSound(sound, null, false, out channel);
```

---

<div class="post-metadata">

### Author: ![mathew](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/mathew/32/431_2.png) [@mathew](https://qa.fmod.com/u/mathew)
#### Post date: [July 27, 2020, 11:45pm UTC](https://qa.fmod.com/t/pcmreadcallback-is-called-only-once/16004/2 "2020-07-27T23:45:35Z")

</div>

System::createSound will request everything in one big chunk, the size of CREATESOUNDEXINFO::length. If you want continual reading, use System::createStream instead.
