diff --git a/common/JackNetInterface.cpp b/common/JackNetInterface.cpp index cd2b7e3e..19fe53fe 100644 --- a/common/JackNetInterface.cpp +++ b/common/JackNetInterface.cpp @@ -64,7 +64,6 @@ namespace Jack JackNetInterface::JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) : fSocket ( socket ) { - jack_log("JackNetInterface ( session_params_t& params...)"); fParams = params; strcpy(fMulticastIP, multicast_ip); fTxBuffer = NULL; @@ -105,8 +104,6 @@ namespace Jack int JackNetInterface::SetNetBufferSize() { - jack_log ( "JackNetInterface::SetNetBufferSize" ); - float audio_size, midi_size; int bufsize; //audio @@ -116,7 +113,8 @@ namespace Jack fParams.fPeriodSize * sizeof(sample_t) / PACKET_AVAILABLE_SIZE); //bufsize = sync + audio + midi bufsize = MAX_LATENCY * (fParams.fMtu + ( int ) audio_size + ( int ) midi_size); - jack_info("SetNetBufferSize bufsize = %d", bufsize); + + jack_log("SetNetBufferSize bufsize = %d", bufsize); //tx buffer if ( fSocket.SetOption ( SOL_SOCKET, SO_SNDBUF, &bufsize, sizeof ( bufsize ) ) == SOCKET_ERROR ) @@ -167,9 +165,6 @@ namespace Jack //number of audio subcycles (packets) fNSubProcess = fParams.fPeriodSize / fParams.fFramesPerPacket; - //payload size - fPayloadSize = PACKET_AVAILABLE_SIZE; - //TX header init strcpy ( fTxHeader.fPacketType, "header" ); fTxHeader.fID = fParams.fID; @@ -195,8 +190,8 @@ namespace Jack assert ( fRxBuffer ); //net audio/midi buffers'addresses - fTxData = fTxBuffer + sizeof ( packet_header_t ); - fRxData = fRxBuffer + sizeof ( packet_header_t ); + fTxData = fTxBuffer + HEADER_SIZE; + fRxData = fRxBuffer + HEADER_SIZE; } // JackNetMasterInterface ************************************************************************************ @@ -308,10 +303,6 @@ namespace Jack assert ( fNetAudioCaptureBuffer ); assert ( fNetAudioPlaybackBuffer ); - - //audio netbuffer length - fAudioTxLen = HEADER_SIZE + fNetAudioCaptureBuffer->GetSize(); - fAudioRxLen = HEADER_SIZE + fNetAudioPlaybackBuffer->GetSize(); } void JackNetMasterInterface::Exit() @@ -344,7 +335,7 @@ namespace Jack if ((( rx_bytes = fSocket.Recv(fRxBuffer, size, flags)) == SOCKET_ERROR) && fRunning) { net_error_t error = fSocket.GetError(); - //no data isn't really a network error, so just return 0 avalaible read bytes + //no data isn't really a network error, so just return 0 available read bytes if (error == NET_NO_DATA) { return 0; } else if (error == NET_CONN_ERROR) { @@ -403,6 +394,7 @@ namespace Jack fTxHeader.fDataType = 's'; fTxHeader.fIsLastPckt = ( fParams.fSendMidiChannels == 0 && fParams.fSendAudioChannels == 0) ? 1 : 0; fTxHeader.fPacketSize = HEADER_SIZE; + memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); return Send(fTxHeader.fPacketSize, 0); } @@ -438,7 +430,7 @@ namespace Jack { fTxHeader.fSubCycle = subproc; fTxHeader.fIsLastPckt = (subproc == (fNSubProcess - 1)) ? 1 : 0; - fTxHeader.fPacketSize = fAudioTxLen; + fTxHeader.fPacketSize = HEADER_SIZE + fNetAudioPlaybackBuffer->GetSize(); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); fNetAudioCaptureBuffer->RenderFromJackPorts(subproc); if (Send(fTxHeader.fPacketSize, 0) == SOCKET_ERROR) @@ -514,11 +506,9 @@ namespace Jack int JackNetMasterInterface::DataRecv() { int rx_bytes = 0; - uint jumpcnt = 0; - uint recvd_midi_pckt = 0; - uint recvd_audio_pckt = 0; int last_cycle = 0; - + uint recvd_midi_pckt = 0; + packet_header_t* rx_head = reinterpret_cast ( fRxBuffer ); while ( !fRxHeader.fIsLastPckt ) @@ -526,15 +516,10 @@ namespace Jack //how much data is queued on the rx buffer ? rx_bytes = Recv(HEADER_SIZE, MSG_PEEK); + //error here, problem with recv, just skip the cycle (return -1) if ( rx_bytes == SOCKET_ERROR ) return rx_bytes; - //if no data - if ( ( rx_bytes == 0 ) && ( ++jumpcnt == fNSubProcess ) ) - { - jack_error ( "No data from %s...", fParams.fName ); - jumpcnt = 0; - } - //else if data is valid, + if ( rx_bytes && ( rx_head->fDataStream == 'r' ) && ( rx_head->fID == fParams.fID ) ) { //read data @@ -545,21 +530,20 @@ namespace Jack fRxHeader.fCycle = rx_head->fCycle; fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; fNetMidiPlaybackBuffer->RenderFromNetwork(rx_head->fSubCycle, rx_bytes - HEADER_SIZE); + // Last midi packet is received, so finish rendering... if ( ++recvd_midi_pckt == rx_head->fNMidiPckt ) fNetMidiPlaybackBuffer->RenderToJackPorts(); - jumpcnt = 0; break; case 'a': //audio rx_bytes = Recv ( rx_head->fPacketSize, 0 ); - if (recvd_audio_pckt++ != rx_head->fSubCycle) { - jack_error("Packet(s) missing from '%s'...", fParams.fSlaveNetName); + if (!IsNextPacket()) { + jack_error("Packet(s) missing from '%s'...", fParams.fMasterNetName); } fRxHeader.fCycle = rx_head->fCycle; fRxHeader.fSubCycle = rx_head->fSubCycle; fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; fNetAudioPlaybackBuffer->RenderToJackPorts ( rx_head->fCycle, rx_head->fSubCycle); - jumpcnt = 0; last_cycle = rx_head->fCycle; break; @@ -581,7 +565,7 @@ namespace Jack { //this method contains every step of sync packet informations coding //first of all, reset sync packet - memset ( fTxData, 0, fPayloadSize ); + memset ( fTxData, 0, PACKET_AVAILABLE_SIZE ); //then, first step : transport if (fParams.fTransportSync) { @@ -787,6 +771,8 @@ namespace Jack //midi net buffers fNetMidiCaptureBuffer = new NetMidiBuffer ( &fParams, fParams.fSendMidiChannels, fRxData ); fNetMidiPlaybackBuffer = new NetMidiBuffer ( &fParams, fParams.fReturnMidiChannels, fTxData ); + assert ( fNetMidiCaptureBuffer ); + assert ( fNetMidiPlaybackBuffer ); //audio net buffers fNetAudioCaptureBuffer = new NetSingleAudioBuffer ( &fParams, fParams.fSendAudioChannels, fRxData ); @@ -794,10 +780,9 @@ namespace Jack //fNetAudioCaptureBuffer = new NetBufferedAudioBuffer ( &fParams, fParams.fSendAudioChannels, fRxData ); //fNetAudioPlaybackBuffer = new NetBufferedAudioBuffer ( &fParams, fParams.fReturnAudioChannels, fTxData ); - - //audio netbuffer length - fAudioTxLen = HEADER_SIZE + fNetAudioPlaybackBuffer->GetSize(); - fAudioRxLen = HEADER_SIZE + fNetAudioCaptureBuffer->GetSize(); + + assert ( fNetAudioCaptureBuffer ); + assert ( fNetAudioPlaybackBuffer ); } int JackNetSlaveInterface::Recv ( size_t size, int flags ) @@ -866,20 +851,21 @@ namespace Jack int JackNetSlaveInterface::DataRecv() { - uint recvd_midi_pckt = 0; - uint recvd_audio_pckt = 0; int rx_bytes = 0; int last_cycle = 0; - + uint recvd_midi_pckt = 0; + packet_header_t* rx_head = reinterpret_cast ( fRxBuffer ); while ( !fRxHeader.fIsLastPckt ) { + //how much data is queued on the rx buffer ? rx_bytes = Recv(HEADER_SIZE, MSG_PEEK); + //error here, problem with recv, just skip the cycle (return -1) - if ( rx_bytes == SOCKET_ERROR ) return rx_bytes; + if ( rx_bytes && ( rx_head->fDataStream == 's' ) && ( rx_head->fID == fParams.fID ) ) { switch ( rx_head->fDataType ) @@ -896,7 +882,7 @@ namespace Jack case 'a': //audio rx_bytes = Recv ( rx_head->fPacketSize, 0 ); - if (recvd_audio_pckt++ != rx_head->fSubCycle) { + if (!IsNextPacket()) { jack_error("Packet(s) missing from '%s'...", fParams.fMasterNetName); } fRxHeader.fCycle = rx_head->fCycle; @@ -931,7 +917,7 @@ namespace Jack } fTxHeader.fSubCycle = 0; fTxHeader.fDataType = 's'; - fTxHeader.fIsLastPckt = ( fParams.fReturnMidiChannels == 0 && fParams.fReturnAudioChannels == 0) ? 1 : 0; + fTxHeader.fIsLastPckt = (fParams.fReturnMidiChannels == 0 && fParams.fReturnAudioChannels == 0) ? 1 : 0; fTxHeader.fPacketSize = HEADER_SIZE; memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); @@ -943,8 +929,9 @@ namespace Jack uint subproc; //midi - if ( fParams.fReturnMidiChannels > 0) + if (fParams.fReturnMidiChannels > 0) { + //set global header fields and get the number of midi packets fTxHeader.fDataType = 'm'; fTxHeader.fMidiDataSize = fNetMidiPlaybackBuffer->RenderFromJackPorts(); fTxHeader.fNMidiPckt = GetNMidiPckt(); @@ -952,7 +939,7 @@ namespace Jack { fTxHeader.fSubCycle = subproc; fTxHeader.fIsLastPckt = ((subproc == (fTxHeader.fNMidiPckt - 1)) && !fParams.fReturnAudioChannels) ? 1 : 0; - fTxHeader.fPacketSize = HEADER_SIZE+ fNetMidiPlaybackBuffer->RenderToNetwork(subproc, fTxHeader.fMidiDataSize); + fTxHeader.fPacketSize = HEADER_SIZE + fNetMidiPlaybackBuffer->RenderToNetwork(subproc, fTxHeader.fMidiDataSize); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); if (Send(fTxHeader.fPacketSize, 0) == SOCKET_ERROR) return SOCKET_ERROR; @@ -969,7 +956,7 @@ namespace Jack { fTxHeader.fSubCycle = subproc; fTxHeader.fIsLastPckt = (subproc == (fNSubProcess - 1)) ? 1 : 0; - fTxHeader.fPacketSize = fAudioTxLen; + fTxHeader.fPacketSize = HEADER_SIZE + fNetAudioCaptureBuffer->GetSize(); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); fNetAudioPlaybackBuffer->RenderFromJackPorts (subproc); if (Send(fTxHeader.fPacketSize, 0) == SOCKET_ERROR) @@ -984,7 +971,7 @@ namespace Jack { //this method contains every step of sync packet informations coding //first of all, reset sync packet - memset ( fTxData, 0, fPayloadSize ); + memset ( fTxData, 0, PACKET_AVAILABLE_SIZE ); //then first step : transport if (fParams.fTransportSync) { EncodeTransportData(); diff --git a/common/JackNetInterface.h b/common/JackNetInterface.h index 62264d4e..55706cf7 100644 --- a/common/JackNetInterface.h +++ b/common/JackNetInterface.h @@ -57,11 +57,6 @@ namespace Jack NetAudioBuffer* fNetAudioCaptureBuffer; NetAudioBuffer* fNetAudioPlaybackBuffer; - //sizes - int fAudioRxLen; - int fAudioTxLen; - int fPayloadSize; - //utility methods void SetFramesPerPacket(); int SetNetBufferSize(); diff --git a/common/JackNetTool.h b/common/JackNetTool.h index a3ebe1f9..4dae55a7 100644 --- a/common/JackNetTool.h +++ b/common/JackNetTool.h @@ -233,11 +233,14 @@ namespace Jack void Reset(); size_t GetSize(); + //utility void DisplayEvents(); + //jack<->buffer int RenderFromJackPorts(); int RenderToJackPorts(); + //network<->buffer int RenderFromNetwork ( int subcycle, size_t copy_size ); int RenderToNetwork ( int subcycle, size_t total_size ); @@ -258,10 +261,15 @@ namespace Jack {} virtual size_t GetSize() = 0; + //jack<->buffer virtual void RenderFromJackPorts (int subcycle ) = 0; virtual void RenderToJackPorts ( int cycle, int subcycle) = 0; virtual void FinishRenderToJackPorts (int cycle) = 0; + + //network<->buffer + //int RenderFromNetwork ( int subcycle, size_t copy_size ) = 0; + //int RenderToNetwork ( int subcycle, size_t total_size ) = 0; virtual void SetBuffer ( int index, sample_t* buffer ) = 0; virtual sample_t* GetBuffer ( int index ) = 0; diff --git a/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj b/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj index 31df802d..24592449 100755 --- a/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj +++ b/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj @@ -104,6 +104,16 @@ 4BCF75ED10BC2FD90082C526 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 4BCF75EE10BC2FD90082C526 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4BCF75F710BC30140082C526 /* audio_thru.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF75F610BC30140082C526 /* audio_thru.mm */; }; + 4BDFCD3D113DB6B700D77992 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; + 4BDFCD3E113DB6B700D77992 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B9CB1361136CA99007DE01A /* icon.png */; }; + 4BDFCD4A113DB6B700D77992 /* main_slave.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B0772490F54021B000DC657 /* main_slave.mm */; }; + 4BDFCD4B113DB6B700D77992 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; }; + 4BDFCD4D113DB6B700D77992 /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF15E2411356A3E00B36B9A /* CAHostTimeBase.cpp */; }; + 4BDFCD4E113DB6B700D77992 /* TiPhoneCoreAudioRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF15F7711357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp */; }; + 4BDFCD50113DB6B700D77992 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 4BDFCD51113DB6B700D77992 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + 4BDFCD52113DB6B700D77992 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 4BDFCD53113DB6B700D77992 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4BF1360F0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF1360E0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp */; }; 4BF136100F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF1360E0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp */; }; 4BF136130F4B0B5E00218A3F /* JackAudioAdapterInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BF136120F4B0B5E00218A3F /* JackAudioAdapterInterface.h */; }; @@ -143,7 +153,7 @@ /* Begin PBXFileReference section */ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D6058910D05DD3D006BFB54 /* iPhoneNetSlave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneNetSlave.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJackSlave.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; @@ -172,8 +182,11 @@ 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaust.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCB37D5112D64B4008C7BC1 /* HardwareClock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HardwareClock.cpp; sourceTree = SOURCE_ROOT; }; 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "iphone-faust.mm"; sourceTree = SOURCE_ROOT; }; - 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneThruNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaustNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCF75F610BC30140082C526 /* audio_thru.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_thru.mm; sourceTree = SOURCE_ROOT; }; + 4BDFCCD7113DB30500D77992 /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = ""; }; + 4BDFCD57113DB6B700D77992 /* NetJackSlave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJackSlave.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BDFCD59113DB6B700D77992 /* Info copy 2.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy 2.plist"; sourceTree = ""; }; 4BF1360E0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioAdapterInterface.cpp; path = ../../common/JackAudioAdapterInterface.cpp; sourceTree = SOURCE_ROOT; }; 4BF136120F4B0B5E00218A3F /* JackAudioAdapterInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackAudioAdapterInterface.h; path = ../../common/JackAudioAdapterInterface.h; sourceTree = SOURCE_ROOT; }; 4BF1364B0F4B0F7700218A3F /* JackResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackResampler.cpp; path = ../../common/JackResampler.cpp; sourceTree = SOURCE_ROOT; }; @@ -249,6 +262,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BDFCD4F113DB6B700D77992 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BDFCD50113DB6B700D77992 /* Foundation.framework in Frameworks */, + 4BDFCD51113DB6B700D77992 /* UIKit.framework in Frameworks */, + 4BDFCD52113DB6B700D77992 /* CoreGraphics.framework in Frameworks */, + 4BDFCD53113DB6B700D77992 /* AudioToolbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 4BFF456F0F4D5D9700106083 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -266,13 +290,14 @@ 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( - 1D6058910D05DD3D006BFB54 /* iPhoneNetSlave.app */, + 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */, 4BFF45120F4D59DB00106083 /* libjacknet.a */, 4BFF45770F4D5D9700106083 /* iPhoneFaustNet.app */, 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */, - 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */, + 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */, 4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */, 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */, + 4BDFCD57113DB6B700D77992 /* NetJackSlave.app */, ); name = Products; sourceTree = ""; @@ -329,6 +354,8 @@ 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 8D1107310486CEB800E47090 /* Info.plist */, 4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */, + 4BDFCCD7113DB30500D77992 /* Info copy.plist */, + 4BDFCD59113DB6B700D77992 /* Info copy 2.plist */, ); name = Resources; sourceTree = ""; @@ -377,7 +404,7 @@ ); name = iPhoneNetSlave; productName = iPhoneNet; - productReference = 1D6058910D05DD3D006BFB54 /* iPhoneNetSlave.app */; + productReference = 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */; productType = "com.apple.product-type.application"; }; 4B07721F0F54018C000DC657 /* iPhoneNetMaster */ = { @@ -462,7 +489,24 @@ ); name = iPhoneThruNet; productName = iPhoneNet; - productReference = 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */; + productReference = 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */; + productType = "com.apple.product-type.application"; + }; + 4BDFCD3B113DB6B700D77992 /* iPhoneNetSlaveLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4BDFCD54113DB6B700D77992 /* Build configuration list for PBXNativeTarget "iPhoneNetSlaveLib" */; + buildPhases = ( + 4BDFCD3C113DB6B700D77992 /* Resources */, + 4BDFCD3F113DB6B700D77992 /* Sources */, + 4BDFCD4F113DB6B700D77992 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iPhoneNetSlaveLib; + productName = iPhoneNet; + productReference = 4BDFCD57113DB6B700D77992 /* NetJackSlave.app */; productType = "com.apple.product-type.application"; }; 4BFF455E0F4D5D9700106083 /* iPhoneFaustNet */ = { @@ -496,6 +540,7 @@ targets = ( 4B07721F0F54018C000DC657 /* iPhoneNetMaster */, 1D6058900D05DD3D006BFB54 /* iPhoneNetSlave */, + 4BDFCD3B113DB6B700D77992 /* iPhoneNetSlaveLib */, 4BFF455E0F4D5D9700106083 /* iPhoneFaustNet */, 4BCF75D810BC2FD90082C526 /* iPhoneThruNet */, 4B41469610BD3C4300C12F0C /* iPhoneFaustNet Distribution */, @@ -551,6 +596,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BDFCD3C113DB6B700D77992 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BDFCD3D113DB6B700D77992 /* MainWindow.xib in Resources */, + 4BDFCD3E113DB6B700D77992 /* icon.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 4BFF455F0F4D5D9700106083 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -680,6 +734,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BDFCD3F113DB6B700D77992 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BDFCD4A113DB6B700D77992 /* main_slave.mm in Sources */, + 4BDFCD4B113DB6B700D77992 /* iPhoneNetAppDelegate.m in Sources */, + 4BDFCD4D113DB6B700D77992 /* CAHostTimeBase.cpp in Sources */, + 4BDFCD4E113DB6B700D77992 /* TiPhoneCoreAudioRenderer.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 4BFF45610F4D5D9700106083 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1003,6 +1068,57 @@ }; name = Release; }; + 4BDFCD55113DB6B700D77992 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; + HEADER_SEARCH_PATHS = ( + ../../macosx/coreaudio, + ../../macosx, + ../../posix, + ../../common/jack, + ../../common, + ); + INFOPLIST_FILE = Info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\"", + ); + OTHER_LDFLAGS = "-ljacknet"; + PRODUCT_NAME = iPhoneNetSlave; + SDKROOT = iphoneos3.1.3; + }; + name = Debug; + }; + 4BDFCD56113DB6B700D77992 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; + HEADER_SEARCH_PATHS = ( + ../../macosx/coreaudio, + ../../common/jack, + ../../common, + ../../posix, + ../../macosx, + ); + INFOPLIST_FILE = Info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\"", + ); + OTHER_LDFLAGS = "-ljacknet"; + PRODUCT_NAME = NetJackSlave; + }; + name = Release; + }; 4BFF45750F4D5D9700106083 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1136,6 +1252,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4BDFCD54113DB6B700D77992 /* Build configuration list for PBXNativeTarget "iPhoneNetSlaveLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4BDFCD55113DB6B700D77992 /* Debug */, + 4BDFCD56113DB6B700D77992 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4BFF45740F4D5D9700106083 /* Build configuration list for PBXNativeTarget "iPhoneFaustNet" */ = { isa = XCConfigurationList; buildConfigurations = (