# RESOLVED: Broken MidiMessages when reading a MIDI file on OSX

**URL:** <https://forum.juce.com/t/resolved-broken-midimessages-when-reading-a-midi-file-on-osx/11896>\
**Category:** MacOSX and iOS\
**Created:** [November 19, 2013, 10:53am UTC](https://forum.juce.com/t/resolved-broken-midimessages-when-reading-a-midi-file-on-osx/11896 "2013-11-19T10:53:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![General\_MIDI](https://avatars.discourse-cdn.com/v4/letter/g/e99b99/32.png) [@General\_MIDI](https://forum.juce.com/u/General_MIDI)\
**Post date:** [November 19, 2013, 10:53am UTC](https://forum.juce.com/t/resolved-broken-midimessages-when-reading-a-midi-file-on-osx/11896/1 "2013-11-19T10:53:03Z")

</div>

Hello JUCE community,

&nbsp;

I am very new to JUCE, so I it can be that the issue that I will report is already known and/or resolved.

But since I found nothing by searching in the net, I have no other option than asking :-)

I am planning to write a commercial&nbsp;plugin and I am currently evaluating frameworks. Since JUCE has a lot audio functionality, and is cross platform and has a affordable licensing model, I started the evaluation with JUCE.

First of all I found JUCE easy to understand and use. And it has a elegant object orientation inside.

To start somewhere I wanted to write a small vst plug-in that reads and plays a MIDI file.

I could get productive real fast and wrote the plugin in one day for windows. It works. All fine.

Next step was porting it to OSX. Here I had several problems compiling the code.

I could resolve them by following these instructions:

1. http://www.juce.com/forum/topic/aus-xcode

2. http://www.juce.com/forum/topic/au-under-xcode-44

Finally the VST plugin was there. I could plug it in. The GUI came up, but there was no MIDI playback.

Making some printouts I found that the MIDI information read from the file into the MidiMessageSequence results getting corrupted MIDI data.

This is what I get when I dump the MIDI event code. This does not look like valid MIDI at all.

Data: 255 3 13 66 76 49 48 48 45 49 57 56 46 77 73 68  
Data: 255 84 5 96 0 0 0 0  
Data: 255 81 3 9 189 89  
Data: 255 88 4 4 2 24 8  
Data: 12 160 95

Here is the portion of code where this happens:

&nbsp;

```
File file(m_midiFileName[m_currProgram]);
    if(!file.exists()) return;
    FileInputStream fiStream(file);
    MidiFile midiFile;
    if(!midiFile.readFrom(fiStream))
    {
        m_displayTextDiag = "Error: Nothing Loaded";
        return;     
    }
    
    if(midiFile.getNumTracks()==0) return;
    midiFile.convertTimestampTicksToSeconds ();
    MidiMessageSequence tempos;
    midiFile.findAllTempoEvents(tempos);

    m_bpmTmp = 120.0;
    if( tempos.getNumEvents()>0 )
    {
        m_bpmTmp = tempos.getEventPointer(0)->message.getTempoSecondsPerQuarterNote();
        m_bpmTmp = 1.0 / (m_bpmTmp /60.0); // assuming 4/4 measure
    }
    if(m_bpmTmp < 20.0) m_bpmTmp = 120.0;

    MidiMessageSequence m_midiMessagesTmp(*midiFile.getTrack(0));
    m_midiMessagesTmp.sort();
    m_changeMIDIMessages = true;
    
    for(int currMessageIndex = 0; currMessageIndex < m_midiMessagesTmp.getNumEvents(); ++currMessageIndex)
    {
        MidiMessage msgMIDI = m_midiMessagesTmp.getEventPointer(currMessageIndex)->message;
           
        const unsigned char * data = msgMIDI.getRawData();
        int size = msgMIDI.getRawDataSize();
        String temp = "Data: ";
        for(int j=0; j< size; j++)
        {
            temp = temp + String(*data) + String(" ");
            data++;
        }
        m_displayTextDiag = m_displayTextDiag << temp << "\n";
      
    }
```

&nbsp;  
This works perfectly on windows. I do not know why it does not work in OSX. Did I forget something or did something wrong? Did I found a bug in JUCE? Or is it related to the commenting out of the

AUBase.h line 698:  
// virtual OSStatus MIDIEvent( UInt32 inStatus,  
// UInt32 inData1,  
// UInt32 inData2,  
// UInt32 inOffsetSampleFrame) { return kAudio\_UnimplementedError; }

&nbsp;

by appliying http://www.juce.com/forum/topic/au-under-xcode-44&nbsp; ?

&nbsp;

And of course much more important right now: What can I do to get it running in OSX?

I am lost a little bit in here. Next thing would be to debug into the library code or write own midi file handling. But this I would like to avoid if possible.

Any directions for me?

thank you in advance

&nbsp;

BTW:&nbsp; I am using XCode 4.6.2 and Mountain Lion

---

<div class="post-metadata">

**Author:** ![General\_MIDI](https://avatars.discourse-cdn.com/v4/letter/g/e99b99/32.png) [@General\_MIDI](https://forum.juce.com/u/General_MIDI)\
**Post date:** [November 20, 2013, 12:43pm UTC](https://forum.juce.com/t/resolved-broken-midimessages-when-reading-a-midi-file-on-osx/11896/2 "2013-11-20T12:43:08Z")

</div>

It seems it was a linker error. Now it seems to work :-)
