add README etc
This commit is contained in:
parent
43d3ca27dc
commit
77c49cde2a
67
README
67
README
|
@ -0,0 +1,67 @@
|
||||||
|
sc3ctrl
|
||||||
|
=======
|
||||||
|
|
||||||
|
**************************************************************************
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
**************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
sc3ctrl is a command line utility which uses OpenSoundControl to control
|
||||||
|
the SuperCollider3.app in OSX.
|
||||||
|
|
||||||
|
Source code/downloads: http://github.com/rfwatson/sc3ctrl
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
1) Drag the bundle into a suitable location on your machine
|
||||||
|
(such as /Application/Utilities/)
|
||||||
|
|
||||||
|
2) Double click "install.rb". (This will create an executable script in
|
||||||
|
/usr/local/lib. This allows sc3ctrl to be run from the command-line. It also
|
||||||
|
copies the required SuperCollider class file to ~/Application\
|
||||||
|
Support/SuperCollider/Extensions/).
|
||||||
|
|
||||||
|
3) Start SuperCollider.app
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
sc3ctrl -x Execute the SC code in environment variable SC_INTERPRET_TEXT
|
||||||
|
|
||||||
|
sc3ctrl -x VARIABLE_NAME Execute the SC code in environment variable VARIABLE_NAME
|
||||||
|
|
||||||
|
sc3ctrl -d classname Open the help file for classname
|
||||||
|
|
||||||
|
sc3ctrl -j classname Open the class definition for classname
|
||||||
|
|
||||||
|
sc3ctrl -y methodname Examine implementations of methodname
|
||||||
|
|
||||||
|
sc3ctrl -Y methodname Examine references to methodname
|
||||||
|
|
||||||
|
sc3ctrl -s Stop server (CMD-PERIOD)
|
||||||
|
|
||||||
|
sc3ctrl -c Clear post window
|
||||||
|
|
||||||
|
sc3ctrl -p Post window to front
|
||||||
|
|
||||||
|
sc3ctrl -k Recompile class library (requires recent build)
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)interpretContentsOfEnvironmentVariable:(const char *)var
|
- (void)interpretContentsOfEnvironmentVariable:(const char *)var
|
||||||
{
|
{
|
||||||
char *utf8cmd = getenv(var);
|
char *utf8cmd = getenv(var);
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
**************************************************************************
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
**************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
sc3ctrl is a command line utility which uses OpenSoundControl to control
|
||||||
|
the SuperCollider3.app in OSX.
|
||||||
|
|
||||||
|
Consists of a small CoreFoundation bundle written in Objective-C and a
|
||||||
|
single SuperCollider class.
|
||||||
|
|
||||||
|
Source code: http://github.com/rfwatson/sc3ctrl
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
1) Drag the bundle into a suitable location on your machine
|
||||||
|
(e.g. /Application/Utilities/)
|
||||||
|
|
||||||
|
2) cd /Application/Utilities/sc3ctrl/
|
||||||
|
|
||||||
|
3) sudo install.rb
|
||||||
|
|
||||||
|
4) Start SuperCollider.app
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
sc3ctrl -x Execute the SC code in environment variable SC_INTERPRET_TEXT
|
||||||
|
|
||||||
|
sc3ctrl -x VARIABLE_NAME Execute the SC code in environment variable VARIABLE_NAME
|
||||||
|
|
||||||
|
sc3ctrl -d classname Open help file for classname
|
||||||
|
|
||||||
|
sc3ctrl -j classname Open class definition for classname
|
||||||
|
|
||||||
|
sc3ctrl -y methodname Examine implementations of methodname
|
||||||
|
|
||||||
|
sc3ctrl -Y methodname Examine references to methodname
|
||||||
|
|
||||||
|
sc3ctrl -s Stop server (CMD-PERIOD)
|
||||||
|
|
||||||
|
sc3ctrl -c Clear post window
|
||||||
|
|
||||||
|
sc3ctrl -p Post window to front
|
||||||
|
|
||||||
|
sc3ctrl -k Recompile class library (requires recent build)
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
// http://github.com/rfwatson/sc3ctrl
|
||||||
|
|
||||||
|
SC3Controller {
|
||||||
|
classvar nodes;
|
||||||
|
|
||||||
|
*addListeners {
|
||||||
|
var node;
|
||||||
|
if(nodes.isEmpty) {
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/cmd') { |t, r, msg|
|
||||||
|
msg[1].asString.interpretPrint;
|
||||||
|
{ postToFront.() }.defer;
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/help') { |t, r, msg|
|
||||||
|
{ msg[1].asString.openHelpFile }.defer
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/class') { |t, r, msg|
|
||||||
|
{ msg[1].asString.interpret.openCodeFile }.defer
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/implementations') { |t, r, msg|
|
||||||
|
{ SC3Controller.methodTemplates(msg[1]) }.defer
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/references') { |t, r, msg|
|
||||||
|
{ SC3Controller.methodReferences(msg[1]) }.defer
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/stop') { |t, r, msg|
|
||||||
|
thisProcess.stop;
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/clear') { |t, r, msg|
|
||||||
|
{
|
||||||
|
Document.listener.string = ""; "";
|
||||||
|
postToFront.();
|
||||||
|
}.defer;
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/postfront') { |t, r, msg|
|
||||||
|
{ postToFront.() }.defer;
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
|
||||||
|
node = OSCresponderNode(nil, '/sc3ctrl/recompile') { |t, r, msg|
|
||||||
|
{
|
||||||
|
thisProcess.recompile;
|
||||||
|
postToFront.();
|
||||||
|
}.defer;
|
||||||
|
}.add;
|
||||||
|
nodes.add(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*removeAllListeners {
|
||||||
|
nodes.do(_.remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
*initClass {
|
||||||
|
var postToFront;
|
||||||
|
nodes = List[];
|
||||||
|
|
||||||
|
Platform.case(\osx) {
|
||||||
|
postToFront = {
|
||||||
|
Document.listener.front;
|
||||||
|
};
|
||||||
|
|
||||||
|
StartUp.add {
|
||||||
|
this.addListeners;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// adapated from Kernel.sc
|
||||||
|
*methodTemplates { |name|
|
||||||
|
var out, found = 0, namestring;
|
||||||
|
out = CollStream.new;
|
||||||
|
out << "Implementations of '" << name << "' :\n";
|
||||||
|
Class.allClasses.do({ arg class;
|
||||||
|
class.methods.do({ arg method;
|
||||||
|
if (method.name == name, {
|
||||||
|
found = found + 1;
|
||||||
|
namestring = class.name ++ ":" ++ name;
|
||||||
|
out << " " << namestring << " : ";
|
||||||
|
if (method.argNames.isNil or: { method.argNames.size == 1 }, {
|
||||||
|
out << "this." << name;
|
||||||
|
if (name.isSetter, { out << "(val)"; });
|
||||||
|
},{
|
||||||
|
out << method.argNames.at(0);
|
||||||
|
if (name.asString.at(0).isAlpha, {
|
||||||
|
out << "." << name << "(";
|
||||||
|
method.argNames.do({ arg argName, i;
|
||||||
|
if (i > 0, {
|
||||||
|
if (i != 1, { out << ", " });
|
||||||
|
out << argName;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
out << ")";
|
||||||
|
},{
|
||||||
|
out << " " << name << " ";
|
||||||
|
out << method.argNames.at(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
out.nl;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if(found == 0)
|
||||||
|
{
|
||||||
|
Post << "\nNo implementations of '" << name << "'.\n";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
out.collection.newTextWindow(name.asString);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// adapted from Kernel.sc
|
||||||
|
*methodReferences { |name|
|
||||||
|
var out, references;
|
||||||
|
name = name.asSymbol;
|
||||||
|
out = CollStream.new;
|
||||||
|
references = Class.findAllReferences(name);
|
||||||
|
|
||||||
|
if (references.notNil, {
|
||||||
|
out << "References to '" << name << "' :\n";
|
||||||
|
references.do({ arg ref; out << " " << ref.asString << "\n"; });
|
||||||
|
out.collection.newTextWindow(name.asString);
|
||||||
|
},{
|
||||||
|
Post << "\nNo references to '" << name << "'.\n";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
Versions/Current/Headers
|
|
@ -0,0 +1 @@
|
||||||
|
Versions/Current/Resources
|
|
@ -0,0 +1 @@
|
||||||
|
Versions/Current/VVOSC
|
|
@ -0,0 +1,28 @@
|
||||||
|
//
|
||||||
|
// AddressValPair.h
|
||||||
|
// VVOSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 12/11/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface AddressValPair : NSObject {
|
||||||
|
NSString *address;
|
||||||
|
id val;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (id) createWithAddress:(NSString *)a val:(id)v;
|
||||||
|
- (id) initWithAddress:(NSString *)a val:(id)v;
|
||||||
|
|
||||||
|
- (NSString *) address;
|
||||||
|
- (id) val;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,34 @@
|
||||||
|
//
|
||||||
|
// OSCBundle.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import "OSCMessage.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCBundle : NSObject {
|
||||||
|
NSMutableArray *elementArray; // array of messages or bundles
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p;
|
||||||
|
|
||||||
|
+ (id) create;
|
||||||
|
|
||||||
|
- (void) addElement:(id)n;
|
||||||
|
- (void) addElementArray:(NSArray *)a;
|
||||||
|
|
||||||
|
- (int) bufferLength;
|
||||||
|
- (void) writeToBuffer:(unsigned char *)b;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,93 @@
|
||||||
|
//
|
||||||
|
// OSCInPort.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//#import <sys/types.h>
|
||||||
|
//#import <sys/socket.h>
|
||||||
|
#import <netinet/in.h>
|
||||||
|
|
||||||
|
#import <pthread.h>
|
||||||
|
#import "AddressValPair.h"
|
||||||
|
#import "OSCPacket.h"
|
||||||
|
#import "OSCBundle.h"
|
||||||
|
#import "OSCMessage.h"
|
||||||
|
|
||||||
|
|
||||||
|
@protocol OSCInPortDelegateProtocol
|
||||||
|
- (void) oscMessageReceived:(NSDictionary *)d;
|
||||||
|
- (void) receivedOSCVal:(id)v forAddress:(NSString *)a;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@protocol OSCDelegateProtocol
|
||||||
|
- (void) oscMessageReceived:(NSDictionary *)d;
|
||||||
|
- (void) receivedOSCVal:(id)v forAddress:(NSString *)a;
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCInPort : NSObject {
|
||||||
|
BOOL deleted; // whether or not i'm deleted- ensures that socket gets closed
|
||||||
|
BOOL bound; // whether or not the socket is bound
|
||||||
|
int sock; // socket file descriptor. remember, everything in unix is files!
|
||||||
|
struct sockaddr_in addr; // struct that describes *my* address (this is an in port)
|
||||||
|
unsigned short port; // the port number i'm receiving from
|
||||||
|
BOOL running; // whether or not i should keep running
|
||||||
|
BOOL busy;
|
||||||
|
unsigned char buf[8192]; // the socket gets data and dumps it here immediately
|
||||||
|
|
||||||
|
pthread_mutex_t lock;
|
||||||
|
NSTimer *threadTimer;
|
||||||
|
int threadTimerCount;
|
||||||
|
NSAutoreleasePool *threadPool;
|
||||||
|
|
||||||
|
NSString *portLabel; // the "name" of the port (added to distinguish multiple osc input ports for bonjour)
|
||||||
|
NSNetService *zeroConfDest; // bonjour service for publishing this input's address...only active if there's a portLabel!
|
||||||
|
|
||||||
|
NSMutableDictionary *scratchDict; // key of dict is address port; object at key is a mut. array. coalesced messaging.
|
||||||
|
NSMutableArray *scratchArray; // array of AddressValPair objects. used for serial messaging.
|
||||||
|
id delegate; // my delegate gets notified of incoming messages
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (id) createWithPort:(unsigned short)p;
|
||||||
|
+ (id) createWithPort:(unsigned short)p labelled:(NSString *)n;
|
||||||
|
- (id) initWithPort:(unsigned short)p;
|
||||||
|
- (id) initWithPort:(unsigned short)p labelled:(NSString *)n;
|
||||||
|
|
||||||
|
- (void) prepareToBeDeleted;
|
||||||
|
|
||||||
|
- (NSDictionary *) createSnapshot;
|
||||||
|
|
||||||
|
- (BOOL) createSocket;
|
||||||
|
- (void) start;
|
||||||
|
- (void) stop;
|
||||||
|
- (void) launchOSCLoop:(id)o;
|
||||||
|
- (void) OSCThreadProc:(NSTimer *)t;
|
||||||
|
- (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l;
|
||||||
|
|
||||||
|
// if the delegate im
|
||||||
|
- (void) handleParsedScratchDict:(NSDictionary *)d;
|
||||||
|
- (void) handleScratchArray:(NSArray *)a;
|
||||||
|
|
||||||
|
- (void) addValue:(id)val toAddressPath:(NSString *)p;
|
||||||
|
|
||||||
|
- (unsigned short) port;
|
||||||
|
- (void) setPort:(unsigned short)n;
|
||||||
|
- (NSString *) portLabel;
|
||||||
|
- (void) setPortLabel:(NSString *)n;
|
||||||
|
- (NSNetService *) zeroConfDest;
|
||||||
|
- (BOOL) bound;
|
||||||
|
|
||||||
|
- (id) delegate;
|
||||||
|
- (void) setDelegate:(id)n;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,144 @@
|
||||||
|
//
|
||||||
|
// OSCManager.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import "OSCZeroConfManager.h"
|
||||||
|
#import "OSCInPort.h"
|
||||||
|
#import "OSCOutPort.h"
|
||||||
|
#import <pthread.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
TOP-LEVEL OVERVIEW
|
||||||
|
|
||||||
|
this osc manager class is all you need to add to your app. it has methods for
|
||||||
|
adding and removing ports. you can have as many osc managers as you like, but
|
||||||
|
you should really only need one instance.
|
||||||
|
|
||||||
|
input ports have a delegate- delegate methods are called as the port receives data.
|
||||||
|
it's important to note that the delegate methods must be thread-safe: each input
|
||||||
|
port is running on its own (non-main) thread.
|
||||||
|
|
||||||
|
data is sent via the output ports (convenience methods for doing this are built
|
||||||
|
into the osc manager).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GENERAL OSC STRUCTURE AND OVERVIEW
|
||||||
|
|
||||||
|
this framework was written from the OSC spec found here:
|
||||||
|
http://opensoundcontrol.org/spec-1_0
|
||||||
|
|
||||||
|
- an OSC packet is the basic unit of transmitting OSC data.
|
||||||
|
- an OSC packet consists of:
|
||||||
|
- contents- contiguous block of binary data (either a bundle or a message), and then the
|
||||||
|
- size- number of 8-bit bytes that comprise 'contents'- ALWAYS multiple of 4!
|
||||||
|
- an OSC message consists of:
|
||||||
|
- an OSC address pattern (starting with '/'), followed by
|
||||||
|
- an OSC type tag string, followed by
|
||||||
|
- zero or more 'OSC arguments'
|
||||||
|
- an OSC bundle consists of:
|
||||||
|
- the OSC-string "#bundle", followed by
|
||||||
|
- an OSC time tag, followed by
|
||||||
|
- zero or more 'OSC bundle elements'
|
||||||
|
- an OSC bundle element consists of:
|
||||||
|
- 'size' (int32)- number of 8-bit bytes in the contents- ALWAYS multiple of 4!
|
||||||
|
- 'contents'- either another OSC bundle, or an OSC message
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PORTS- SENDING AND RECEIVING UDP/TCP DATA
|
||||||
|
|
||||||
|
some basic information, gleaned from:
|
||||||
|
http://beej.us/guide/bgnet/output/html/multipage/index.html
|
||||||
|
|
||||||
|
struct sockaddr {
|
||||||
|
unsigned short sa_family; // address family, AF_xxx
|
||||||
|
char sa_data[14]; // 14 bytes of protocol address
|
||||||
|
}
|
||||||
|
struct sockaddr_in {
|
||||||
|
short int sin_family; // address family
|
||||||
|
unsigned short int sin_port; // port number
|
||||||
|
struct in_addr sin_addr; // internet address
|
||||||
|
unsigned char sin_zero[8]; // exists so sockaddr_in has same length as sockaddr
|
||||||
|
}
|
||||||
|
|
||||||
|
recv(int sockfd, void *buf, int len, unsigned int flags);
|
||||||
|
- sockfd is the socket descriptor to read from
|
||||||
|
- buf is the buffer to read the information into
|
||||||
|
- len is the max length of the buffer
|
||||||
|
- flags can be set to 0
|
||||||
|
recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);
|
||||||
|
- from is a pointer to a local struct sockaddr that will be filled with the IP & port of the originating machine
|
||||||
|
- fromlen is a pointer to a local int that should be initialized to a sizeof(struct sockaddr)- contains length of address actually stored in from on return
|
||||||
|
...as well as the 4 params listed above in recv()
|
||||||
|
|
||||||
|
int select(int numfds, fd_set *readrds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
|
||||||
|
*/
|
||||||
|
|
||||||
|
@interface OSCManager : NSObject {
|
||||||
|
NSMutableArray *inPortArray;
|
||||||
|
NSMutableArray *outPortArray;
|
||||||
|
|
||||||
|
pthread_rwlock_t inPortLock;
|
||||||
|
pthread_rwlock_t outPortLock;
|
||||||
|
|
||||||
|
id delegate;
|
||||||
|
|
||||||
|
OSCZeroConfManager *zeroConfManager; // bonjour/zero-configuration manager
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) deleteAllInputs;
|
||||||
|
- (void) deleteAllOutputs;
|
||||||
|
// methods for creating input ports
|
||||||
|
- (OSCInPort *) createNewInputFromSnapshot:(NSDictionary *)s;
|
||||||
|
- (OSCInPort *) createNewInputForPort:(int)p withLabel:(NSString *)l;
|
||||||
|
- (OSCInPort *) createNewInputForPort:(int)p;
|
||||||
|
- (OSCInPort *) createNewInput;
|
||||||
|
// methods for creating output ports
|
||||||
|
- (OSCOutPort *) createNewOutputFromSnapshot:(NSDictionary *)s;
|
||||||
|
- (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p withLabel:(NSString *)l;
|
||||||
|
- (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p;
|
||||||
|
- (OSCOutPort *) createNewOutput;
|
||||||
|
|
||||||
|
// typically, the manager is the input port's delegate- input ports tell delegates when they receive data
|
||||||
|
// this method is called and contains coalesced messages (grouped by address path)
|
||||||
|
- (void) oscMessageReceived:(NSDictionary *)d;
|
||||||
|
// this method is called every time any osc val is processed
|
||||||
|
- (void) receivedOSCVal:(id)v forAddress:(NSString *)a;
|
||||||
|
|
||||||
|
// methods for working with ports
|
||||||
|
- (NSString *) getUniqueInputLabel;
|
||||||
|
- (NSString *) getUniqueOutputLabel;
|
||||||
|
- (OSCInPort *) findInputWithLabel:(NSString *)n;
|
||||||
|
- (OSCOutPort *) findOutputWithLabel:(NSString *)n;
|
||||||
|
- (OSCOutPort *) findOutputWithAddress:(NSString *)a andPort:(int)p;
|
||||||
|
- (OSCOutPort *) findOutputForIndex:(int)i;
|
||||||
|
- (OSCInPort *) findInputWithZeroConfName:(NSString *)n;
|
||||||
|
- (void) removeInput:(id)p;
|
||||||
|
- (void) removeOutput:(id)p;
|
||||||
|
- (NSArray *) outPortLabelArray;
|
||||||
|
|
||||||
|
// subclassable methods for customizing
|
||||||
|
- (id) inPortClass;
|
||||||
|
- (NSString *) inPortLabelBase;
|
||||||
|
- (id) outPortClass;
|
||||||
|
|
||||||
|
// misc
|
||||||
|
- (id) delegate;
|
||||||
|
- (void) setDelegate:(id)n;
|
||||||
|
- (NSMutableArray *) inPortArray;
|
||||||
|
- (NSMutableArray *) outPortArray;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
// OSCMessage.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import <pthread.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCMessage : NSObject {
|
||||||
|
NSString *address;
|
||||||
|
NSMutableArray *typeArray;
|
||||||
|
NSMutableArray *argArray;
|
||||||
|
pthread_rwlock_t lock;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p;
|
||||||
|
+ (id) createMessageToAddress:(NSString *)a;
|
||||||
|
- (id) initWithAddress:(NSString *)a;
|
||||||
|
|
||||||
|
- (void) addInt:(int)n;
|
||||||
|
- (void) addFloat:(float)n;
|
||||||
|
#if IPHONE
|
||||||
|
- (void) addColor:(UIColor *)c;
|
||||||
|
#else
|
||||||
|
- (void) addColor:(NSColor *)c;
|
||||||
|
#endif
|
||||||
|
- (void) addBOOL:(BOOL)n;
|
||||||
|
- (void) addString:(NSString *)n;
|
||||||
|
|
||||||
|
- (int) bufferLength;
|
||||||
|
- (void) writeToBuffer:(unsigned char *)b;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,58 @@
|
||||||
|
//
|
||||||
|
// OSCOutPort.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
#import "OSCPacket.h"
|
||||||
|
#import "OSCBundle.h"
|
||||||
|
#import "OSCMessage.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCOutPort : NSObject {
|
||||||
|
BOOL deleted;
|
||||||
|
int sock;
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
unsigned short port;
|
||||||
|
NSString *addressString;
|
||||||
|
NSString *portLabel; // used it to distinguish between multiple osc outputs
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (id) createWithAddress:(NSString *)a andPort:(unsigned short)p;
|
||||||
|
+ (id) createWithAddress:(NSString *)a andPort:(unsigned short)p labelled:(NSString *)l;
|
||||||
|
- (id) initWithAddress:(NSString *)a andPort:(unsigned short)p;
|
||||||
|
- (id) initWithAddress:(NSString *)a andPort:(unsigned short)p labelled:(NSString *)l;
|
||||||
|
- (void) prepareToBeDeleted;
|
||||||
|
|
||||||
|
- (NSDictionary *) createSnapshot;
|
||||||
|
|
||||||
|
- (BOOL) createSocket;
|
||||||
|
|
||||||
|
- (void) sendThisBundle:(OSCBundle *)b;
|
||||||
|
- (void) sendThisMessage:(OSCMessage *)m;
|
||||||
|
- (void) sendThisPacket:(OSCPacket *)p;
|
||||||
|
|
||||||
|
- (void) setAddressString:(NSString *)n;
|
||||||
|
- (void) setPort:(unsigned short)p;
|
||||||
|
- (void) setAddressString:(NSString *)n andPort:(unsigned short)p;
|
||||||
|
|
||||||
|
- (NSString *) portLabel;
|
||||||
|
- (void) setPortLabel:(NSString *)n;
|
||||||
|
|
||||||
|
- (unsigned short) port;
|
||||||
|
- (NSString *) addressString;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,37 @@
|
||||||
|
//
|
||||||
|
// OSCPacket.h
|
||||||
|
// OSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 9/20/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#import "OSCBundle.h"
|
||||||
|
#import "OSCMessage.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
this class requires a bundle or message on create/init. the buffer/msg
|
||||||
|
is NOT retained by this class in any way- it's used to immediately create
|
||||||
|
the buffer which will be sent.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@interface OSCPacket : NSObject {
|
||||||
|
int bufferLength;
|
||||||
|
unsigned char *payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p;
|
||||||
|
+ (id) createWithContent:(id)c;
|
||||||
|
- (id) initWithContent:(id)c;
|
||||||
|
|
||||||
|
- (int) bufferLength;
|
||||||
|
- (unsigned char *) payload;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,44 @@
|
||||||
|
//
|
||||||
|
// OSCZeroConfDomain.h
|
||||||
|
// VVOSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 12/9/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import <pthread.h>
|
||||||
|
#import <sys/socket.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCZeroConfDomain : NSObject {
|
||||||
|
NSString *domainString;
|
||||||
|
NSNetServiceBrowser *serviceBrowser;
|
||||||
|
|
||||||
|
NSMutableArray *servicesArray;
|
||||||
|
pthread_rwlock_t servicesLock;
|
||||||
|
|
||||||
|
id domainManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (id) createWithDomain:(NSString *)d andDomainManager:(id)m;
|
||||||
|
- (id) initWithDomain:(NSString *)d andDomainManager:(id)m;
|
||||||
|
|
||||||
|
// NSNetServiceBrowser delegate methods
|
||||||
|
- (void)netServiceBrowser:(NSNetServiceBrowser *)n didFindService:(NSNetService *)x moreComing:(BOOL)m;
|
||||||
|
- (void)netServiceBrowser:(NSNetServiceBrowser *)n didNotSearch:(NSDictionary *)err;
|
||||||
|
- (void)netServiceBrowser:(NSNetServiceBrowser *)n didRemoveService:(NSNetService *)s moreComing:(BOOL)m;
|
||||||
|
|
||||||
|
// NSNetService delegate methods
|
||||||
|
- (void)netService:(NSNetService *)n didNotResolve:(NSDictionary *)err;
|
||||||
|
- (void)netServiceDidResolveAddress:(NSNetService *)n;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,39 @@
|
||||||
|
//
|
||||||
|
// OSCZeroConfManager.h
|
||||||
|
// VVOSC
|
||||||
|
//
|
||||||
|
// Created by bagheera on 12/9/08.
|
||||||
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if IPHONE
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import "OSCZeroConfDomain.h"
|
||||||
|
#import <pthread.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@interface OSCZeroConfManager : NSObject {
|
||||||
|
NSNetServiceBrowser *domainBrowser;
|
||||||
|
|
||||||
|
NSMutableDictionary *domainDict;
|
||||||
|
pthread_rwlock_t domainLock;
|
||||||
|
|
||||||
|
id oscManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id) initWithOSCManager:(id)m;
|
||||||
|
|
||||||
|
- (void) serviceRemoved:(NSNetService *)s;
|
||||||
|
- (void) serviceResolved:(NSNetService *)s;
|
||||||
|
|
||||||
|
// NSNetServiceBrowser delegate methods
|
||||||
|
- (void)netServiceBrowser:(NSNetServiceBrowser *)n didFindDomain:(NSString *)d moreComing:(BOOL)m;
|
||||||
|
- (void)netServiceBrowser:(NSNetServiceBrowser *)n didNotSearch:(NSDictionary *)err;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
#import "AddressValPair.h"
|
||||||
|
#import "OSCManager.h"
|
||||||
|
#import "OSCZeroConfManager.h"
|
||||||
|
#import "OSCPacket.h"
|
||||||
|
#import "OSCBundle.h"
|
||||||
|
#import "OSCMessage.h"
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>VVOSC</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>0.1.2</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.vidvox.VVOSC</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>VVOSC</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>0.1.2</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
A
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
puts "Ready to install sc3ctrl."
|
||||||
|
puts "Press ENTER to continue."
|
||||||
|
gets
|
||||||
|
|
||||||
|
puts "Creating executable in /usr/local/bin .."
|
||||||
|
%x{echo "`pwd`/sc3ctrl \\$1 \\$2" > /usr/local/bin/sc3ctrl}
|
||||||
|
%x{chmod a+x /usr/local/bin/sc3ctrl}
|
||||||
|
puts "Done."
|
||||||
|
|
||||||
|
puts
|
||||||
|
puts "Copying SuperCollider class to Extensions folder .."
|
||||||
|
system 'cp SC3Controller.sc ~/Library/Application\ Support/SuperCollider/Extensions/'
|
||||||
|
puts "Done."
|
||||||
|
|
||||||
|
puts
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
echo "This script will "
|
|
@ -8,13 +8,30 @@
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
5671631B0EFE70500047EA2B /* SC3Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; };
|
5671631B0EFE70500047EA2B /* SC3Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; };
|
||||||
567164C90EFE933D0047EA2B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
|
||||||
567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567165400EFE98A90047EA2B /* VVOSC.framework */; };
|
567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567165400EFE98A90047EA2B /* VVOSC.framework */; };
|
||||||
|
567167160EFECB0A0047EA2B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567167150EFECB0A0047EA2B /* Foundation.framework */; };
|
||||||
|
5671672F0EFECD9B0047EA2B /* VVOSC.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567165400EFE98A90047EA2B /* VVOSC.framework */; };
|
||||||
|
567167640EFECFDC0047EA2B /* SC3Controller.sc in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567167630EFECFD80047EA2B /* SC3Controller.sc */; };
|
||||||
|
5671676B0EFEDC6E0047EA2B /* README in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5671676A0EFEDC650047EA2B /* README */; };
|
||||||
|
567167770EFEDCBC0047EA2B /* install.rb in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567167760EFEDCB50047EA2B /* install.rb */; };
|
||||||
8DD76F9A0486AA7600D96B5E /* sc3ctrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* sc3ctrl.m */; settings = {ATTRIBUTES = (); }; };
|
8DD76F9A0486AA7600D96B5E /* sc3ctrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* sc3ctrl.m */; settings = {ATTRIBUTES = (); }; };
|
||||||
8DD76F9F0486AA7600D96B5E /* sc3ctrl.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859EA3029092ED04C91782 /* sc3ctrl.1 */; };
|
8DD76F9F0486AA7600D96B5E /* sc3ctrl.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859EA3029092ED04C91782 /* sc3ctrl.1 */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
567167310EFECD9C0047EA2B /* CopyFiles */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "";
|
||||||
|
dstSubfolderSpec = 10;
|
||||||
|
files = (
|
||||||
|
567167770EFEDCBC0047EA2B /* install.rb in CopyFiles */,
|
||||||
|
5671676B0EFEDC6E0047EA2B /* README in CopyFiles */,
|
||||||
|
567167640EFECFDC0047EA2B /* SC3Controller.sc in CopyFiles */,
|
||||||
|
5671672F0EFECD9B0047EA2B /* VVOSC.framework in CopyFiles */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
|
8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 8;
|
buildActionMask = 8;
|
||||||
|
@ -29,13 +46,16 @@
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
08FB7796FE84155DC02AAC07 /* sc3ctrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = sc3ctrl.m; sourceTree = "<group>"; };
|
08FB7796FE84155DC02AAC07 /* sc3ctrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = sc3ctrl.m; sourceTree = "<group>"; };
|
||||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
|
||||||
32A70AAB03705E1F00C91783 /* sc3ctrl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sc3ctrl_Prefix.pch; sourceTree = "<group>"; };
|
32A70AAB03705E1F00C91783 /* sc3ctrl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sc3ctrl_Prefix.pch; sourceTree = "<group>"; };
|
||||||
567162BF0EFE62AD0047EA2B /* sc3ctrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sc3ctrl.h; path = Projects/sc3ctrl/sc3ctrl.h; sourceTree = DEVELOPER_DIR; };
|
567162BF0EFE62AD0047EA2B /* sc3ctrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sc3ctrl.h; path = Projects/sc3ctrl/sc3ctrl.h; sourceTree = DEVELOPER_DIR; };
|
||||||
567163190EFE70500047EA2B /* SC3Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SC3Controller.h; path = Projects/sc3ctrl/SC3Controller.h; sourceTree = DEVELOPER_DIR; };
|
567163190EFE70500047EA2B /* SC3Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SC3Controller.h; path = Projects/sc3ctrl/SC3Controller.h; sourceTree = DEVELOPER_DIR; };
|
||||||
5671631A0EFE70500047EA2B /* SC3Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SC3Controller.m; path = Projects/sc3ctrl/SC3Controller.m; sourceTree = DEVELOPER_DIR; };
|
5671631A0EFE70500047EA2B /* SC3Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SC3Controller.m; path = Projects/sc3ctrl/SC3Controller.m; sourceTree = DEVELOPER_DIR; };
|
||||||
567163FE0EFE87020047EA2B /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = Projects/sc3ctrl/debug.h; sourceTree = DEVELOPER_DIR; };
|
567163FE0EFE87020047EA2B /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = Projects/sc3ctrl/debug.h; sourceTree = DEVELOPER_DIR; };
|
||||||
567165400EFE98A90047EA2B /* VVOSC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VVOSC.framework; path = ../vvosc/build/Release/VVOSC.framework; sourceTree = SOURCE_ROOT; };
|
567165400EFE98A90047EA2B /* VVOSC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VVOSC.framework; path = ../vvosc/build/Release/VVOSC.framework; sourceTree = SOURCE_ROOT; };
|
||||||
|
567167150EFECB0A0047EA2B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = ../../../System/Library/Frameworks/Foundation.framework; sourceTree = SOURCE_ROOT; };
|
||||||
|
567167630EFECFD80047EA2B /* SC3Controller.sc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SC3Controller.sc; path = supercollider/SC3Controller.sc; sourceTree = SOURCE_ROOT; };
|
||||||
|
5671676A0EFEDC650047EA2B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = Projects/sc3ctrl/README; sourceTree = DEVELOPER_DIR; };
|
||||||
|
567167760EFEDCB50047EA2B /* install.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; name = install.rb; path = Projects/sc3ctrl/install.rb; sourceTree = DEVELOPER_DIR; };
|
||||||
8DD76FA10486AA7600D96B5E /* sc3ctrl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sc3ctrl; sourceTree = BUILT_PRODUCTS_DIR; };
|
8DD76FA10486AA7600D96B5E /* sc3ctrl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sc3ctrl; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
C6859EA3029092ED04C91782 /* sc3ctrl.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = sc3ctrl.1; sourceTree = "<group>"; };
|
C6859EA3029092ED04C91782 /* sc3ctrl.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = sc3ctrl.1; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
@ -45,8 +65,8 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
567164C90EFE933D0047EA2B /* Foundation.framework in Frameworks */,
|
|
||||||
567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */,
|
567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */,
|
||||||
|
567167160EFECB0A0047EA2B /* Foundation.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -67,6 +87,7 @@
|
||||||
08FB7795FE84155DC02AAC07 /* Source */ = {
|
08FB7795FE84155DC02AAC07 /* Source */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
567167630EFECFD80047EA2B /* SC3Controller.sc */,
|
||||||
567163190EFE70500047EA2B /* SC3Controller.h */,
|
567163190EFE70500047EA2B /* SC3Controller.h */,
|
||||||
5671631A0EFE70500047EA2B /* SC3Controller.m */,
|
5671631A0EFE70500047EA2B /* SC3Controller.m */,
|
||||||
567162BF0EFE62AD0047EA2B /* sc3ctrl.h */,
|
567162BF0EFE62AD0047EA2B /* sc3ctrl.h */,
|
||||||
|
@ -80,8 +101,8 @@
|
||||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
|
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
567167150EFECB0A0047EA2B /* Foundation.framework */,
|
||||||
567165400EFE98A90047EA2B /* VVOSC.framework */,
|
567165400EFE98A90047EA2B /* VVOSC.framework */,
|
||||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */,
|
|
||||||
);
|
);
|
||||||
name = "External Frameworks and Libraries";
|
name = "External Frameworks and Libraries";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -90,6 +111,7 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
8DD76FA10486AA7600D96B5E /* sc3ctrl */,
|
8DD76FA10486AA7600D96B5E /* sc3ctrl */,
|
||||||
|
567167760EFEDCB50047EA2B /* install.rb */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -97,6 +119,7 @@
|
||||||
C6859EA2029092E104C91782 /* Documentation */ = {
|
C6859EA2029092E104C91782 /* Documentation */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
5671676A0EFEDC650047EA2B /* README */,
|
||||||
C6859EA3029092ED04C91782 /* sc3ctrl.1 */,
|
C6859EA3029092ED04C91782 /* sc3ctrl.1 */,
|
||||||
);
|
);
|
||||||
name = Documentation;
|
name = Documentation;
|
||||||
|
@ -112,6 +135,7 @@
|
||||||
8DD76F990486AA7600D96B5E /* Sources */,
|
8DD76F990486AA7600D96B5E /* Sources */,
|
||||||
8DD76F9B0486AA7600D96B5E /* Frameworks */,
|
8DD76F9B0486AA7600D96B5E /* Frameworks */,
|
||||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */,
|
8DD76F9E0486AA7600D96B5E /* CopyFiles */,
|
||||||
|
567167310EFECD9C0047EA2B /* CopyFiles */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
@ -216,7 +240,7 @@
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||||
LD_DYLIB_INSTALL_NAME = "";
|
LD_DYLIB_INSTALL_NAME = "";
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
LD_RUNPATH_SEARCH_PATHS = "";
|
||||||
PREBINDING = NO;
|
PREBINDING = NO;
|
||||||
SDKROOT = macosx10.4;
|
SDKROOT = macosx10.4;
|
||||||
};
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -231,6 +231,8 @@
|
||||||
<key>Layout</key>
|
<key>Layout</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BecomeActive</key>
|
||||||
|
<true/>
|
||||||
<key>ContentConfiguration</key>
|
<key>ContentConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PBXBottomSmartGroupGIDs</key>
|
<key>PBXBottomSmartGroupGIDs</key>
|
||||||
|
@ -271,9 +273,11 @@
|
||||||
<string>08FB7795FE84155DC02AAC07</string>
|
<string>08FB7795FE84155DC02AAC07</string>
|
||||||
<string>C6859EA2029092E104C91782</string>
|
<string>C6859EA2029092E104C91782</string>
|
||||||
<string>08FB779DFE84155DC02AAC07</string>
|
<string>08FB779DFE84155DC02AAC07</string>
|
||||||
<string>08FB779EFE84155DC02AAC07</string>
|
|
||||||
<string>1AB674ADFE9D54B511CA2CBB</string>
|
<string>1AB674ADFE9D54B511CA2CBB</string>
|
||||||
<string>1C37FBAC04509CD000000102</string>
|
<string>1C37FBAC04509CD000000102</string>
|
||||||
|
<string>5671655C0EFE9A030047EA2B</string>
|
||||||
|
<string>5671676C0EFEDC740047EA2B</string>
|
||||||
|
<string>5671672E0EFECD7F0047EA2B</string>
|
||||||
<string>1C37FAAC04509CD000000102</string>
|
<string>1C37FAAC04509CD000000102</string>
|
||||||
<string>1C77FABC04509CD000000102</string>
|
<string>1C77FABC04509CD000000102</string>
|
||||||
<string>1C3E0DCA080725EA00A55177</string>
|
<string>1C3E0DCA080725EA00A55177</string>
|
||||||
|
@ -281,8 +285,7 @@
|
||||||
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
||||||
<array>
|
<array>
|
||||||
<array>
|
<array>
|
||||||
<integer>2</integer>
|
<integer>15</integer>
|
||||||
<integer>1</integer>
|
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</array>
|
</array>
|
||||||
</array>
|
</array>
|
||||||
|
@ -315,14 +318,12 @@
|
||||||
<key>Dock</key>
|
<key>Dock</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>BecomeActive</key>
|
|
||||||
<true/>
|
|
||||||
<key>ContentConfiguration</key>
|
<key>ContentConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PBXProjectModuleGUID</key>
|
<key>PBXProjectModuleGUID</key>
|
||||||
<string>567162000EFD3EA50047EA2B</string>
|
<string>567162000EFD3EA50047EA2B</string>
|
||||||
<key>PBXProjectModuleLabel</key>
|
<key>PBXProjectModuleLabel</key>
|
||||||
<string>SC3Controller.m</string>
|
<string>install.rb</string>
|
||||||
<key>PBXSplitModuleInNavigatorKey</key>
|
<key>PBXSplitModuleInNavigatorKey</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Split0</key>
|
<key>Split0</key>
|
||||||
|
@ -330,20 +331,23 @@
|
||||||
<key>PBXProjectModuleGUID</key>
|
<key>PBXProjectModuleGUID</key>
|
||||||
<string>567162010EFD3EA50047EA2B</string>
|
<string>567162010EFD3EA50047EA2B</string>
|
||||||
<key>PBXProjectModuleLabel</key>
|
<key>PBXProjectModuleLabel</key>
|
||||||
<string>SC3Controller.m</string>
|
<string>install.rb</string>
|
||||||
<key>_historyCapacity</key>
|
<key>_historyCapacity</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>bookmark</key>
|
<key>bookmark</key>
|
||||||
<string>567167100EFEC8B00047EA2B</string>
|
<string>5671677C0EFEDCBF0047EA2B</string>
|
||||||
<key>history</key>
|
<key>history</key>
|
||||||
<array>
|
<array>
|
||||||
<string>567164430EFE8E370047EA2B</string>
|
<string>567164430EFE8E370047EA2B</string>
|
||||||
<string>567165460EFE996B0047EA2B</string>
|
<string>567165460EFE996B0047EA2B</string>
|
||||||
<string>567166740EFEAFD20047EA2B</string>
|
|
||||||
<string>567166FD0EFEC78D0047EA2B</string>
|
<string>567166FD0EFEC78D0047EA2B</string>
|
||||||
<string>5671670A0EFEC8B00047EA2B</string>
|
|
||||||
<string>5671670B0EFEC8B00047EA2B</string>
|
<string>5671670B0EFEC8B00047EA2B</string>
|
||||||
<string>5671670C0EFEC8B00047EA2B</string>
|
<string>567167290EFECD490047EA2B</string>
|
||||||
|
<string>5671676D0EFEDC740047EA2B</string>
|
||||||
|
<string>5671676E0EFEDC740047EA2B</string>
|
||||||
|
<string>5671676F0EFEDC740047EA2B</string>
|
||||||
|
<string>567167790EFEDCBF0047EA2B</string>
|
||||||
|
<string>5671677A0EFEDCBF0047EA2B</string>
|
||||||
</array>
|
</array>
|
||||||
<key>prevStack</key>
|
<key>prevStack</key>
|
||||||
<array>
|
<array>
|
||||||
|
@ -421,6 +425,13 @@
|
||||||
<string>5671670D0EFEC8B00047EA2B</string>
|
<string>5671670D0EFEC8B00047EA2B</string>
|
||||||
<string>5671670E0EFEC8B00047EA2B</string>
|
<string>5671670E0EFEC8B00047EA2B</string>
|
||||||
<string>5671670F0EFEC8B00047EA2B</string>
|
<string>5671670F0EFEC8B00047EA2B</string>
|
||||||
|
<string>5671672A0EFECD490047EA2B</string>
|
||||||
|
<string>5671672B0EFECD490047EA2B</string>
|
||||||
|
<string>5671672C0EFECD490047EA2B</string>
|
||||||
|
<string>567167710EFEDC740047EA2B</string>
|
||||||
|
<string>567167720EFEDC740047EA2B</string>
|
||||||
|
<string>567167730EFEDC740047EA2B</string>
|
||||||
|
<string>5671677B0EFEDCBF0047EA2B</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SplitCount</key>
|
<key>SplitCount</key>
|
||||||
|
@ -515,7 +526,7 @@
|
||||||
<key>GeometryConfiguration</key>
|
<key>GeometryConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{10, 27}, {1473, 180}}</string>
|
<string>{{10, 27}, {1473, 218}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Module</key>
|
<key>Module</key>
|
||||||
<string>PBXBuildResultsModule</string>
|
<string>PBXBuildResultsModule</string>
|
||||||
|
@ -731,8 +742,6 @@
|
||||||
<integer>5</integer>
|
<integer>5</integer>
|
||||||
<key>WindowOrderList</key>
|
<key>WindowOrderList</key>
|
||||||
<array>
|
<array>
|
||||||
<string>567165EC0EFEA8780047EA2B</string>
|
|
||||||
<string>567165ED0EFEA8780047EA2B</string>
|
|
||||||
<string>567165D60EFEA7DD0047EA2B</string>
|
<string>567165D60EFEA7DD0047EA2B</string>
|
||||||
<string>567165D70EFEA7DD0047EA2B</string>
|
<string>567165D70EFEA7DD0047EA2B</string>
|
||||||
<string>/Developer/Projects/sc3ctrl/sc3ctrl.xcodeproj</string>
|
<string>/Developer/Projects/sc3ctrl/sc3ctrl.xcodeproj</string>
|
||||||
|
|
Loading…
Reference in New Issue