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/App.h"
|
||||||
#include "cinder/app/RendererGl.h"
|
#include "cinder/app/RendererGl.h"
|
||||||
#include "cinder/gl/gl.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;
|
||||||
using namespace ci::app;
|
using namespace ci::app;
|
||||||
using namespace std;
|
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:
|
public:
|
||||||
void setup() override;
|
VoiceMachineApp();
|
||||||
void mouseDown( MouseEvent event ) override;
|
void setup() override;
|
||||||
void update() override;
|
void update() override;
|
||||||
void draw() 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 */; };
|
00B784B60FF439BC000DE1D7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B784B20FF439BC000DE1D7 /* CoreAudio.framework */; };
|
||||||
00B9955A1B128DF400A5C623 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B995581B128DF400A5C623 /* IOKit.framework */; };
|
00B9955A1B128DF400A5C623 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B995581B128DF400A5C623 /* IOKit.framework */; };
|
||||||
00B9955B1B128DF400A5C623 /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B995591B128DF400A5C623 /* IOSurface.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 */; };
|
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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference 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; };
|
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; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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; };
|
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; };
|
A43DE166BACA4EFFBF60EEAD /* Osc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Osc.h; path = ../blocks/OSC/src/cinder/osc/Osc.h; sourceTree = "<group>"; };
|
||||||
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; name = CinderApp.icns; path = ../resources/CinderApp.icns; sourceTree = "<group>"; };
|
||||||
AE451D503FF042C9AE08908C /* CinderApp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ../resources/CinderApp.icns; sourceTree = "<group>"; name = CinderApp.icns; };
|
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; name = voicemachineApp.cpp; path = ../src/voicemachineApp.cpp; sourceTree = "<group>"; };
|
||||||
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>"; };
|
||||||
BA89722D261F445CBA3D8E1C /* voicemachine_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = "\"\""; path = voicemachine_Prefix.pch; sourceTree = "<group>"; name = voicemachine_Prefix.pch; };
|
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; path = ../blocks/OSC/src/cinder/osc/Osc.cpp; sourceTree = "<group>"; name = Osc.cpp; };
|
EEED49B18AF14821BF61F719 /* Osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.cpp; name = Osc.cpp; path = ../blocks/OSC/src/cinder/osc/Osc.cpp; sourceTree = "<group>"; };
|
||||||
A43DE166BACA4EFFBF60EEAD /* Osc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ../blocks/OSC/src/cinder/osc/Osc.h; sourceTree = "<group>"; name = Osc.h; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -72,9 +72,19 @@
|
|||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
01B97315FEAEA392516A2CEA /* Blocks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
674D71528C1B4016B5E8F7A8 /* OSC */,
|
||||||
|
);
|
||||||
|
name = Blocks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
080E96DDFE201D6D7F000001 /* Source */ = {
|
080E96DDFE201D6D7F000001 /* Source */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
8C053D7D27E7402800BE7270 /* Voice.cpp */,
|
||||||
|
8C053D7C27E7402800BE7270 /* Voice.h */,
|
||||||
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */,
|
B0C0230F695948E8B2D6A7B3 /* voicemachineApp.cpp */,
|
||||||
);
|
);
|
||||||
name = Source;
|
name = Source;
|
||||||
@ -128,47 +138,6 @@
|
|||||||
name = voicemachine;
|
name = voicemachine;
|
||||||
sourceTree = "<group>";
|
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 */ = {
|
29B97315FDCFA39411CA2CEA /* Headers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -196,6 +165,39 @@
|
|||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
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 */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -222,6 +224,8 @@
|
|||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
};
|
||||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "voicemachine" */;
|
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "voicemachine" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = English;
|
developmentRegion = English;
|
||||||
@ -259,6 +263,7 @@
|
|||||||
files = (
|
files = (
|
||||||
14BED3D2B12E45A98475E9EA /* voicemachineApp.cpp in Sources */,
|
14BED3D2B12E45A98475E9EA /* voicemachineApp.cpp in Sources */,
|
||||||
61BC22F18F324E6E8815BD34 /* Osc.cpp in Sources */,
|
61BC22F18F324E6E8815BD34 /* Osc.cpp in Sources */,
|
||||||
|
8C053D7E27E7402800BE7270 /* Voice.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -269,17 +274,17 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEAD_CODE_STRIPPING = YES;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
|
||||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
INFOPLIST_FILE = Info.plist;
|
INFOPLIST_FILE = Info.plist;
|
||||||
INSTALL_PATH = "$(HOME)/Applications";
|
INSTALL_PATH = "$(HOME)/Applications";
|
||||||
@ -301,12 +306,12 @@
|
|||||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 3;
|
GCC_OPTIMIZATION_LEVEL = 3;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"NDEBUG=1",
|
"NDEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
|
||||||
GCC_PREFIX_HEADER = voicemachine_Prefix.pch;
|
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
INFOPLIST_FILE = Info.plist;
|
INFOPLIST_FILE = Info.plist;
|
||||||
INSTALL_PATH = "$(HOME)/Applications";
|
INSTALL_PATH = "$(HOME)/Applications";
|
||||||
@ -333,10 +338,7 @@
|
|||||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
USER_HEADER_SEARCH_PATHS = (
|
USER_HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\" ../include ../blocks/OSC/src";
|
||||||
"\"$(CINDER_PATH)/include\" ../include",
|
|
||||||
../blocks/OSC/src,
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@ -352,10 +354,7 @@
|
|||||||
HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\"";
|
HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\"";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
USER_HEADER_SEARCH_PATHS = (
|
USER_HEADER_SEARCH_PATHS = "\"$(CINDER_PATH)/include\" ../include ../blocks/OSC/src";
|
||||||
"\"$(CINDER_PATH)/include\" ../include",
|
|
||||||
../blocks/OSC/src,
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user