haha
This commit is contained in:
parent
efb3bfd43b
commit
4ed3ee2435
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.DS_Store
|
||||
118
src/Voice.cpp
Normal file
118
src/Voice.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
#include "Voice.h"
|
||||
|
||||
void Voice::setup(Receiver &receiver)
|
||||
{
|
||||
_font = Font(_font_name, _size);
|
||||
_tex = gl::TextureFont::create(_font);
|
||||
|
||||
/*- NET -*/
|
||||
receiver.setListener(_channel + "/utterance",
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_utterance_mutex);
|
||||
std::string u = m[0].string();
|
||||
if(_utterance != u) {
|
||||
_utterance = u;
|
||||
_utterance_cb(this);
|
||||
}
|
||||
});
|
||||
|
||||
receiver.setListener(_channel + "/font/color",
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_color_mutex);
|
||||
float a = m[0].flt();
|
||||
float r = m[1].flt();
|
||||
float g = m[2].flt();
|
||||
float b = m[3].flt();
|
||||
ColorA c(r, g, b, a);
|
||||
if(_color != c) {
|
||||
_color = c;
|
||||
_change_cb(this);
|
||||
console() << _name << ": change color" << endl;
|
||||
console() << r << ", " << g << ", " << b << ", " << a << endl;
|
||||
}
|
||||
});
|
||||
|
||||
receiver.setListener(_channel + "/background",
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_color_mutex);
|
||||
float a = m[0].flt();
|
||||
float r = m[1].flt();
|
||||
float g = m[2].flt();
|
||||
float b = m[3].flt();
|
||||
ColorA c(r, g, b, a);
|
||||
if(_background != c) {
|
||||
_background = c;
|
||||
_change_cb(this);
|
||||
console() << _name << ": change background" << endl;
|
||||
console() << r << ", " << g << ", " << b << ", " << a << endl;
|
||||
}
|
||||
});
|
||||
|
||||
receiver.setListener(_channel + "/font/size",
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_font_mutex);
|
||||
int s = m[0].int32();
|
||||
if(_size != s) {
|
||||
_size = s;
|
||||
_change_cb(this);
|
||||
_update_font = true;
|
||||
console() << _name << ": change font size" << endl;
|
||||
}
|
||||
});
|
||||
|
||||
receiver.setListener(_channel + "/font/type",
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_font_mutex);
|
||||
std::string type = m[0].string();
|
||||
if(_font.getName() != type) {
|
||||
_font_name = type;
|
||||
_change_cb(this);
|
||||
_update_font = true;
|
||||
console() << _name << ": change font type" << endl;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void Voice::update()
|
||||
{
|
||||
if(_update_font){
|
||||
// need to check if the font name is valide... bof...
|
||||
_font = Font(_font_name, _size);
|
||||
_tex = gl::TextureFont::create(_font);
|
||||
_update_font = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Voice::draw(Rectf &bounds)
|
||||
{
|
||||
// gl::color(_color);
|
||||
vec2 offset = vec2(0);
|
||||
_tex->drawStringWrapped(_utterance, bounds + offset);
|
||||
}
|
||||
|
||||
void VoiceAloud::setup()
|
||||
{
|
||||
auto ctx = audio::master();
|
||||
|
||||
mFilter = ctx->makeNode( new audio::FilterLowPassNode );
|
||||
mGen = ctx->makeNode( new audio::GenSineNode );
|
||||
mGain = ctx->makeNode( new audio::GainNode );
|
||||
|
||||
mGen->setFreq( _freq );
|
||||
mFilter->setCutoffFreq(_freq / 2);
|
||||
mFilter->setResonance(0.5f);
|
||||
mGain->setValue( _amp );
|
||||
|
||||
mGen >> mFilter >> mGain >> ctx->getOutput();
|
||||
mGen->enable();
|
||||
|
||||
ctx->enable();
|
||||
|
||||
}
|
||||
|
||||
void VoiceAloud::update()
|
||||
{
|
||||
mGen->setFreq( _freq );
|
||||
mGain->setValue( _amp );
|
||||
}
|
||||
78
src/Voice.h
Normal file
78
src/Voice.h
Normal file
@ -0,0 +1,78 @@
|
||||
#ifndef _Voice_
|
||||
#define _Voice_
|
||||
|
||||
#include "cinder/gl/gl.h"
|
||||
#include "cinder/gl/TextureFont.h"
|
||||
#include "cinder/gl/GlslProg.h"
|
||||
#include "cinder/osc/Osc.h"
|
||||
#include "cinder/audio/Voice.h"
|
||||
|
||||
#include "cinder/audio/Context.h"
|
||||
#include "cinder/audio/GenNode.h"
|
||||
#include "cinder/audio/GainNode.h"
|
||||
#include "cinder/audio/FilterNode.h"
|
||||
#include "cinder/audio/NodeEffects.h"
|
||||
|
||||
#include "cinder/Timeline.h"
|
||||
|
||||
using namespace ci;
|
||||
using namespace ci::app;
|
||||
using namespace std;
|
||||
|
||||
/*- NET -*/
|
||||
using Receiver = osc::ReceiverUdp;
|
||||
|
||||
/*- Voice -*/
|
||||
class Voice {
|
||||
public:
|
||||
Voice(std::string name, std::string channel, std::string font, int size, ColorA8u color, ColorA8u background, std::function<void(Voice*)> utterance_cb, std::function<void(Voice*)> change_cb)
|
||||
: _name(name),
|
||||
_channel(channel),
|
||||
_utterance(name),
|
||||
_font_name(font),
|
||||
_size(size),
|
||||
_color(color),
|
||||
_background(background),
|
||||
_utterance_cb(utterance_cb),
|
||||
_change_cb(change_cb)
|
||||
{};
|
||||
void setup(Receiver &receiver);
|
||||
void update();
|
||||
void draw(Rectf &bounds);
|
||||
|
||||
std::string _name;
|
||||
std::string _channel;
|
||||
std::string _utterance;
|
||||
Font _font;
|
||||
std::string _font_name;
|
||||
ColorA8u _color;
|
||||
ColorA8u _background;
|
||||
int _size;
|
||||
bool _update_font = false;
|
||||
gl::TextureFontRef _tex;
|
||||
|
||||
gl::GlslProgRef _glsl;
|
||||
|
||||
std::mutex _color_mutex, _font_mutex, _utterance_mutex;
|
||||
|
||||
std::function<void(Voice*)> _utterance_cb, _change_cb;
|
||||
|
||||
audio::VoiceRef _sound;
|
||||
|
||||
};
|
||||
|
||||
class VoiceAloud {
|
||||
public:
|
||||
VoiceAloud(float freq, float amp) : _freq(freq), _amp(amp) {};
|
||||
void setup();
|
||||
void update();
|
||||
|
||||
audio::GenNodeRef mGen; // Gen's generate audio signals
|
||||
audio::FilterLowPassNodeRef mFilter;
|
||||
audio::GainNodeRef mGain; // Gain modifies the volume of the signal
|
||||
|
||||
Anim<float> _freq;
|
||||
Anim<float> _amp;
|
||||
};
|
||||
|
||||
#endif /* Voice_hpp */
|
||||
@ -1,34 +1,280 @@
|
||||
#include "cinder/app/App.h"
|
||||
#include "cinder/app/RendererGl.h"
|
||||
#include "cinder/gl/gl.h"
|
||||
#include "cinder/gl/TextureFont.h"
|
||||
#include "cinder/osc/Osc.h"
|
||||
#include "cinder/Json.h"
|
||||
#include "cinder/Log.h"
|
||||
#include "cinder/Timeline.h"
|
||||
|
||||
#include "Voice.h"
|
||||
|
||||
using namespace ci;
|
||||
using namespace ci::app;
|
||||
using namespace std;
|
||||
|
||||
class voicemachineApp : public App {
|
||||
int WINDOW_H = 1500;
|
||||
float RATIO = 0.5625;
|
||||
|
||||
|
||||
/*- NET -*/
|
||||
using Receiver = osc::ReceiverUdp;
|
||||
using protocol = asio::ip::udp;
|
||||
|
||||
std::string hexA(ColorA8u c) {
|
||||
//https://stackoverflow.com/questions/5100718/integer-to-hex-string-in-c
|
||||
uint32_t cu = c.a << 24 | c.r << 16 | c.g << 8 | c.b;
|
||||
std::stringstream hex_s;
|
||||
hex_s << "0x" << std::setfill ('0') << std::setw(sizeof(uint32_t)) << std::hex << cu;
|
||||
return hex_s.str();
|
||||
}
|
||||
|
||||
ColorA8u lerp_color(const ColorA8u &start, const ColorA8u &end, float t ) {
|
||||
uint8_t r = abs(floor(start.r + (end.r - start.r) * t));
|
||||
uint8_t g = abs(floor(start.g + (end.g - start.g) * t));
|
||||
uint8_t b = abs(floor(start.b + (end.b - start.b) * t));
|
||||
uint8_t a = abs(floor(start.a + (end.a - start.a) * t));
|
||||
return ColorA8u(r, g, b, a);
|
||||
}
|
||||
|
||||
class VoiceMachineApp : public App {
|
||||
public:
|
||||
VoiceMachineApp();
|
||||
void setup() override;
|
||||
void mouseDown( MouseEvent event ) override;
|
||||
void update() override;
|
||||
void draw() override;
|
||||
void cleanup() override;
|
||||
|
||||
void keyDown( KeyEvent event ) override;
|
||||
|
||||
void stage_config();
|
||||
void save_config();
|
||||
|
||||
void utterance(Voice* v);
|
||||
void change(Voice* v);
|
||||
void clear();
|
||||
|
||||
std::map<std::string, Voice*> _map_voices;
|
||||
Voice* _current_voice = NULL;
|
||||
|
||||
Anim<ColorA8u> _background = ColorA8u::black();
|
||||
Anim<ColorA8u> _voice_color = ColorA8u::white();
|
||||
|
||||
// ColorA8u _background = ColorA8u::black();
|
||||
// ColorA8u _voice_color = ColorA8u::white();
|
||||
|
||||
|
||||
/*- NET -*/
|
||||
std::shared_ptr<asio::io_service> _io_service;
|
||||
std::shared_ptr<asio::io_service::work> _work;
|
||||
std::thread _thread;
|
||||
std::shared_ptr<Receiver> _receiver;
|
||||
std::map<uint64_t, protocol::endpoint> _connections;
|
||||
std::mutex _command_mutex;
|
||||
|
||||
// VoiceAloud audio = VoiceAloud(100, 0.5f);
|
||||
|
||||
};
|
||||
|
||||
void voicemachineApp::setup()
|
||||
VoiceMachineApp::VoiceMachineApp()
|
||||
: _io_service(new asio::io_service),
|
||||
_work(new asio::io_service::work(*_io_service))
|
||||
// _receiver(PORT, protocol::v4(), *_io_service)
|
||||
{}
|
||||
|
||||
void VoiceMachineApp::stage_config()
|
||||
{
|
||||
try {
|
||||
const JsonTree config(loadAsset("voice.config.json"));
|
||||
|
||||
// RECEIVER PORT
|
||||
int port = config["port_voicemachine"].getValue<int>();
|
||||
_receiver = std::shared_ptr<Receiver>(new Receiver(port, protocol::v4(), *_io_service));
|
||||
|
||||
//VOICES
|
||||
for(auto &voice: config["voices"].getChildren()){
|
||||
std::string name = voice["name"].getValue();
|
||||
std::string channel = voice["osc_channel"]["root"].getValue();
|
||||
std::string font = voice["font"].getValue();
|
||||
int size = voice["size"].getValue<int>();
|
||||
std::string hexcolor = voice["color"].getValue();
|
||||
ColorA8u color = ColorA8u::hexA(std::stoul(hexcolor, nullptr, 16));
|
||||
std::string hexbackground = voice["background"].getValue();
|
||||
ColorA background = ColorA::hexA(std::stoul(hexbackground, nullptr, 16));
|
||||
|
||||
std::function<void(Voice*)> utterance_cb = [=](Voice* v) {
|
||||
this->utterance(v);
|
||||
};
|
||||
|
||||
std::function<void(Voice*)> change_cb = [=](Voice* v) {
|
||||
this->change(v);
|
||||
};
|
||||
|
||||
|
||||
Voice* v = new Voice(name, channel, font, size, color, background, utterance_cb, change_cb);
|
||||
_map_voices[name] = v;
|
||||
|
||||
// //garbage
|
||||
// _current_voice = v;
|
||||
}
|
||||
|
||||
std::string command_channel = config["command_osc_channel"].getValue();
|
||||
|
||||
_receiver->setListener(command_channel,
|
||||
[&](const osc::Message &m){
|
||||
std::lock_guard<std::mutex> lock(_command_mutex);
|
||||
std::string cmd = m[0].string();
|
||||
|
||||
console() << "command: " << cmd << endl;
|
||||
|
||||
if(cmd == "save") save_config();
|
||||
else if (cmd == "clear") clear();
|
||||
});
|
||||
|
||||
} catch (ci::Exception &exc) {
|
||||
CI_LOG_D("Failed to stage config: " << exc.what());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void voicemachineApp::mouseDown( MouseEvent event )
|
||||
void VoiceMachineApp::save_config()
|
||||
{
|
||||
try {
|
||||
JsonTree config(loadAsset("voice.config.json"));
|
||||
|
||||
JsonTree voices = config.getChild("voices");
|
||||
|
||||
for(int i = 0; i < voices.getNumChildren(); i++) {
|
||||
Voice* v = _map_voices[voices[i]["name"].getValue()];
|
||||
voices[i]["font"] = JsonTree("font", v->_font.getName());
|
||||
voices[i]["size"] = JsonTree("size", v->_size);
|
||||
voices[i]["color"] = JsonTree("color", hexA(v->_color));
|
||||
voices[i]["background"] = JsonTree("background", hexA(v->_background));
|
||||
}
|
||||
|
||||
config["voices"] = voices;
|
||||
config.write(getAssetPath("voice.config.json"));
|
||||
|
||||
CI_LOG_D("saved config");
|
||||
|
||||
} catch (ci::Exception &exc) {
|
||||
CI_LOG_D("Failed to save config: " << exc.what());
|
||||
}
|
||||
}
|
||||
|
||||
void voicemachineApp::update()
|
||||
void VoiceMachineApp::utterance(Voice* v)
|
||||
{
|
||||
console() << "utterance : " << v->_name << endl;
|
||||
if(_current_voice != v) {
|
||||
_current_voice = v;
|
||||
timeline().apply( &_voice_color, _current_voice->_color, 4.5f, EaseInSine(), lerp_color );
|
||||
timeline().apply( &_background, _current_voice->_background, 7.5f, EaseInCubic(), lerp_color ).appendTo(&_voice_color);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void voicemachineApp::draw()
|
||||
void VoiceMachineApp::change(Voice* v)
|
||||
{
|
||||
gl::clear( Color( 0, 0, 0 ) );
|
||||
console() << "change : " << v->_name << endl;
|
||||
_current_voice = v;
|
||||
_background = _current_voice->_background;
|
||||
_voice_color = _current_voice->_color;
|
||||
}
|
||||
|
||||
CINDER_APP( voicemachineApp, RendererGl )
|
||||
|
||||
void VoiceMachineApp::clear()
|
||||
{
|
||||
console() << "clearing" << endl;
|
||||
_current_voice = NULL;
|
||||
}
|
||||
|
||||
void VoiceMachineApp::setup()
|
||||
{
|
||||
|
||||
// audio.setup();
|
||||
|
||||
stage_config();
|
||||
|
||||
for(const auto& [n, v]: _map_voices)
|
||||
v->setup(*_receiver);
|
||||
|
||||
try {
|
||||
_receiver->bind();
|
||||
} catch (const osc::Exception &e) {
|
||||
CI_LOG_E("Error receiver bind: " << e.what() << " - " << e.value());
|
||||
quit();
|
||||
}
|
||||
|
||||
_receiver->listen(
|
||||
[](asio::error_code e, protocol::endpoint end) -> bool {
|
||||
if(e){
|
||||
CI_LOG_E("Error receiver listen: " << e.message() << " - " << e.value() << " - " << end);
|
||||
return false;
|
||||
} return true;
|
||||
});
|
||||
|
||||
//3. start thread
|
||||
_thread = std::thread(std::bind(
|
||||
[](std::shared_ptr<asio::io_service> &service){
|
||||
service->run();
|
||||
}, _io_service));
|
||||
}
|
||||
|
||||
void VoiceMachineApp::update()
|
||||
{
|
||||
for(const auto& [n, v]: _map_voices)
|
||||
v->update();
|
||||
|
||||
// audio.update();
|
||||
}
|
||||
|
||||
void VoiceMachineApp::draw()
|
||||
{
|
||||
gl::setMatricesWindow( getWindowSize() );
|
||||
gl::enableAlphaBlending();
|
||||
|
||||
gl::clear(_background.value());
|
||||
gl::color(_voice_color);
|
||||
|
||||
if(_current_voice){
|
||||
Rectf bounds( 40, _current_voice->_tex->getAscent() + 40, getWindowWidth() - 40, getWindowHeight() - 40 );
|
||||
_current_voice->draw(bounds);
|
||||
}
|
||||
}
|
||||
|
||||
void VoiceMachineApp::cleanup()
|
||||
{
|
||||
_work.reset();
|
||||
_io_service->stop();
|
||||
_thread.join();
|
||||
}
|
||||
|
||||
void VoiceMachineApp::keyDown( KeyEvent event )
|
||||
{
|
||||
switch( event.getChar() ) {
|
||||
case 's':
|
||||
{
|
||||
CI_LOG_D("saving config...");
|
||||
save_config();
|
||||
break;
|
||||
}
|
||||
// case '-':
|
||||
// mFont = Font( mFont.getName(), mFont.getSize() - 1 );
|
||||
// mTextureFont = gl::TextureFont::create( mFont );
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
auto settingsFunc = [](App::Settings *settings) {
|
||||
settings->setMultiTouchEnabled( false );
|
||||
settings->setFrameRate(25);
|
||||
settings->setWindowSize(int(WINDOW_H * RATIO), WINDOW_H );
|
||||
// settings->setFullScreen();
|
||||
//FullScreenOptions& exclusive( bool enable = true )
|
||||
};
|
||||
|
||||
|
||||
CINDER_APP( VoiceMachineApp, RendererGl, settingsFunc )
|
||||
|
||||
@ -16,14 +16,12 @@
|
||||
00B784B60FF439BC000DE1D7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B784B20FF439BC000DE1D7 /* CoreAudio.framework */; };
|
||||
00B9955A1B128DF400A5C623 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B995581B128DF400A5C623 /* IOKit.framework */; };
|
||||
00B9955B1B128DF400A5C623 /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B995591B128DF400A5C623 /* IOSurface.framework */; };
|
||||
5323E6B20EAFCA74003A9687 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5323E6B10EAFCA74003A9687 /* CoreVideo.framework */; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
4C873AE62C144407A9725762 /* Osc.h in Headers */ = {isa = PBXBuildFile; fileRef = A43DE166BACA4EFFBF60EEAD /* Osc.h */; };
|
||||
61BC22F18F324E6E8815BD34 /* Osc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEED49B18AF14821BF61F719 /* Osc.cpp */; };
|
||||
9694A235FF1F47B6B3C80AEC /* voicemachine_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = BA89722D261F445CBA3D8E1C /* voicemachine_Prefix.pch */; };
|
||||
7CFBE1F4D6B14DE585A12E16 /* CinderApp.icns in Resources */ = {isa = PBXBuildFile; fileRef = AE451D503FF042C9AE08908C /* CinderApp.icns */; };
|
||||
A6850AE63D214AEDA0375FB5 /* Resources.h in Headers */ = {isa = PBXBuildFile; fileRef = D36537B11C304E7DAA1E9FDD /* Resources.h */; };
|
||||
14BED3D2B12E45A98475E9EA /* voicemachineApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */; };
|
||||
5323E6B20EAFCA74003A9687 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5323E6B10EAFCA74003A9687 /* CoreVideo.framework */; };
|
||||
61BC22F18F324E6E8815BD34 /* Osc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEED49B18AF14821BF61F719 /* Osc.cpp */; };
|
||||
7CFBE1F4D6B14DE585A12E16 /* CinderApp.icns in Resources */ = {isa = PBXBuildFile; fileRef = AE451D503FF042C9AE08908C /* CinderApp.icns */; };
|
||||
8C053D7E27E7402800BE7270 /* Voice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C053D7D27E7402800BE7270 /* Voice.cpp */; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@ -37,17 +35,19 @@
|
||||
00B995581B128DF400A5C623 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
|
||||
00B995591B128DF400A5C623 /* IOSurface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOSurface.framework; path = System/Library/Frameworks/IOSurface.framework; sourceTree = SDKROOT; };
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
16410EF0C18C4B3D9B23B091 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
5323E6B10EAFCA74003A9687 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = "<absolute>"; };
|
||||
8C053D7C27E7402800BE7270 /* Voice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Voice.h; path = ../src/Voice.h; sourceTree = "<group>"; };
|
||||
8C053D7D27E7402800BE7270 /* Voice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Voice.cpp; path = ../src/Voice.cpp; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* voicemachine.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = voicemachine.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; path = ../src/voicemachineApp.cpp; sourceTree = "<group>"; name = voicemachineApp.cpp; };
|
||||
D36537B11C304E7DAA1E9FDD /* Resources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ../include/Resources.h; sourceTree = "<group>"; name = Resources.h; };
|
||||
AE451D503FF042C9AE08908C /* CinderApp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ../resources/CinderApp.icns; sourceTree = "<group>"; name = CinderApp.icns; };
|
||||
16410EF0C18C4B3D9B23B091 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; name = Info.plist; };
|
||||
BA89722D261F445CBA3D8E1C /* voicemachine_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = "\"\""; path = voicemachine_Prefix.pch; sourceTree = "<group>"; name = voicemachine_Prefix.pch; };
|
||||
EEED49B18AF14821BF61F719 /* Osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; path = ../blocks/OSC/src/cinder/osc/Osc.cpp; sourceTree = "<group>"; name = Osc.cpp; };
|
||||
A43DE166BACA4EFFBF60EEAD /* Osc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ../blocks/OSC/src/cinder/osc/Osc.h; sourceTree = "<group>"; name = Osc.h; };
|
||||
A43DE166BACA4EFFBF60EEAD /* Osc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Osc.h; path = ../blocks/OSC/src/cinder/osc/Osc.h; sourceTree = "<group>"; };
|
||||
AE451D503FF042C9AE08908C /* CinderApp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = CinderApp.icns; path = ../resources/CinderApp.icns; sourceTree = "<group>"; };
|
||||
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; name = voicemachineApp.cpp; path = ../src/voicemachineApp.cpp; sourceTree = "<group>"; };
|
||||
BA89722D261F445CBA3D8E1C /* voicemachine_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = "\"\""; path = voicemachine_Prefix.pch; sourceTree = "<group>"; };
|
||||
D36537B11C304E7DAA1E9FDD /* Resources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Resources.h; path = ../include/Resources.h; sourceTree = "<group>"; };
|
||||
EEED49B18AF14821BF61F719 /* Osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; name = Osc.cpp; path = ../blocks/OSC/src/cinder/osc/Osc.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -72,9 +72,19 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
01B97315FEAEA392516A2CEA /* Blocks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
674D71528C1B4016B5E8F7A8 /* OSC */,
|
||||
);
|
||||
name = Blocks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
080E96DDFE201D6D7F000001 /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8C053D7D27E7402800BE7270 /* Voice.cpp */,
|
||||
8C053D7C27E7402800BE7270 /* Voice.h */,
|
||||
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */,
|
||||
);
|
||||
name = Source;
|
||||
@ -128,47 +138,6 @@
|
||||
name = voicemachine;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A844FD97CE404410A8F0EE52 /* osc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EEED49B18AF14821BF61F719 /* Osc.cpp */,
|
||||
A43DE166BACA4EFFBF60EEAD /* Osc.h */,
|
||||
);
|
||||
name = osc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
62DA978992674AE3A1DE794A /* cinder */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A844FD97CE404410A8F0EE52 /* osc */,
|
||||
);
|
||||
name = cinder;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
945EEA54632045E092AADDB7 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
62DA978992674AE3A1DE794A /* cinder */,
|
||||
);
|
||||
name = src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
674D71528C1B4016B5E8F7A8 /* OSC */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
945EEA54632045E092AADDB7 /* src */,
|
||||
);
|
||||
name = OSC;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
01B97315FEAEA392516A2CEA /* Blocks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
674D71528C1B4016B5E8F7A8 /* OSC */,
|
||||
);
|
||||
name = Blocks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Headers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -196,6 +165,39 @@
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
62DA978992674AE3A1DE794A /* cinder */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A844FD97CE404410A8F0EE52 /* osc */,
|
||||
);
|
||||
name = cinder;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
674D71528C1B4016B5E8F7A8 /* OSC */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
945EEA54632045E092AADDB7 /* src */,
|
||||
);
|
||||
name = OSC;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
945EEA54632045E092AADDB7 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
62DA978992674AE3A1DE794A /* cinder */,
|
||||
);
|
||||
name = src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A844FD97CE404410A8F0EE52 /* osc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EEED49B18AF14821BF61F719 /* Osc.cpp */,
|
||||
A43DE166BACA4EFFBF60EEAD /* Osc.h */,
|
||||
);
|
||||
name = osc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@ -222,6 +224,8 @@
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "voicemachine" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
@ -259,6 +263,7 @@
|
||||
files = (
|
||||
14BED3D2B12E45A98475E9EA /* voicemachineApp.cpp in Sources */,
|
||||
61BC22F18F324E6E8815BD34 /* Osc.cpp in Sources */,
|
||||
8C053D7E27E7402800BE7270 /* Voice.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -269,17 +274,17 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
@ -301,12 +306,12 @@
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 3;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"NDEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
@ -333,10 +338,7 @@
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
USER_HEADER_SEARCH_PATHS = (
|
||||
"\"$(CINDER_PATH)/include\" ../include",
|
||||
../blocks/OSC/src,
|
||||
);
|
||||
USER_HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\" ../include ../blocks/OSC/src";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -352,10 +354,7 @@
|
||||
HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\"";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
SDKROOT = macosx;
|
||||
USER_HEADER_SEARCH_PATHS = (
|
||||
"\"$(CINDER_PATH)/include\" ../include",
|
||||
../blocks/OSC/src,
|
||||
);
|
||||
USER_HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\" ../include ../blocks/OSC/src";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user