- Home /
Recorded Audio empty when used in app
Hi folks,
I have sort of a very specific question, yet i am still sort of new to Unity. I want to record an audio in an AR-Game- which works, thanks to darktables work. I also found a way to trim it and attach it to a new instantiated Game Object- yet, when I want to listen to the audio through instantiate Game Object tree1, it is empty- even though the file has sound and I can also listen to it before. I'd very much appreciate any help :)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class AudioRecording : MonoBehaviour
{
public AudioClip recording;
//Keep this one as a global variable (outside the functions) too and use GetComponent during start to save resources
AudioSource audioSource;
private float startRecordingTime;
public AudioClip recordingNew;
int recnr = 0;
public GameObject tree1;
//Get the audiosource here to save resources
private void Start()
{
audioSource = GetComponentInParent<AudioSource>();
}
public void StopRecording()
{
//End the recording when the mouse comes back up, then play it
Microphone.End("");
//Trim the audioclip by the length of the recording
recordingNew = AudioClip.Create(recording.name, (int)((Time.time - startRecordingTime) * recording.frequency), recording.channels, recording.frequency, false);
float[] data = new float[(int)((Time.time - startRecordingTime) * recording.frequency)];
recording.GetData(data, 0);
recordingNew.SetData(data, 0);
this.recording = recordingNew;
//Play recording
audioSource.clip = recording;
audioSource.Play();
}
public void StartRecording()
{
//Get the max frequency of a microphone, if it's less than 44100 record at the max frequency, else record at 44100
int minFreq;
int maxFreq;
int freq = 44100;
Microphone.GetDeviceCaps("", out minFreq, out maxFreq);
if (maxFreq < 44100)
freq = maxFreq;
//Start the recording, the length of 300 gives it a cap of 5 minutes
recording = Microphone.Start("", true, 300, 44100);
startRecordingTime = Time.time;
}
public void SaveRecording()
{
SavWav.Save("myfile"+ recnr , recordingNew);
GameObject tree;
tree = Instantiate(tree1, new Vector3(0, 0, 0), Quaternion.identity);
tree.GetComponent<AudioSource>().clip = recordingNew;
recnr++; }
}
Comment
Your answer
Follow this Question
Related Questions
Record and play audio-edits in-game 1 Answer
How to edit audioclip? 1 Answer
Microphone capture different channels 0 Answers
Is there a way to create a random Audiosource loop? 2 Answers
Sound creation using WAV. files 1 Answer