ofxMidi problem

Hi,

I’m trying to combine an app that uses ofxMidi and data from an arduino serial port - ofSerial.

I have an error message even if using a simple ofxMidiOut myMidiOut; declaration in the header.

However, the ofxMidi example works fine on its own.

is this to do with MIDI being serial data?

I saw this thread:
http://forum.openframeworks.cc/t/ofserial-and-midi-macosx/112/1

Thanks
Andrew

________
here’s what the debugger says…

Building target “serialExample” of project “serialExample” with configuration “Release” — (1 error)
cd /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2
/usr/bin/g+±4.0 -o /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/bin//serialExample.app/Contents/MacOS/serialExample -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/bin -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/freeimage/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/FreeImage/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/GLee/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/rtAudio/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/fmodex/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/freetype/lib/osx -L/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/FreeImage/lib/osx -F/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/bin -F/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/glut/lib/osx -filelist /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/serialExample.LinkFileList /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/libs/openFrameworksCompiled/lib/osx/openFrameworks.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/GLee/lib/osx/GLee.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/rtAudio/lib/osx/rtAudio.a -framework AGL -framework ApplicationServices -framework AudioToolbox -framework Carbon -framework CoreAudio -framework CoreFoundation -framework CoreServices -framework OpenGL -framework QuickTime -framework AppKit -framework Cocoa -framework IOKit -framework GLUT /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx/CppUnit.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx/PocoFoundation.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx/PocoNet.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx/PocoUtil.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/poco/lib/osx/PocoXML.a /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/freetype/lib/osx/freetype.a -lfmodex /Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/…/…/…/libs/FreeImage/lib/osx/freeimage.a -arch i386 -Wl,-Y,1455 -mmacosx-version-min=10.4 -Wl,-dead_strip -isysroot /Developer/SDKs/MacOSX10.4u.sdk
/usr/bin/ld: Undefined symbols:
_MIDIClientCreate
_MIDIClientDispose
_MIDIDeviceGetNumberOfEntities
_MIDIEndpointDispose
_MIDIEndpointGetEntity
_MIDIEntityGetDevice
_MIDIGetDestination
_MIDIGetNumberOfDestinations
_MIDIObjectFindByUniqueID
_MIDIObjectGetDataProperty
_MIDIObjectGetStringProperty
_MIDIOutputPortCreate
_MIDIPortDispose
_MIDISourceCreate
_kMIDIPropertyConnectionUniqueID
_kMIDIPropertyName
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIClientCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIClientDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIDestinationCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIDeviceGetNumberOfEntities
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEndpointDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEndpointGetEntity
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEntityGetDevice
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetDestination
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetNumberOfDestinations
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetNumberOfSources
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetSource
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIInputPortCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectFindByUniqueID
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectGetDataProperty
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectGetStringProperty
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIOutputPortCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPacketListAdd
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPacketListInit
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPortConnectSource
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPortDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIReceived
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDISend
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDISourceCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _kMIDIPropertyConnectionUniqueID
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _kMIDIPropertyName
collect2: ld returned 1 exit status
/usr/bin/ld: Undefined symbols:
_MIDIClientCreate
_MIDIClientDispose
_MIDIDeviceGetNumberOfEntities
_MIDIEndpointDispose
_MIDIEndpointGetEntity
_MIDIEntityGetDevice
_MIDIGetDestination
_MIDIGetNumberOfDestinations
_MIDIObjectFindByUniqueID
_MIDIObjectGetDataProperty
_MIDIObjectGetStringProperty
_MIDIOutputPortCreate
_MIDIPortDispose
_MIDISourceCreate
_kMIDIPropertyConnectionUniqueID
_kMIDIPropertyName
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIClientCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIClientDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIDestinationCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIDeviceGetNumberOfEntities
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEndpointDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEndpointGetEntity
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIEntityGetDevice
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetDestination
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetNumberOfDestinations
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetNumberOfSources
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIGetSource
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIInputPortCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectFindByUniqueID
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectGetDataProperty
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIObjectGetStringProperty
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIOutputPortCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPacketListAdd
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPacketListInit
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPortConnectSource
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIPortDispose
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDIReceived
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDISend
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _MIDISourceCreate
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _kMIDIPropertyConnectionUniqueID
/Users/andrewrobertson/Work/of_preRelease_v0061_osx_FAT/apps/my_openFrameworks/seaboardVisual2/build/serialExample.build/Release/serialExample.build/Objects-normal/i386/RtMidi.o reference to undefined _kMIDIPropertyName
collect2: ld returned 1 exit status
Build failed (1 error)

I have tried including Midi in another simple audioOutputExample and get the same error, so could this be something I’m doing wrong with setting up the ofxMidi library?

you need to include the CoreMidi framework in your project for ofxMidi to link without problem. Right click on the frameworks folder and select add framework, then select CoreMidi.

i’m not on osx right now so the names of the folders/menus can be a little different

Thanks!! That works great

I’m looking to also send a pitch bend message with midiout. Is that possible with ofxMidi?

To follow up here.

This code should extend ofxMidiOut to send pitch bend messages (you also declare the function in the header file). It uses a similar method to those for note on off and control change

void ofxMidiOut::sendPitchBend(int channel, int value){
//value is 14bite resolution, coarse and fine
//neutral (no pitch bend relative to concert pitch) is a value of 8192
//value is 128 x 128 hence we calculate the two bytes to send with the following code

char byte1, byte2;
byte2 = value%128;
byte2 = (value - byte2)/128;
message.clear();
message.push_back( MIDI_PITCH_BEND+(channel-1) );
message.push_back( byte1 );
message.push_back( byte2 );
sendMessage();
}