This question was
closed Dec 20, 2015 at 10:21 PM by
KnightRiderGuy for the following reason:
The question is answered, right answer was accepted
What Am I doing Wrong Here
OK I have tried numerous ways to convert this blasted thing to use the new UI text what the heck am I missing here?
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
//[RequireComponent(typeof(AudioSource))]
//[RequireComponent(typeof(GUITexture))]
public class AudioWaveFormVisualizer : MonoBehaviour
{
public AudioSource MusicPlayer;
public int width = 500; // texture width
public int height = 100; // texture height
public Color backgroundColor = Color.black;
public Color waveformColor = Color.green;
public int size = 2048; // size of sound segment displayed in texture
private Color[] blank; // blank image array
public Texture2D Texture;
private float[] samples; // audio samples array
IEnumerator Start ()
{
// create the samples array
samples = new float[size];
// create the texture and assign to the guiTexture:
//texture = new Texture2D (width, height);
Texture = new Texture();
//GetComponent<GUITexture>().texture = texture;
Texture2D.texture = Texture;
// create a 'blank screen' image
blank = new Color[width * height];
for (int i = 0; i < blank.Length; i++) {
blank [i] = backgroundColor;
}
// refresh the display each 100mS
while (true) {
GetCurWave ();
yield return new WaitForSeconds (0.1f);
}
}
void GetCurWave ()
{
// clear the texture
Texture.SetPixels (blank, 0);
// get samples from channel 0 (left)
MusicPlayer.GetOutputData (samples, 0);
// draw the waveform
for (int i = 0; i < size; i++) {
Texture.SetPixel ((int)(width * i / size), (int)(height * (samples [i] + 1f) / 2f), waveformColor);
} // upload to the graphics card
Texture.Apply ();
}
}
Comment
Can you tell exactly what you need and what error do you get?
@beppim, Thanks I put it back to this because I was getting nowhere with it. Frustrating. But all I simply wanted to do was convert the crappy on GUI to use a UI image which is much easier to position onto a canvas.
This is the original untouched script not the one with the messing about I had done.
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
//[RequireComponent(typeof(AudioSource))]
[RequireComponent(typeof(GUITexture))]
public class AudioWaveFormVisualizer : $$anonymous$$onoBehaviour
{
public AudioSource $$anonymous$$usicPlayer;
public int width = 500; // texture width
public int height = 100; // texture height
public Color backgroundColor = Color.black;
public Color waveformColor = Color.green;
public int size = 2048; // size of sound segment displayed in texture
private Color[] blank; // blank image array
private Texture2D texture;
private float[] samples; // audio samples array
IEnumerator Start ()
{
// create the samples array
samples = new float[size];
// create the texture and assign to the guiTexture:
texture = new Texture2D (width, height);
GetComponent<GUITexture>().texture = texture;
// create a 'blank screen' image
blank = new Color[width * height];
for (int i = 0; i < blank.Length; i++) {
blank [i] = backgroundColor;
}
// refresh the display each 100mS
while (true) {
GetCurWave ();
yield return new WaitForSeconds (0.1f);
}
}
void GetCurWave ()
{
// clear the texture
texture.SetPixels (blank, 0);
// get samples from channel 0 (left)
$$anonymous$$usicPlayer.GetOutputData (samples, 0);
// draw the waveform
for (int i = 0; i < size; i++) {
texture.SetPixel ((int)(width * i / size), (int)(height * (samples [i] + 1f) / 2f), waveformColor);
} // upload to the graphics card
texture.Apply ();
}
}
Best Answer
Answer by KnightRiderGuy · Dec 20, 2015 at 10:13 PM
This solved the issue!
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class AudioWaveFormVisualizer : MonoBehaviour
{
public AudioSource MusicPlayer;
public int width = 305; // texture width
public int height = 234; // texture height
public Color backgroundColor = Color.black;
public Color waveformColor = Color.green;
public int size = 2048; // size of sound segment displayed in texture
private Color[] blank; // blank image array
private Texture2D rawimage;
public RawImage Texture2D;
private float[] samples; // audio samples array
IEnumerator Start ()
{
// create the samples array
samples = new float[size];
// create the texture and assign to the guiTexture:
rawimage = new Texture2D (width, height);
GetComponent<RawImage>().texture = rawimage;
// create a 'blank screen' image
blank = new Color[width * height];
for (int i = 0; i < blank.Length; i++) {
blank [i] = backgroundColor;
}
// refresh the display each 100mS
while (true) {
GetCurWave ();
yield return new WaitForSeconds (0.1f);
}
}
void GetCurWave ()
{
// clear the texture
rawimage.SetPixels (blank, 0);
// get samples from channel 0 (left)
MusicPlayer.GetOutputData (samples, 0);
// draw the waveform
for (int i = 0; i < size; i++) {
rawimage.SetPixel ((int)(width * i / size), (int)(height * (samples [i] + 1f) / 2f), waveformColor);
} // upload to the graphics card
rawimage.Apply ();
}
}