danomatika / ofxpd Goto Github PK
View Code? Open in Web Editor NEW(maintained) a Pure Data addon for OpenFrameworks using libpd
License: Other
(maintained) a Pure Data addon for OpenFrameworks using libpd
License: Other
"We found that your app auto-disables the shutter sound of the camera when a photo is taken..."
this probably is due to the background mode that is on by default.
How to disable the pd background audio (eg. mixingEnabled:NO in obj-C)?
ofxPd needs a license. I'm thinking BSD or LGPL since I want to be able to use it on iOS.
Hi Dan et al
Theres an issue with ofxPD + OF9
Heres a Gist of the message i get:
https://gist.github.com/Miles-Tone/e114223389d07d470fbf
This happens when compiling for iOS device or archiving, on old projects as well as newly created examples
This did not work
config.make has no such USER_CFLAGS USER_LDFLAGS or USER_LIBS
and after adding them new to config.make the project will build but no object files are created nor anything in bin like debug or release
????
thanks
"
For Linux (Makefiles & Codeblocks):
edit addons.make in your project folder and add the following line to the end of the file:
ofxPd
edit config.make in your project folder and change the lines for USER_CFLAGS, USER_LDFLAGS and USER_LIBS to:
USER_CFLAGS = -DHAVE_UNISTD_H -DUSEAPI_DUMMY -DPD -shared
USER_LDFLAGS = --export-dynamic
USER_LIBS = -ldl -lm
"
I'm not sure if this is iOS only, but for some reason when running in PD [delread] reads at one speed and on an iOS device it reads at around 1/2.
You can test this by using a delwrite of 2000 and delread of 400. The delay is much slower on the device.
Hard to say if this is libPD, ofxPD, or some other anomaly.
I'm having a hard time tracking down whether this is a ofxPd issue or libpd issue, but I'm doing a sendList to pd and for some reason it's being received twice in the patch. I have a print in libpd showing that it only sends once and a print inside the patch and it's printing twice. Has this been seen before?
I'm using OF0071 on Windows7, Codeblocks-mingw
Any app using ofxPd crashes on exit
Error message in debug mode:
#0 76F68C39 ntdll!RtlUpcaseUnicodeChar() (C:\Windows\system32\ntdll.dll:??)
#1 00000000 0x0081d008 in _argv() (??:??)
#2 00000000 0x0081d00c in mutex() (??:??)
#3 00000000 0x00000000 in ??() (??:??)
adding this to the ofxPd source "solves" the problem:
seems that calling _LOCK, _UNLOCK causes the error:
seeking for the real solution...
void ofxPd::clear() { #ifndef TARGET_WIN32 _LOCK(); if(inputBuffer != NULL) { delete[] inputBuffer; inputBuffer = NULL; } PdBase::clear(); _UNLOCK(); #endif channels.clear(); // add default global channel Channel c; channels.insert(make_pair(-1, c)); }
I started this addon with OF 007 in mind but after some calls for built in 0062 compatibility, I agree it would be good to have. I will start on this very soon and separate the code into branches to split the differences if needed.
Here's info from user Seth on the OF forums on getting the current code to build in 0062 for now:
Just wanted to let you know I have it running in 0062. Only minor changes really, and one fix in that the libpd_init_audio ticks_per_buffer need to be set dynamically (not always 1). There's a problem with the simulator on iOS and so ticks_per_buffer > need to be set to 512/ofxPD::getBlocksize();
If you want the code, I can package it up in a day or two. The thing above is the only real change - other than I just commented out the ofLog stuff since that's 007 only and then call process() from testApp's audioRequested().
Should there be built in thread safety? It could be implemented using a Poco::Mutex. Currently there is a pthread_mutex used for Linux only.
Hello,
I am unable to run the examples on xCode 6.1 with OSX 10.10. I wonder if it is the version of my xCode or OSX that affects it.
Cheers,
Karen
Hi,
I'm getting this errors while trying to compile ofxPd in Raspbian Jessie:
/home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:57:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::clear()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:63:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:65:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::addToSearchPath(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:71:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:73:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::clearSearchPath()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:77:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:79:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual pd::Patch pd::PdBase::openPatch(const string&, const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:84:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:88:17: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:92:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::closePatch(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:103:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:107:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::closePatch(pd::Patch&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:114:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:116:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘bool pd::PdBase::processRaw(const float*, float*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:122:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘bool pd::PdBase::processShort(int, const short int*, short int*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:127:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘bool pd::PdBase::processFloat(int, const float*, float*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:132:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘bool pd::PdBase::processDouble(int, const double*, double*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:138:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::computeAudio(bool)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:145:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:147:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::subscribe(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:158:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:160:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::unsubscribe(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:178:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:180:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::unsubscribeAll()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:195:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:199:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘void pd::PdBase::setReceiver(pd::PdReceiver*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:214:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:216:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘void pd::PdBase::setMidiReceiver(pd::PdMidiReceiver*)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:220:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:222:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendBang(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:227:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:229:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendFloat(const string&, float)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:233:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:235:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendSymbol(const string&, const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:239:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:241:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::startMessage()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:254:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:259:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::addFloat(float)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:281:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:283:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::addSymbol(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:307:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:309:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::finishList(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:328:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:330:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::finishMessage(const string&, const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:350:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:352:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendList(const string&, const pd::List&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:368:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:370:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:375:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < list.len(); ++i) { ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendMessage(const string&, const string&, const pd::List&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:394:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:396:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:401:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < list.len(); ++i) { ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendNoteOn(int, int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:413:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:415:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendControlChange(int, int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:419:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:421:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendProgramChange(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:425:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:427:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendPitchBend(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:431:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:433:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendAftertouch(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:437:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:439:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendPolyAftertouch(int, int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:443:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:445:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendMidiByte(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:450:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:452:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendSysex(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:456:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:458:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::sendSysRealTime(int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:462:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:464:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘int pd::PdBase::arraySize(const string&)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:685:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual bool pd::PdBase::readArray(const string&, std::vector<float>&, int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:696:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:722:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(dest.size() != readLen) { ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual bool pd::PdBase::writeArray(const string&, std::vector<float>&, int, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:736:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘virtual void pd::PdBase::clearArray(const string&, int)’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:771:12: error: ‘_GUARD’ was not declared in this scope _GUARD(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘void pd::PdBase::lock()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:811:11: error: ‘_LOCK’ was not declared in this scope _LOCK(); ^ /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp: In member function ‘void pd::PdBase::unlock()’: /home/pi/Documents/of_v0.9.3_linuxarmv6l_release/addons/ofxPd/libs/libpd/cpp/PdBase.cpp:815:13: error: ‘_UNLOCK’ was not declared in this scope _UNLOCK();
Any idea of what might be happening?
Hey,
Im getting a bad access code when opening the pd patch, the error showing on every step of the file loading. This happens when building for IOS release, debug works fine. Do you know how to fix this?
Tutorial says to link 'ofxPd/libs' with new Xcode projects. No such directory?
PD uses midi channels 1-16 while libpd uses 0-15. The channel numbers should match.
I'm thinking of wrapping the ofx pd types in an ofx::pd namespace. Does this make sense?
I tried to include ofxPD in a Project but I became a linker error, 30 duplicate symbols. I tried to compile the examples, but was the same, again 30 duplicate symbols.
I found some similar posts, but I couldn't find any solutions. I looks like there is a problem with "g_list_all.h" . I follow the instructions from Readme file. The errors are lister below.
I'm working with OF 0.98 on OSX Sierra, Xcode 8.3, ofxPd was compiled with the following flags: -DHAVE_UNISTD_H -DUSEAPI_DUMMY -DPD -DLIBPD_EXTRA -DLIBPD_USE_STD_MUTEX -DHAVE_LIBDL
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_array.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_bang.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_canvas.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_clone.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_editor.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_graph.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_guiconnect.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_hdial.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_hslider.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_io.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_mycanvas.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_numbox.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_readwrite.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_rtext.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_scalar.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_template.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_text.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_toggle.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_traversal.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_vdial.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_vslider.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
g_vumeter.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
m_binbuf.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
m_pd.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
s_inter.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
s_loader.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
x_array.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
x_misc.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
x_scalar.o
duplicate symbol glistreloadingabstraction in:
g_all_guis.o
x_text.o
ld: 30 duplicate symbols for architecture x86_64
Hi, I found out ofxPd app crashes randomly while opening/closing Pd patches using pd.openPatch() and pd.closePatch() on Mac OSX.
Here's a simple example code you can test.
In ofApp.h
ofxPd pd;
Patch patch;
bool isPatchOpened;
int keyCount;
in ofApp.cpp
//--------------------------------------------------------------
void ofApp::setup() {
ofSetFrameRate(60);
ofSetVerticalSync(true);
int ticksPerBuffer = 8;
int numInputs = 1;
ofSoundStreamSetup(2, numInputs, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);
if(!pd.init(2, numInputs, 44100, ticksPerBuffer, false)) {
OF_EXIT_APP(1);
}
pd.addReceiver(*this);
pd.start();
isPatchOpened = false;
}
//--------------------------------------------------------------
void ofApp::update() {
if (!isPatchOpened) {
patch = pd.openPatch("pd/test.pd");
isPatchOpened = true;
}
else {
pd.closePatch(patch);
isPatchOpened = false;
}
cout << "keyCount : " << ++keyCount << endl;
}
//--------------------------------------------------------------
void ofApp::draw() {
ofSetColor(0, 255, 0);
ofDrawRectangle(100, 100, 200, 200);
if (isPatchOpened) {
ofSetColor(255, 0, 0);
ofDrawCircle(200, 200, 100);
}
}
If you run the app, it will try to open and close a pd patch every frame.
At some point, you will see the app crashing.
It seemed like the heavier patch I use, the earlier the crash occurred.
So if you want to see the crash earlier, you can simply create [osc~] x 100 times on the empty patch and try with it.
I also tested this on iOS and Android but they both seemed to be working fine.
So I'm guessing that it is a Mac OSX specific problem.
I used OF v0.9.8 on Mac OSX 10.11.6.
I really hope it can be fixed.
Thank you.
I'm having trouble getting ofxPd to work with a variable audio channel setup. I have a Pd patch configured so that the user can select the input and/or output channels (1-16) via a message from OF. This works fine when I'm using my interface that has 2 mic inputs; I just set the number of inputs via the following method:
pd->setup(2, 2, 44100, ticksPerBuffer);
and I'm able to select between two inputs with no problems.
However, I would like to configure it so that it can be using on interfaces that support up to 16 channels of audio. When I try to specify 16 channels of audio in OF using the following method:
setup(16, 16, 44100, ticksPerBuffer);
I get no sound at all on any channels. I'm using an interface that doesn't support 16 channels, so I'm guessing that's the problem. Is this assumption correct? If so, is there a way to dynamically set the number of channels? If not, what else might be the cause of the issue?
Update ofxPd for 0071 api changes and setup/test using the Project Generator to create the example projects.
under "How to Create a New ofxPd Project" in the readme, it says:
To develop your own project based on ofxPd, simply copy the example project and rename it. You probably want to put it in your apps folder, for example, after copying:
openFrameworks/addons/ofxPd/example/ => openFrameworks/apps/myApps/example/
i find that there is no "example" folder in the ofxPd folder.
there's pdExample and pdExampleIOS
ali
I am not seeing the visual studio 2010 solution file in the example directory. Might have been lost somewhere along the way?
ofxPoco is a dependency in 0.10+ need to add them to the addons.make files.
Hi, first of all thank you for your amazing work.
I could successfully build and run ofxPd on Android device.
But I found out that my app crashes as soon as I press back button on my phone.
This is the logcat message when the app crashes.
06-30 00:11:35.851 14319-14349/? A/libc: Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1), thread 14349 (Thread-50619)
If I don't initialize pd, the app didn't crash.
But once it is initialized with pd.init(), even if I close patch and stop audio, the crash still occured.
Any advise or guidance would be greatly appreciated.
Thank you so much!
When sending a list at a high rate (every 20ms or so) the app will crash with “EXC_BAD_ACCESS” at the line ADD_ARG(SETFLOAT); in z_libpd.c
void sendListFunction(){
pdRef->startList("PlayList");
for(int i = 0; i < 15; i++){
pdRef->addFloat(1);
pdRef->addFloat(2);
}
pdRef->finish();
}
I haven't been able to get more debug information than that. The SETFLOAT value seems to be valid so I'm not sure why it'd be crashing. I initially thought maybe it was trying to send a new list before the previous was sent, but that's not the case since bMsgInProgress stops that from happening. This only occurs if sending quickly. If sending at a slow rate there isn't an issue.
Currently there is a simple callback-based event listener with a callback for each message type. I propose a single callback where a message object and type enum is used to determine the type and how to parse the data.
void pdMessageRecieved(ofxPdMessage& message) { switch(message.type) { case OFX_PD_BANG: ... break; case OFX_PD_NOTEON: ... break; ...
fs df sdf ds fds fsd fsd
Right now on audioInput and audioOutput we check to make sure channels and bufferSize are correct and if not, then we re-init with the correct ones. We may also need to include samplerate in that since samplerate can change (especially on iOS) when you switch between devices (airplay, iphone, bluetooth, etc).
Changing
to
seems to fix it.
Hi,
I have CB::12.11 and OF 0.8 on a freshly installed Win7 computer.
ofxPd examples didn't compile because of pthread.h missing. Had a quick research (here too https://github.com/danomatika/ofxPd/issues/new) and had it to compile with this workaround. Not the cleanest solution, but hei! It worked.
Since there are no official distributions for codeblocks on windows, could you provide visual studio 2015 compatible instructions, ore any hints on what it would take to make this addon work with a windows machine and the latest releases of openframeworks? anything is much appreciated :)
The filter in question is from rjlib. We had a patch running well on an iPhone4, but when the filter was turned on it permanently broke the patch - audio cut out until the app was reloaded. An example can be found at http://sharktracks.co.uk/projects/audio/errors/filtertest_list.zip
Hi, I'm trying to send float to reverb but doesn't work, I do the same with a delay and it woks and is the same process.
Here you can see some screenshot from my project.
patch of pd:
source code in OF:
I think the value of sendFloat works properly, because when I print it on the consol it shows the correct number
Do you know how can I solve it?
Thanks
I received this once when trying to send a bunch of messages very quickly.
malloc: *** error for object 0xeee340: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug
It stopped on line:
"msgDest = dest;" in ofxPd::startList function.
To compile successfully, the pure-data files need to have some definitions: they have been set correctly in the add-on example, and they are defined in addon_config.mk, but using the OF project generator they end up in "Other C++ flags" instead of "Other C Flags"
ADDON_CFLAGS = -DHAVE_UNISTD_H -DUSEAPI_DUMMY -DPD
Is there another line to specify the "Other C Flags" in the addon_config.mk? or is it the project generator making no difference between C++ and C flags and always lumping them as C++ Flags? either way, a project built with the ofxPd addon added to the project generator won't compile out of the box
It would be nice to have automatic type handling via the C++ stream operator <<:
pd << BeginMsg() << "a string" << 100 << 2929.22 << EndMsg();
Also, BeginMsg could take a receive object as the target:
pd << ofxPdBeginMsg("receive1") ...
Hi,
I'm having multiple issue running the examples.
Is ofxPd known to work on current iOS devices with OF 0.9.8?
I experienced some strange issues when trying to compile this Addon on xcode 6.0.1.
First, I get issues when trying to compile files with the ~ in the group-(folder)-name. For example at bonk~.
I removed the issuing groups from the project, and compiling steps further.
Then I got next issue at the file s_file.c.
It says:
addons/ofxPd/libs/libpd/pure-data/src/s_file.c:234 Variable has incomplete type 'struct stat'
After a deeper analysis I figured out, that this lines here somehow seems to make problems in Xcode.
s_file.c, line 19 ff:
I have the suspicion, that the #ifdef HAVE_UNISTD_H is not recognized proper. (I already added the compiler-flag -DHAVE_UNISTD_H)
When I try the open the linked file 'sys/stat.h', xcode says "symbol not found". But when I make this here:
// #ifdef HAVE_UNISTD_H
// #endif
Then not only the project compiles nicely, but also Xcode finds the liked files. Is this an Xcode-issue? Does somebody else experiences this?
BTW: I was also wondering, why sys/types.h and sys/stat.h is included 2x....
Actually I tested the ofxpd ios example and the openframeworks audiooutputexample.
With the ofxpd every system sound isn't played at all (eg. keyboard clicks, shutter sound, etc.), with the audiooutputexample everythings works fine...
I'm testing on iphone 4 with ios 6.1
Seems like the libpd in ofxpd is initialized with mixingEnabled:YES but can't find it anywhere in the project.
Any chance to get rid of this behaviour?
On iOS, the preferred/requested buffer size may not be the one the OS will use and other apps have the ability to change the size.
If PD's ticksPerBuffer is using the preferred size and not the actual, it'll cause a mismatch.
We need a way to update the ticksPerBuffer so that it matches the actual size the OS is using. I believe the ticksPerBuffer (on iOS at least) should always be sampleRate/actualBufferSize.
What's the easiest way to change the ticksPerBuffer size on the fly?
The example app hangs on exit in both OF 0062 and 007.
hi dan,
in my patch I use a lot of tables and load 2GB of sound files to them using soundfiler object when the patch is opened and at the same time I start dsp inside the patch, using ";pd dsp 1" message in a message box connected to a loadbang. It always produces a crash.
Mac OS 10.12, of0.9.8, Xcode8
com.apple.audio.IOThread.client EXC_BAD_ACCESS.
Sending a pitchbend value of 2000 from ofxPD yields a value of 10192 in PD. The numbers should match.
hi dan.
i ran into problems compiling ofxPd under Raspbian GNU/Linux 8 on a raspberry pi.
needed to include an additional header (bits/sigaction.h
) and add some defines for it to compile.
as far as i can see it should not be necessary to include sigaction.h,
it should be included by signal.h. not sure whats going on. to include it explicitly resolved my issues, but makes problems on other platforms.
it looks like BYTE_ORDER
and LITTLE_ENDIAN
are not defined (anymore?), so i needed to set the defines:
#define BYTE_ORDER __BYTE_ORDER
#define LITTLE_ENDIAN __LITTLE_ENDIAN
h_addr
could not be resolve, so a define for this also helped:
#ifndef h_addr
#define h_addr h_addr_list[0] /* for backward compatibility */
#endif
and no define for u_short, so:
#ifndef u_short
#define u_short unsigned short
#endif
it works, but looks a bit hackish.
i wonder if the problems could be resolved a bit nicer.
apart from the sigaction.h
include it would be just some ifdefs (not much to worry about)
if there is a nicer solution for the include, i could offer a PR.
any ideas?
Hello,
I've downloaded the latest version of ofxPd from Github repository (danomatika-ofxPd-007-47-g92869c8). When I compile the ofxPd codeblocks example project for Windows I get this error: "undefined reference to `SetDllDirectory'". The declaration of the SetDllDirectory function is in the winbase.h header file (in pure-data/src):
and in ofConstants.h (openFrameworks/utils) there is:
# define _WIN32_WINNT 0x400
so it seems like _WIN32_WINNT is not defined.
I've tested the project on Windows 7 and XP.
My solution is to insert "_WIN32_WINNT=0x0502" in the "#define" section of Codeblocks project build options.
Does anyone have the same problem?Is there another way to fix it?
Thank you!
Here's an example pd file:
after some adjustments to to find all dependencies, i'm getting stuck with this error:
/Users/ali/GoogleDrive/Development/of_v0.8.4_ios_release/apps/myApps/example/src/AppCore.h:64:3: No template named 'vector'; did you mean 'std::vector'?
and this one:
/Users/ali/GoogleDrive/Development/of_v0.8.4_ios_release/apps/myApps/example/src/testApp.cpp:13:10: 'Poco/Path.h' file not found
I'm currently getting the following:
OF: OF_LOG_ERROR: ofxPd: Can not start list, message in progress
OF: OF_LOG_ERROR: ofxPd: Can not add symbol, message not in progress
OF: OF_LOG_ERROR: ofxPd: Can not add float, message not in progress
OF: OF_LOG_ERROR: ofxPd: Can not add float, message not in progress
OF: OF_LOG_ERROR: ofxPd: Can not add float, message not in progress
OF: OF_LOG_ERROR: ofxPd: Can not finish message, message not in progress
Even if I have this wrapped around the code, it still happens.
if(!pdRef->isMsgInProgress()){}
Due to this, occasionally I'm getting some 'error: unpack: type mismatch" errors from PD. I think somehow the messages are getting mixed up and lists are being sent to the wrong place when multiple are sent at the same time. It's causing a nasty distortion when it happens in my case.
My thought is this is occurring because I'm sending lists at the same time or something. One list is being sent on a certain frame number and that runs fine without the error. Another list sends x/y movement to PD on a touch move event. If I only send the frame based event OR I only send the touch based event it runs fine. Once they're mixed, they start to conflict on occasion.
My recommendation to test this would be to send a list of 2-3 floats in the update function and then a list on touch/mouse move to see if you can recreate this.
trying to get the first example working with 0.8.4,
i've added the "additional c flags" and also confirmed that the header search paths include
../../../addons/ofxPd/libs/libpd/pure-data/src
i'm getting compile errors:
/Users/ali/GoogleDrive/Development/of_v0.8.4_osx_release/apps/myApps/ofxPdTest01/src/ofApp.cpp:429:47: No member named 'numMessages' in 'ofxPd'
some compiler errors arise when initializing ofxPd on iOS if you use microphone input. if using lots of memory with your app, sometimes BAD MEMORY access arise because of the audioIn(float* input, int bufferSize, int nChannels) function in ofxPd.cpp
at first time, initial buffer size is larger than desired, no matter how I set ticksperbuffer, etc. so I ended up adding this:
void ofxPd::audioIn(float* input, int bufferSize, int nChannels) {
try {
if(inputBuffer != NULL)
{
if(bufferSize==inputBufferSize)
{
_LOCK();
memcpy(inputBuffer, input, bufferSize_nChannels_sizeof(float));
_UNLOCK();
}
else
{
cout << "skip init buffersize" << endl;
}
}
}
catch (...) {
ofLogError("Pd") << "could not copy input buffer, " <<
"check your buffer size and num channels";
}
}
where inputBufferSize set manually to desired buffer size. after adding this, everything works fine, no bad memory access anymore. hope this helps
Hi, I'm trying to run ofxPd example on Android devices using Android Studio on OSX.
First of all, I could successfully compile and run of_v0.9.8_android_release/examples/android/androidEmptyExample on Android Studio.
But I wasn't sure how to properly add ofxPd addon on top of the androidEmptyExample.
So I just tried locating ofxPd folder into androidEmptyExample/src but when I build it, It fails with the errors as you can see in the screenshot below.
I thought it has to do with C Flags so I added them on androidEmptyExample/jni/Android.mk file but it doesn't seem to have any effect.
How can I properly add C Flags on Android Studio?
Many Thanks.
Zack
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.