1

So, I downloaded the unity project from unity answers. here is the link:

UnitySynth link to download page in unity answers

I have finished my prototype, but I'm getting errors when I tried to load a custom midi I downloaded from the web.

I got these error codes:

Error Loading Midi:
Midi Failed to Load!
UnityEngine.Debug:Log(Object)
CSharpSynth.Sequencer.MidiSequencer:LoadMidi(String, Boolean) (at Assets/Plugins/CSharpSynth/Sequencer/MidiSequencer.cs:153)
UnitySynthTest:Awake() (at Assets/Scripts/UnitySynthTest.cs:42)

NullReferenceException: Object reference not set to an instance of an object
CSharpSynth.Sequencer.MidiSequencer.Play () (at Assets/Plugins/CSharpSynth/Sequencer/MidiSequencer.cs:167)
UnitySynthTest.OnGUI () (at Assets/Scripts/UnitySynthTest.cs:161)

I would love to know an easy way to convert midis to mid.txt as the examples used in the demo.

EDIT:

The first error code, the one about not loading midi, comes from here:

public bool LoadMidi(string file, bool UnloadUnusedInstruments)
{
    if (playing == true)
        return false;
    MidiFile mf = null;
    try
    {
        mf = new MidiFile(file);
    }
    catch (Exception ex)
    {
        //UnitySynth

//THIS IS THE ERROR LINE **************************
            Debug.Log("Error Loading Midi:\n" + ex.Message);

return false;
    }
    return LoadMidi(mf, UnloadUnusedInstruments);
}

The second one, the one about null reference exception comes from:

    public void Play()
    {
        if (playing == true)
            return;
        //Clear the current programs for the channels.
        Array.Clear(currentPrograms, 0, currentPrograms.Length);
        //Clear vol, pan, and tune
        ResetControllers();
        //set bpm

// THIS IS THE ERROR LINE *****************************
     _MidiFile.BeatsPerMinute = 120;


        //Let the synth know that the sequencer is ready.
        eventIndex = 0;
        playing = true;
    }
Cristian Ceron
  • 695
  • 1
  • 8
  • 12
  • Read this first: http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it – DeshDeep Singh Jul 24 '15 at 04:39
  • Thanks, but I know what is a null exception, my point is that the code works fine with the demo mid.txt files, but I encounter this problem when importing random midis from the web. – Cristian Ceron Jul 24 '15 at 06:48
  • 1
    Please show us the relevant code. We're unlikely to download a random package from the web and install it. Nor is your question of lasting value if the link in question ever dies. (And Unity has quite a reputation for killing off sites/links/paths) – Bart Jul 24 '15 at 09:14

1 Answers1

0

I solved my own question by removing the try and catch elements in the code, like this:

   public bool LoadMidi(string file, bool UnloadUnusedInstruments)
{
    MidiFile mf = File.Open(file, FileMode.Open);
return LoadMidi(mf, UnloadUnusedInstruments);
}

I dunno what happens here and if I should do that, but now even non .mid.txt files can be reproduced without problems.

Cristian Ceron
  • 695
  • 1
  • 8
  • 12