title: How to stream live audio via microphone in Unity3D?
body: <p>Here's part of the main code so far (the networking was done separately):</p>
  <pre><code>void Update()
  {
      if (Network.connections.Length &gt; 0) 
      {
          audioFloat = new float[audioInfo.clip.samples * audioInfo.clip.channels];
          audioInfo.clip.GetData (audioFloat, 0);
          networkView.RPC(&quot;PlayMicrophone&quot;, RPCMode.Others, ToByteArray(audioFloat), audioInfo.clip.channels);
      }
  }
  
  [RPC]
  void PlayMicrophone(byte[] ba, int c)
  {
      float[] flar = ToFloatArray (ba);
      audio.clip = AudioClip.Create (&quot;test&quot;, flar.Length, c, 44100, true, false);
  
      audio.clip.SetData (flar, 0);
      audio.loop = true;
      while (!(Microphone.GetPosition(&quot;&quot;) &gt; 0)) {}
      audio.Play();
  }
  
  void OnConnectedToServer()
  {
      audioInfo.clip = Microphone.Start(null, true, 100, 44100);
  }
  
  // When you are the server and the client connected to 
  void OnPlayerConnected(NetworkPlayer player)
  {
      audioInfo.clip = Microphone.Start(null, true, 100, 44100);
  }
  
  public byte[] ToByteArray(float[] floatArray) {
      int len = floatArray.Length * 4;
      byte[] byteArray = new byte[len];
      int pos = 0;
      foreach (float f in floatArray) {
          byte[] data = System.BitConverter.GetBytes(f);
          System.Array.Copy(data, 0, byteArray, pos, 4);
          pos += 4;
      }
      return byteArray;
  }
  
  public float[] ToFloatArray(byte[] byteArray) {
      int len = byteArray.Length / 4;
      float[] floatArray = new float[len];
      for (int i = 0; i &lt; byteArray.Length; i+=4) {
          floatArray[i/4] = System.BitConverter.ToSingle(byteArray, i);
      }
      return floatArray;
  }
  </code></pre>
  <p>I know it probably won't playback perfect, but I was expecting to hear even the slightest sound even for a second but it never happened. The data appears to be sent over the RPCs fine but the audio will not play.</p>
  <p>In the <code>Update()</code> function it will continually call the RPC to start playing from the microphone. This happens after the connection has been made as either a client or a server.</p>
  <p>Since you can't send any arrays besides byte arrays, I get the audio data as a float array then convert to a byte array to be sent over to the other person connected. There are no errors when the code is ran but the sound still never plays.</p>
  <p>The idea is to have fully live streaming 2-way audio gathered from the respective player's microphone. I feel like even though the buffer is only for 100 seconds it should still play sound up to that point.</p>
  <p>I will probably end up using a circular buffer for that when the time comes. The sound hasn't played at all yet.</p>
  <p>I tried using examples from <a href="http://forum.unity3d.com/threads/microphone-network-test.123776/" rel="nofollow noreferrer">Here</a> and <a href="http://answers.unity3d.com/questions/655062/multiplayer-voice-chat.html?sort=oldest" rel="nofollow noreferrer">Here</a> and was still unable to produce results.</p>