-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
popsicle + dawdreamer #11
Comments
Here's another iteration to address a segfaulting bug with some command line options |
Sounds great! Thanks for mentioning it. What is the benefit of using dawdreamer over pythonized juce and the c++ capabilities of cppyy? |
Thanks for your reply @kunitoki
I would also add spotify's pedalboard to the same category as dawdreamer: both are pip-installable python packages and both use pybind11 to integrate some subset of JUCE's audio capabilities to enable the creation of audio processing graphs. I'm sure you can achieve the same with cppyy, but the benefit is that they already exist and already provide novel and differentiated features: midi playback and faust-processing with dawdreamer, and 'strong thread-safety, memory usage, and speed guarantees' with pedalboard. |
Yeah i understand, they are python packages afterall so they could integrate nicely |
@shakfu so what does your demo actually do? |
@turian It was some time since I posted it, and I tried to run popsicle examples just now but was getting "uncaught exception in JIT" warnings and execution issues on a Mac m1 machine. But I think the point I was trying to make is evident from a function calling dawdreamer where a sine wave file is rendered from a daydreamer audio traph which contains a node containing faust code and then displayed on the popsicle sample player. import dawdreamer as daw
...
def render_sine(path='sine.wav'):
engine = daw.RenderEngine(SAMPLE_RATE, 512) # 512 block size
faust_processor = engine.make_faust_processor("faust")
faust_processor.set_dsp_string(
"""
declare name "MySine";
freq = hslider("freq", 440, 0, 20000, 0);
gain = hslider("vol[unit:dB]", 0, -120, 20, 0) : ba.db2linear;
process = freq : os.osc : _*gain <: si.bus(2);
"""
)
print(faust_processor.get_parameters_description())
engine.load_graph([
(faust_processor, [])
])
faust_processor.set_parameter("/MySine/freq", 440.) # 440 Hz
faust_processor.set_parameter("/MySine/vol", -6.) # -6 dB volume
engine.set_bpm(120.)
engine.render(4., beats=True) # render 4 beats.
audio = engine.get_audio() # shaped (2, N samples)
wavfile.write(path, SAMPLE_RATE, audio.transpose())
return path |
I've started a complete rewrite of popsicle, and i'm currently being addressing audio. The new popsicle should be more stable and break less often as it doesn't rely on cppyy and overall it is manually finetuned. |
Hi @kunitoki that sounds great! |
I've released the current progress (not really 1.0 but we are approaching it). Feel free to try and report back any feedback ! |
@kunitoki I just downloaded it, build it from source and ran the examples (I'm on a M1 MacBook Air). On the build side: it was very easy and non-problematic to build, your Examples ran great except for But overall congrats.. it's looking good. I definitely prefer this |
Nice, glad to hear that! |
Btw, i saw that you correctly embedded the standard library as a zip file, it would be great to be able to have a step in the demo app that bundles the python std lib so it's standalone. The tricky part is doing it cross platform. |
@kunitoki I have evolved somewhat since then, and now I routinely embed the python standard lib as a zip file in my py-js project and this is one step of of a whole custom build system in python in the builder module. The specific function in def ziplib(self):
"""zip python package in site-packages to .zip archive"""
temp_lib_dynload = self.prefix_lib / "lib-dynload"
temp_os_py = self.prefix_lib / "os.py"
self.cmd.move(self.site_packages, "/tmp/site-packages")
self.lib_dynload.rename(temp_lib_dynload)
self.cmd.copy(self.python_lib / "os.py", temp_os_py)
zip_path = self.prefix_lib / f"python{self.product.ver_nodot}"
shutil.make_archive(str(zip_path), "zip", str(self.python_lib))
self.cmd.remove(self.python_lib)
self.python_lib.mkdir()
temp_lib_dynload.rename(self.lib_dynload)
temp_os_py.rename(self.python_lib / "os.py")
self.cmd.move("/tmp/site-packages", self.site_packages) I've only tested this on macOS, but I don't see why this wouldn't work on other platforms. |
Thanks for the headsup, really appreciated ! Btw i started hacking around a bit: import os
import sys
import shutil
from pathlib import Path
if __name__ == "__main__":
base_folder = Path(sys.argv[1])
output_folder = Path(sys.argv[2])
version_major = sys.argv[3]
version_minor = sys.argv[4]
version = f"{version_major}.{version_minor}"
version_nodot = f"{version_major}{version_minor}"
ignored_files = shutil.ignore_patterns(
"*.pyc",
"__pycache__",
"__phello__",
"*config-3*",
"*tcl*",
"*tdbc*",
"*tk*",
"Tk*",
"_tk*",
"_test*",
"libpython*",
"pkgconfig",
"idlelib",
"site-packages",
"test",
"turtledemo",
)
print("cleaning up...")
shutil.rmtree(str(output_folder / "python"))
print("copying library...")
shutil.copytree(
str(base_folder / "lib" / f"python{version}"),
str(output_folder / "python"),
ignore=ignored_files,
dirs_exist_ok=True)
print("creating site-packages...")
os.makedirs(str(output_folder / "python" / "site-packages"), exist_ok=True)
print("making archive...")
shutil.make_archive(str(output_folder / f"python{version_nodot}"), "zip", str(output_folder / "python")) This is executed from cmake and the resulting zip file is embedded in the app, but i've tried bootstrapping python and i cannot find the right way to do it (assuming i setup isolated mode to not look into the system):
|
This is the full output of python when it fails initialisation:
|
the stack overflow has a very important note: |
mmmh interesting, but i have no os.py in site-packages in my default python installation ? it is in the standard library default location. i think the issue is |
One has to put a single file, |
yes but i have this like a standard python installation
so should work |
I couldn't make it work with the zip. The only way i could make it work is by unpacking the zip file in the |
Here's an updated bash script which demonstrates it from a-z (also attached): #!/usr/bin/env bash
# build_zpython.sh
# builds minimized python with zipped `site-packages`
# ----------------------------------------------------------------------------
# VARS
NAME=python
VERSION=3.11.7
# ----------------------------------------------------------------------------
PWD=$(pwd)
PREFIX=${PWD}/${NAME}
VER=${VERSION%.*}
VERN="${VER//./}"
LIB=${PREFIX}/lib/python${VER}
MAC_DEP_TARGET=10.13
URL=https://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tar.xz
get_python() {
wget $URL
}
remove() {
echo "removing $1"
rm -rf $1
}
rm_lib() {
echo "removing $1"
rm -rf ${LIB}/$1
}
clean() {
echo "removing __pycache__ .pyc/o from $1"
find $1 | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
}
clean_tests() {
echo "removing 'test' dirs from $1"
find $1 | grep -E "(tests|test)" | xargs rm -rf
}
clean_site_packages() {
echo "removing everything in $LIB/site-packages"
rm -rf $LIB/site-packages/*
}
rm_ext() {
echo "removing $LIB/lib-dynload/$1.cpython-${VER}-darwin.so"
rm -rf $LIB/lib-dynload/$1.cpython-*.so
}
rm_bin() {
echo "removing $PREFIX/bin/$1"
rm -rf $PREFIX/bin/$1
}
# ----------------------------------------------------------------------------
# main
main() {
if ! test -f Python-${VERSION}.tar.xz; then
wget $URL
fi
if test -d Python-${VERSION}; then
rm -rf Python-${VERSION}
fi
tar xvf Python-${VERSION}.tar.xz
cd Python-${VERSION}
./configure MACOSX_DEPLOYMENT_TARGET=${MAC_DEP_TARGET} \
--prefix=$PREFIX \
--enable-shared \
--disable-test-modules \
--with-ensurepip=no \
--without-static-libpython
make install
clean $PREFIX
clean_tests $LIB
clean_site_packages
remove ${LIB}/site-packages
# remove what you want here...
rm_lib config-${VERSION}-darwin
rm_lib idlelib
rm_lib lib2to3
rm_lib tkinter
rm_lib turtledemo
rm_lib turtle.py
rm_lib ensurepip
rm_lib venv
remove $LIB/distutils/command/*.exe
remove $LIB/lib-dynload/_xx*.so
remove $LIB/lib-dynload/xx*.so
remove $PREFIX/lib/pkgconfig
remove $PREFIX/share
# remove what you want here...
rm_ext _tkinter
rm_bin 2to3-${VER}
rm_bin idle${VER}
rm_bin idle3
rm_bin 2to3-${VER}
rm_bin 2to3
mv $LIB/lib-dynload $PREFIX
cp $LIB/os.py $PREFIX
clean $PREFIX
echo "zip site-packages"
python3 -m zipfile -c $PREFIX/lib/python${VERN}.zip $LIB/*
remove $LIB
mkdir -p $LIB
mv $PREFIX/lib-dynload $LIB
mv $PREFIX/os.py $LIB
mkdir $LIB/site-packages
echo "cleanup"
rm -rf Python-${VERSION}
}
test_zipped_python() {
./python/bin/python3 -c "import string; print(string.__file__)"
./python/bin/python3 -c "import string; assert string.digits=='0123456789'"
}
# run it
time main
# test it
test_zipped_python |
@kunitoki hope the above script is helpful. It would be useful to know what you will be using the zipped sodlib for.. |
Thanks for sharing, i'm allowing popsicle to work as a JUCE module as well and act as an embeddable python scripting language (with juce exposed thanks to popsicle itself). You can have a look at the demo app, which is a standalone JUCE app with a bundled python interpreter + python stdlib + popsicle bindings + (optional) custom app bindings. For now i'm just bundling the python standard library inside the binary itself (the juce way) so it's cross platform https://github.com/kunitoki/popsicle/blob/dev/small_updates/demo/CMakeLists.txt#L42-L55 using this script together with the JUCE's The application then bootstrap the python home like this https://github.com/kunitoki/popsicle/blob/dev/small_updates/modules/juce_python/scripting/ScriptEngine.cpp#L69-L117 and initializes the python interpreter in isolated mode (so there is no way to mix with user installed pythons). |
Cool, I wasn't aware that was possible. After reading this, I was intrigued to see how it worked and I tried to build the demo using: cd demo
mkdir build
cd build
cmake ..
cmake --build . --config Release It was building alright but then I got a link error because it was trying and failing to link to my homebrew python [100%] Linking CXX executable "popsicle_demo_artefacts/Popsicle Demo.app/Contents/MacOS/Popsicle Demo"
ld: warning: ignoring file '/opt/homebrew/Cellar/[email protected]/3.11.7_1/Frameworks/Python.framework/Versions/3.11/Python': found architecture 'arm64', required architecture 'x86_64'
ld: Undefined symbols:
_PyBaseObject_Type, referenced from:
pybind11::detail::make_object_base_type(_typeobject*) in Main.cpp.o
_PyBool_FromLong, referenced from:
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyBool_Type, referenced from:
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyBuffer_Release, referenced from:
pybind11::buffer_info::~buffer_info() in PopsicleDemo.cpp.o
_PyByteArray_AsString, referenced from:
bool pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load_raw<char>(std::__1::enable_if<std::is_same<char, char>::value, pybind11::handle>::type) in Main.cpp.o
pybind11::detail::type_caster<juce::StringRef, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::String, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyByteArray_Size, referenced from:
bool pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load_raw<char>(std::__1::enable_if<std::is_same<char, char>::value, pybind11::handle>::type) in Main.cpp.o
pybind11::detail::type_caster<juce::String, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyByteArray_Type, referenced from:
bool pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load_raw<char>(std::__1::enable_if<std::is_same<char, char>::value, pybind11::handle>::type) in Main.cpp.o
pybind11::detail::type_caster<juce::StringRef, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::String, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyBytes_AsString, referenced from:
bool pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load_raw<char>(std::__1::enable_if<std::is_same<char, char>::value, pybind11::handle>::type) in Main.cpp.o
pybind11::detail::type_caster<juce::StringRef, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::String, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::string_caster<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t>>, false>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyBytes_AsStringAndSize, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::str::operator std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>() const in Main.cpp.o
std::__1::basic_string_view<char, std::__1::char_traits<char>> pybind11::bytes::string_op<std::__1::basic_string_view<char, std::__1::char_traits<char>>>() const in juce_python_core.cpp.o
_PyBytes_FromStringAndSize, referenced from:
pybind11::bytes::bytes<long, 0>(char const*, long const&) in juce_python_core.cpp.o
_PyBytes_Size, referenced from:
bool pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load_raw<char>(std::__1::enable_if<std::is_same<char, char>::value, pybind11::handle>::type) in Main.cpp.o
pybind11::detail::type_caster<juce::String, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load_raw(pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::string_caster<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t>>, false>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyCFunction_Type, referenced from:
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
pybind11::function::cpp_function() const in juce_python_audio_basics.cpp.o
_PyCMethod_New, referenced from:
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
_PyCallable_Check, referenced from:
pybind11::function::check_(pybind11::handle) in juce_python_audio_basics.cpp.o
_PyCapsule_GetContext, referenced from:
pybind11::capsule::initialize_with_void_ptr_destructor(void const*, char const*, void (*)(void*))::'lambda'(_object*)::operator()(_object*) const in Main.cpp.o
_PyCapsule_GetName, referenced from:
pybind11::capsule::name() const in Main.cpp.o
pybind11::capsule::get_name_in_error_scope(_object*) in Main.cpp.o
_PyCapsule_GetPointer, referenced from:
pybind11::detail::get_internals_pp_from_capsule(pybind11::handle) in Main.cpp.o
pybind11::detail::function_record* pybind11::capsule::get_pointer<pybind11::detail::function_record>() const in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::capsule::initialize_with_void_ptr_destructor(void const*, char const*, void (*)(void*))::'lambda'(_object*)::operator()(_object*) const in Main.cpp.o
pybind11::detail::type_info* pybind11::capsule::get_pointer<pybind11::detail::type_info>() const in PopsicleDemo.cpp.o
void* pybind11::capsule::get_pointer<void>() const in juce_python_core.cpp.o
_PyCapsule_New, referenced from:
pybind11::capsule::capsule(void const*, char const*, void (*)(_object*)) in Main.cpp.o
pybind11::capsule::initialize_with_void_ptr_destructor(void const*, char const*, void (*)(void*)) in Main.cpp.o
_PyCapsule_SetContext, referenced from:
pybind11::capsule::initialize_with_void_ptr_destructor(void const*, char const*, void (*)(void*)) in Main.cpp.o
_PyCapsule_SetPointer, referenced from:
pybind11::capsule::set_pointer(void const*) in Main.cpp.o
_PyCapsule_Type, referenced from:
pybind11::capsule::check_(pybind11::handle) in Main.cpp.o
_PyConfig_Clear, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_PyConfig_InitPythonConfig, referenced from:
pybind11::initialize_interpreter(bool, int, char const* const*, bool) in juce_python.cpp.o
_PyConfig_SetBytesArgv, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_PyDict_Contains, referenced from:
bool pybind11::dict::contains<pybind11::str&>(pybind11::str&) const in juce_python_audio_basics.cpp.o
bool pybind11::dict::contains<char const (&) [4]>(char const (&) [4]) const in juce_python_core.cpp.o
bool pybind11::dict::contains<char const (&) [5]>(char const (&) [5]) const in juce_python_core.cpp.o
bool pybind11::dict::contains<char const (&) [6]>(char const (&) [6]) const in juce_python_core.cpp.o
_PyDict_Copy, referenced from:
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
_PyDict_DelItemString, referenced from:
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
_PyDict_GetItemWithError, referenced from:
pybind11::detail::dict_getitemstring(_object*, char const*) in Main.cpp.o
pybind11::detail::dict_getitem(_object*, _object*) in juce_python_audio_basics.cpp.o
_PyDict_New, referenced from:
pybind11::dict::dict() in Main.cpp.o
_PyDict_Next, referenced from:
pybind11::detail::iterator_policies::dict_readonly::increment() in Main.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyDict_Size, referenced from:
pybind11::dict::size() const in Main.cpp.o
_PyDict_Type, referenced from:
pybind11::dict::raw_dict(_object*) in Main.cpp.o
_PyErr_CheckSignals, referenced from:
popsicle::Bindings::registerJuceGuiEntryPointsBindings(pybind11::module_&)::PyTestableApplication::processEvents(int) in juce_python_gui_basics.cpp.o
_PyErr_Clear, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load(pybind11::handle, bool) in Main.cpp.o
pybind11::detail::type_caster<bool, void>::load(pybind11::handle, bool) in PopsicleDemo.cpp.o
pybind11::getattr(pybind11::handle, char const*, pybind11::handle) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
...
_PyErr_Fetch, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::detail::error_fetch_and_normalize::error_fetch_and_normalize(char const*) in Main.cpp.o
pybind11::error_scope::error_scope() in Main.cpp.o
_PyErr_Format, referenced from:
_pybind11_meta_call in Main.cpp.o
_PyErr_NormalizeException, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::detail::error_fetch_and_normalize::error_fetch_and_normalize(char const*) in Main.cpp.o
_PyErr_Occurred, referenced from:
pybind11::detail::dict_getitemstring(_object*, char const*) in Main.cpp.o
pybind11::str::str(char const*) in Main.cpp.o
pybind11::detail::raise_err(_object*, char const*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::capsule::name() const in Main.cpp.o
pybind11::capsule::initialize_with_void_ptr_destructor(void const*, char const*, void (*)(void*))::'lambda'(_object*)::operator()(_object*) const in Main.cpp.o
...
_PyErr_Restore, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::detail::error_fetch_and_normalize::restore() in Main.cpp.o
pybind11::error_scope::~error_scope() in Main.cpp.o
_PyErr_SetString, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
pybind11::cast_error::set_error() const in Main.cpp.o
pybind11::detail::raise_err(_object*, char const*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
...
_PyErr_WarnEx, referenced from:
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
_PyErr_WriteUnraisable, referenced from:
pybind11::capsule::get_name_in_error_scope(_object*) in Main.cpp.o
_PyEval_AcquireThread, referenced from:
pybind11::gil_scoped_acquire::gil_scoped_acquire() in Main.cpp.o
_PyEval_GetBuiltins, referenced from:
pybind11::detail::get_python_state_dict() in Main.cpp.o
_PyEval_GetGlobals, referenced from:
pybind11::globals() in PopsicleDemo.cpp.o
_PyEval_GetLocals, referenced from:
pybind11::detail::get_type_override(void const*, pybind11::detail::type_info const*, char const*) in juce_python_audio_basics.cpp.o
_PyEval_RestoreThread, referenced from:
pybind11::gil_scoped_release::~gil_scoped_release() in juce_python_audio_devices.cpp.o
_PyEval_SaveThread, referenced from:
pybind11::gil_scoped_acquire::~gil_scoped_acquire() in Main.cpp.o
pybind11::gil_scoped_release::gil_scoped_release(bool) in juce_python_audio_devices.cpp.o
_PyExc_BufferError, referenced from:
_pybind11_getbuffer in PopsicleDemo.cpp.o
_pybind11_getbuffer in PopsicleDemo.cpp.o
_PyExc_FutureWarning, referenced from:
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
_PyExc_ImportError, referenced from:
pybind11_init_wrapper_custom() in PopsicleDemo.cpp.o
pybind11_init_wrapper_custom() in PopsicleDemo.cpp.o
pybind11_init_wrapper_popsicle() in juce_python_bindings.cpp.o
pybind11_init_wrapper_popsicle() in juce_python_bindings.cpp.o
pybind11_init_wrapper___popsicle__() in juce_python_modules.cpp.o
pybind11_init_wrapper___popsicle__() in juce_python_modules.cpp.o
_PyExc_IndexError, referenced from:
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
_PyExc_MemoryError, referenced from:
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
_PyExc_OverflowError, referenced from:
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
_PyExc_RuntimeError, referenced from:
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::cast_error::set_error() const in Main.cpp.o
pybind11::reference_cast_error::set_error() const in PopsicleDemo.cpp.o
_PyExc_StopIteration, referenced from:
pybind11::stop_iteration::set_error() const in juce_python_audio_basics.cpp.o
_PyExc_SystemError, referenced from:
pybind11::detail::get_python_state_dict() in Main.cpp.o
pybind11::detail::get_internals_pp_from_capsule(pybind11::handle) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
_PyExc_TypeError, referenced from:
_pybind11_meta_call in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
_pybind11_object_init in Main.cpp.o
...
_PyExc_ValueError, referenced from:
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::detail::translate_exception(std::exception_ptr) in Main.cpp.o
pybind11::value_error::set_error() const in juce_python_audio_basics.cpp.o
_PyException_SetCause, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
_PyException_SetContext, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
_PyException_SetTraceback, referenced from:
pybind11::raise_from(_object*, char const*) in Main.cpp.o
_PyFloat_AsDouble, referenced from:
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<double, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyFloat_FromDouble, referenced from:
std::__1::enable_if<std::is_floating_point<float>::value, pybind11::handle>::type pybind11::detail::type_caster<float, void>::cast<float>(float, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
std::__1::enable_if<std::is_floating_point<double>::value, pybind11::handle>::type pybind11::detail::type_caster<double, void>::cast<double>(double, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
pybind11::float_::float_(float) in juce_python_graphics.cpp.o
_PyFloat_Type, referenced from:
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<double, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<long long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
...
_PyFrame_GetBack, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
_PyFrame_GetCode, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::detail::get_type_override(void const*, pybind11::detail::type_info const*, char const*) in juce_python_audio_basics.cpp.o
_PyFrame_GetLineNumber, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
_PyGILState_Ensure, referenced from:
pybind11::detail::get_internals()::gil_scoped_acquire_local::gil_scoped_acquire_local() in Main.cpp.o
_PyGILState_GetThisThreadState, referenced from:
pybind11::gil_scoped_acquire::gil_scoped_acquire() in Main.cpp.o
_PyGILState_Release, referenced from:
pybind11::detail::get_internals()::gil_scoped_acquire_local::~gil_scoped_acquire_local() in Main.cpp.o
_PyImport_AddModule, referenced from:
pybind11::module_::def_submodule(char const*, char const*) in juce_python_graphics.cpp.o
_PyImport_AppendInittab, referenced from:
pybind11::detail::embedded_module::embedded_module(char const*, _object* (*)()) in PopsicleDemo.cpp.o
_PyImport_ImportModule, referenced from:
pybind11::module_::import(char const*) in PopsicleDemo.cpp.o
_PyIndex_Check, referenced from:
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<int, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned int, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<long long, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned long long, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_core.cpp.o
pybind11::detail::type_caster<unsigned char, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_core.cpp.o
pybind11::detail::type_caster<short, void>::load(pybind11::handle, bool)::'lambda'(_object*)::operator()(_object*) const in juce_python_core.cpp.o
...
_PyInstanceMethod_New, referenced from:
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
_PyInstanceMethod_Type, referenced from:
_pybind11_meta_getattro in Main.cpp.o
pybind11::cpp_function::initialize_generic(std::__1::unique_ptr<pybind11::detail::function_record, pybind11::cpp_function::InitializingFunctionRecordDeleter>&&, char const*, std::type_info const* const*, unsigned long) in Main.cpp.o
pybind11::detail::get_function(pybind11::handle) in PopsicleDemo.cpp.o
_PyIter_Check, referenced from:
pybind11::iterator::check_(pybind11::handle) in juce_python_audio_basics.cpp.o
_PyIter_Next, referenced from:
pybind11::iterator::advance() in juce_python_gui_basics.cpp.o
_PyList_Append, referenced from:
void pybind11::list::append<_object*>(_object*&&) in PopsicleDemo.cpp.o
void pybind11::list::append<popsicle::Bindings::PyArrayView<int const>>(popsicle::Bindings::PyArrayView<int const>&&) in juce_python_audio_formats.cpp.o
void pybind11::list::append<juce::var const&>(juce::var const&) in juce_python_core.cpp.o
void pybind11::list::append<juce::UndoableAction const*&>(juce::UndoableAction const*&) in juce_python_data_structures.cpp.o
void pybind11::list::append<juce::MouseInputSource const&>(juce::MouseInputSource const&) in juce_python_gui_basics.cpp.o
void pybind11::list::append<pybind11::object>(pybind11::object&&) in juce_python_gui_basics.cpp.o
void pybind11::list::append<juce::Component* const&>(juce::Component* const&) in juce_python_gui_basics.cpp.o
...
_PyList_GetItem, referenced from:
pybind11::object pybind11::detail::accessor_policies::list_item::get<unsigned long, 0>(pybind11::handle, unsigned long const&) in PopsicleDemo.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyList_New, referenced from:
pybind11::list::list<long, 0>(long) in PopsicleDemo.cpp.o
pybind11::list::list<int, 0>(int) in juce_python_audio_basics.cpp.o
pybind11::list::list<unsigned long, 0>(unsigned long) in juce_python_audio_devices.cpp.o
_PyList_SetItem, referenced from:
void pybind11::detail::accessor_policies::list_item::set<unsigned long, 0>(pybind11::handle, unsigned long const&, pybind11::handle) in juce_python_audio_basics.cpp.o
_PyList_Size, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::list::size() const in PopsicleDemo.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyLong_AsLong, referenced from:
pybind11::detail::type_caster<int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<long long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<short, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<long, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyLong_AsUnsignedLong, referenced from:
unsigned long pybind11::detail::as_unsigned<unsigned long>(_object*) in juce_python_audio_basics.cpp.o
_PyLong_FromLong, referenced from:
pybind11::int_::int_<int, 0>(int) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyLong_FromLongLong, referenced from:
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyLong_FromSize_t, referenced from:
std::__1::enable_if<!std::is_floating_point<unsigned long>::value && std::is_unsigned<unsigned long>::value && sizeof (unsigned long) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<unsigned long, void>::cast<unsigned long>(unsigned long, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
std::__1::enable_if<!std::is_floating_point<unsigned int>::value && std::is_unsigned<unsigned int>::value && sizeof (unsigned int) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<unsigned int, void>::cast<unsigned int>(unsigned int, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
std::__1::enable_if<!std::is_floating_point<unsigned long long>::value && std::is_unsigned<unsigned long long>::value && sizeof (unsigned long long) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<unsigned long long, void>::cast<unsigned long long>(unsigned long long, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_devices.cpp.o
std::__1::enable_if<!std::is_floating_point<unsigned char>::value && std::is_unsigned<unsigned char>::value && sizeof (unsigned char) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<unsigned char, void>::cast<unsigned char>(unsigned char, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
std::__1::enable_if<!std::is_floating_point<unsigned short>::value && std::is_unsigned<unsigned short>::value && sizeof (unsigned short) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<unsigned short, void>::cast<unsigned short>(unsigned short, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyLong_FromSsize_t, referenced from:
std::__1::enable_if<!std::is_floating_point<int>::value && std::is_signed<int>::value && sizeof (int) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<int, void>::cast<int>(int, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
std::__1::enable_if<!std::is_floating_point<long long>::value && std::is_signed<long long>::value && sizeof (long long) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<long long, void>::cast<long long>(long long, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
std::__1::enable_if<!std::is_floating_point<short>::value && std::is_signed<short>::value && sizeof (short) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<short, void>::cast<short>(short, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
std::__1::enable_if<!std::is_floating_point<long>::value && std::is_signed<long>::value && sizeof (long) <= 8ul, pybind11::handle>::type pybind11::detail::type_caster<long, void>::cast<long>(long, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyMem_Calloc, referenced from:
pybind11::detail::instance::allocate_layout() in Main.cpp.o
_PyMem_Free, referenced from:
pybind11::detail::instance::deallocate_layout() in Main.cpp.o
_PyMemoryView_FromMemory, referenced from:
pybind11::memoryview::from_memory(void*, long, bool) in juce_python_core.cpp.o
_PyMemoryView_FromObject, referenced from:
pybind11::memoryview::memoryview(pybind11::object&&) in juce_python_core.cpp.o
_PyMemoryView_Type, referenced from:
pybind11::memoryview::check_(pybind11::handle) in juce_python_core.cpp.o
_PyMethod_Type, referenced from:
pybind11::detail::get_function(pybind11::handle) in PopsicleDemo.cpp.o
_PyModule_AddObject, referenced from:
pybind11::module_::add_object(char const*, pybind11::handle, bool) in juce_python_audio_basics.cpp.o
_PyModule_Create2, referenced from:
pybind11::module_::create_extension_module(char const*, char const*, PyModuleDef*) in PopsicleDemo.cpp.o
_PyModule_GetName, referenced from:
pybind11::module_::def_submodule(char const*, char const*) in juce_python_graphics.cpp.o
_PyModule_Type, referenced from:
pybind11::detail::make_new_python_type(pybind11::detail::type_record const&) in PopsicleDemo.cpp.o
_PyNumber_And, referenced from:
pybind11::detail::object_api<pybind11::handle>::operator&(pybind11::detail::object_api<pybind11::handle> const&) const in juce_python_audio_basics.cpp.o
_PyNumber_Check, referenced from:
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<double, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<long long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned long long, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
...
_PyNumber_Float, referenced from:
pybind11::detail::type_caster<float, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<double, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
_PyNumber_Invert, referenced from:
pybind11::detail::object_api<pybind11::handle>::operator~() const in juce_python_audio_basics.cpp.o
_PyNumber_Long, referenced from:
pybind11::detail::type_caster<unsigned long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::int_::int_(pybind11::object const&) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned int, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<long long, void>::load(pybind11::handle, bool) in juce_python_audio_basics.cpp.o
pybind11::detail::type_caster<unsigned long long, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<unsigned char, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
...
_PyNumber_Or, referenced from:
pybind11::detail::object_api<pybind11::handle>::operator|(pybind11::detail::object_api<pybind11::handle> const&) const in juce_python_audio_basics.cpp.o
_PyNumber_Xor, referenced from:
pybind11::detail::object_api<pybind11::handle>::operator^(pybind11::detail::object_api<pybind11::handle> const&) const in juce_python_audio_basics.cpp.o
_PyObject_Call, referenced from:
void pybind11::implicitly_convertible<juce::RectanglePlacement::Flags, juce::RectanglePlacement>()::'lambda'(_object*, _typeobject*)::operator()(_object*, _typeobject*) const in juce_python_graphics.cpp.o
_PyObject_CallFunctionObjArgs, referenced from:
pybind11::dict::raw_dict(_object*) in Main.cpp.o
_PyObject_CallObject, referenced from:
pybind11::detail::simple_collector<(pybind11::return_value_policy)1>::call(_object*) const in Main.cpp.o
_PyObject_CheckBuffer, referenced from:
pybind11::buffer::check_(pybind11::handle) in juce_python_core.cpp.o
_PyObject_ClearWeakRefs, referenced from:
pybind11::detail::clear_instance(_object*) in Main.cpp.o
_PyObject_GC_UnTrack, referenced from:
_pybind11_object_dealloc in Main.cpp.o
_PyObject_GenericGetDict, referenced from:
pybind11::detail::enable_dynamic_attributes(_heaptypeobject*)::getset in PopsicleDemo.cpp.o
_PyObject_GenericSetDict, referenced from:
pybind11::detail::enable_dynamic_attributes(_heaptypeobject*)::getset in PopsicleDemo.cpp.o
_PyObject_GetAttrString, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::getattr(pybind11::handle, char const*) in Main.cpp.o
pybind11::getattr(pybind11::handle, char const*, pybind11::handle) in juce_python_audio_basics.cpp.o
pybind11::detail::get_type_override(void const*, pybind11::detail::type_info const*, char const*) in juce_python_audio_basics.cpp.o
_PyObject_GetBuffer, referenced from:
pybind11::buffer::request(bool) const in juce_python_core.cpp.o
_PyObject_GetItem, referenced from:
pybind11::detail::accessor_policies::generic_item::get(pybind11::handle, pybind11::handle) in juce_python_audio_basics.cpp.o
_PyObject_GetIter, referenced from:
pybind11::iter(pybind11::handle) in juce_python_gui_basics.cpp.o
_PyObject_HasAttrString, referenced from:
pybind11::hasattr(pybind11::handle, char const*) in Main.cpp.o
_PyObject_IsInstance, referenced from:
_pybind11_meta_setattro in Main.cpp.o
_pybind11_meta_setattro in Main.cpp.o
pybind11::isinstance(pybind11::handle, pybind11::handle) in juce_python_core.cpp.o
_PyObject_IsTrue, referenced from:
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyObject_Malloc, referenced from:
pybind11::detail::make_new_python_type(pybind11::detail::type_record const&) in PopsicleDemo.cpp.o
_PyObject_Repr, referenced from:
pybind11::repr(pybind11::handle) in Main.cpp.o
_PyObject_RichCompareBool, referenced from:
pybind11::detail::object_api<pybind11::handle>::rich_compare(pybind11::detail::object_api<pybind11::handle> const&, int) const in juce_python_audio_basics.cpp.o
_PyObject_SetAttr, referenced from:
pybind11::setattr(pybind11::handle, pybind11::handle, pybind11::handle) in juce_python_audio_basics.cpp.o
_PyObject_SetAttrString, referenced from:
pybind11::setattr(pybind11::handle, char const*, pybind11::handle) in Main.cpp.o
_PyObject_SetItem, referenced from:
pybind11::detail::accessor_policies::generic_item::set(pybind11::handle, pybind11::handle, pybind11::handle) in Main.cpp.o
_PyObject_Str, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::str::raw_str(_object*) in Main.cpp.o
_PyProperty_Type, referenced from:
pybind11::detail::make_static_property_type() in Main.cpp.o
_pybind11_static_get in Main.cpp.o
_pybind11_static_set in Main.cpp.o
pybind11::detail::generic_type::def_property_static_impl(char const*, pybind11::handle, pybind11::handle, pybind11::detail::function_record*) in PopsicleDemo.cpp.o
pybind11::detail::enum_base::init(bool, bool) in juce_python_audio_basics.cpp.o
_PyRun_SimpleStringFlags, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_PyRun_StringFlags, referenced from:
pybind11::object pybind11::eval<(pybind11::eval_mode)2>(pybind11::str const&, pybind11::object, pybind11::object) in juce_python.cpp.o
_PySequence_Check, referenced from:
pybind11::sequence::check_(pybind11::handle) in juce_python_gui_basics.cpp.o
_PySequence_GetItem, referenced from:
pybind11::object pybind11::detail::accessor_policies::sequence_item::get<unsigned long, 0>(pybind11::handle, unsigned long const&) in juce_python_gui_basics.cpp.o
_PySequence_Size, referenced from:
pybind11::sequence::end() const in juce_python_gui_basics.cpp.o
pybind11::sequence::size() const in juce_python_gui_basics.cpp.o
_PySequence_Tuple, referenced from:
pybind11::tuple::tuple(pybind11::object const&) in PopsicleDemo.cpp.o
pybind11::tuple::tuple(pybind11::object&&) in juce_python_audio_formats.cpp.o
_PyStaticMethod_New, referenced from:
pybind11::staticmethod::staticmethod(pybind11::object&&) in juce_python_audio_basics.cpp.o
_PyStaticMethod_Type, referenced from:
pybind11::detail::PyStaticMethod_Check(_object*) in juce_python_audio_basics.cpp.o
_PyStatus_Exception, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_PyStatus_IsError, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_PyThreadState_Clear, referenced from:
pybind11::gil_scoped_acquire::dec_ref() in Main.cpp.o
_PyThreadState_DeleteCurrent, referenced from:
pybind11::gil_scoped_acquire::dec_ref() in Main.cpp.o
_PyThreadState_Get, referenced from:
pybind11::detail::get_internals() in Main.cpp.o
pybind11::detail::get_type_override(void const*, pybind11::detail::type_info const*, char const*) in juce_python_audio_basics.cpp.o
_PyThreadState_GetFrame, referenced from:
pybind11::detail::get_type_override(void const*, pybind11::detail::type_info const*, char const*) in juce_python_audio_basics.cpp.o
_PyThreadState_New, referenced from:
pybind11::gil_scoped_acquire::gil_scoped_acquire() in Main.cpp.o
_PyThread_tss_alloc, referenced from:
pybind11::detail::get_internals() in Main.cpp.o
pybind11::detail::local_internals::shared_loader_life_support_data::shared_loader_life_support_data() in Main.cpp.o
_PyThread_tss_create, referenced from:
pybind11::detail::get_internals() in Main.cpp.o
pybind11::detail::local_internals::shared_loader_life_support_data::shared_loader_life_support_data() in Main.cpp.o
_PyThread_tss_free, referenced from:
pybind11::detail::internals::~internals() in juce_python.cpp.o
_PyThread_tss_get, referenced from:
pybind11::gil_scoped_acquire::gil_scoped_acquire() in Main.cpp.o
pybind11::detail::loader_life_support::get_stack_top() in Main.cpp.o
_PyThread_tss_set, referenced from:
pybind11::gil_scoped_acquire::gil_scoped_acquire() in Main.cpp.o
pybind11::detail::get_internals() in Main.cpp.o
pybind11::detail::loader_life_support::set_stack_top(pybind11::detail::loader_life_support*) in Main.cpp.o
pybind11::gil_scoped_acquire::dec_ref() in Main.cpp.o
pybind11::gil_scoped_release::gil_scoped_release(bool) in juce_python_audio_devices.cpp.o
pybind11::gil_scoped_release::~gil_scoped_release() in juce_python_audio_devices.cpp.o
_PyTuple_GetItem, referenced from:
pybind11::object pybind11::detail::accessor_policies::tuple_item::get<unsigned long, 0>(pybind11::handle, unsigned long const&) in Main.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyTuple_New, referenced from:
pybind11::tuple::tuple<long, 0>(long) in Main.cpp.o
pybind11::tuple::tuple<int, 0>(int) in Main.cpp.o
pybind11::tuple::tuple<unsigned long, 0>(unsigned long) in Main.cpp.o
_PyTuple_SetItem, referenced from:
void pybind11::detail::accessor_policies::tuple_item::set<unsigned long, 0>(pybind11::handle, unsigned long const&, pybind11::handle) in Main.cpp.o
_PyTuple_Size, referenced from:
pybind11::tuple::size() const in Main.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyType_IsSubtype, referenced from:
PyObject_TypeCheck(_object*, _typeobject*) in Main.cpp.o
PyObject_TypeCheck(_object*, _typeobject*) in PopsicleDemo.cpp.o
bool pybind11::detail::type_caster_generic::load_impl<pybind11::detail::type_caster_generic>(pybind11::handle, bool) in PopsicleDemo.cpp.o
bool pybind11::detail::type_caster_generic::load_impl<pybind11::detail::type_caster_generic>(pybind11::handle, bool) in PopsicleDemo.cpp.o
PyObject_TypeCheck(_object*, _typeobject*) in juce_python.cpp.o
PyObject_TypeCheck(_object*, _typeobject*) in juce_python_audio_basics.cpp.o
PyObject_TypeCheck(_object*, _typeobject*) in juce_python_audio_devices.cpp.o
...
_PyType_Ready, referenced from:
pybind11::detail::make_static_property_type() in Main.cpp.o
pybind11::detail::make_default_metaclass() in Main.cpp.o
pybind11::detail::make_object_base_type(_typeobject*) in Main.cpp.o
pybind11::detail::make_new_python_type(pybind11::detail::type_record const&) in PopsicleDemo.cpp.o
_PyType_Type, referenced from:
pybind11::detail::make_static_property_type() in Main.cpp.o
pybind11::detail::make_default_metaclass() in Main.cpp.o
pybind11::detail::make_default_metaclass() in Main.cpp.o
_pybind11_meta_call in Main.cpp.o
_pybind11_meta_setattro in Main.cpp.o
_pybind11_meta_getattro in Main.cpp.o
_pybind11_meta_dealloc in Main.cpp.o
...
_PyUnicode_AsEncodedString, referenced from:
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::detail::error_fetch_and_normalize::format_value_and_trace() const in Main.cpp.o
pybind11::detail::string_caster<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t>>, false>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyUnicode_AsUTF8AndSize, referenced from:
pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::load(pybind11::handle, bool) in Main.cpp.o
pybind11::detail::type_caster<juce::StringRef, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::String, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::Identifier, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::load(pybind11::handle, bool) in juce_python_core.cpp.o
_PyUnicode_AsUTF8String, referenced from:
pybind11::str::operator std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>() const in Main.cpp.o
_PyUnicode_DecodeLatin1, referenced from:
pybind11::detail::type_caster<char, void>::cast(char, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyUnicode_DecodeUTF32, referenced from:
pybind11::detail::string_caster<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t>>, false>::decode_utfN(char const*, long) in juce_python_gui_basics.cpp.o
_PyUnicode_DecodeUTF8, referenced from:
pybind11::detail::string_caster<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false>::decode_utfN(char const*, long) in PopsicleDemo.cpp.o
_PyUnicode_FromFormat, referenced from:
pybind11::detail::make_new_python_type(pybind11::detail::type_record const&) in PopsicleDemo.cpp.o
_PyUnicode_FromString, referenced from:
pybind11::detail::make_static_property_type() in Main.cpp.o
pybind11::detail::make_default_metaclass() in Main.cpp.o
pybind11::detail::make_object_base_type(_typeobject*) in Main.cpp.o
pybind11::detail::dict_getitemstring(_object*, char const*) in Main.cpp.o
pybind11::str::str(char const*) in Main.cpp.o
pybind11::detail::make_new_python_type(pybind11::detail::type_record const&) in PopsicleDemo.cpp.o
_PyUnicode_FromStringAndSize, referenced from:
pybind11::str::str<unsigned long, 0>(char const*, unsigned long const&) in juce_python.cpp.o
pybind11::detail::type_caster<juce::StringRef, void>::cast(juce::StringRef const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::String, void>::cast(juce::String const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
_PyWeakref_NewRef, referenced from:
pybind11::weakref::weakref(pybind11::handle, pybind11::handle) in Main.cpp.o
_Py_Finalize, referenced from:
pybind11::finalize_interpreter() in juce_python.cpp.o
_Py_InitializeFromConfig, referenced from:
pybind11::initialize_interpreter(PyConfig*, int, char const* const*, bool) in juce_python.cpp.o
_Py_IsInitialized, referenced from:
pybind11::detail::embedded_module::embedded_module(char const*, _object* (*)()) in PopsicleDemo.cpp.o
pybind11::detail::precheck_interpreter() in juce_python.cpp.o
__PyObject_GetDictPtr, referenced from:
pybind11::detail::clear_instance(_object*) in Main.cpp.o
_pybind11_traverse in PopsicleDemo.cpp.o
_pybind11_clear in PopsicleDemo.cpp.o
__PyThreadState_UncheckedGet, referenced from:
pybind11::detail::get_thread_state_unchecked() in Main.cpp.o
__PyType_Lookup, referenced from:
_pybind11_meta_setattro in Main.cpp.o
_pybind11_meta_getattro in Main.cpp.o
__Py_Dealloc, referenced from:
Py_DECREF(_object*) in Main.cpp.o
Py_DECREF(_object*) in PopsicleDemo.cpp.o
Py_DECREF(_object*) in juce_python.cpp.o
Py_DECREF(_object*) in juce_python_audio_basics.cpp.o
Py_DECREF(_object*) in juce_python_audio_devices.cpp.o
Py_DECREF(_object*) in juce_python_audio_formats.cpp.o
Py_DECREF(_object*) in juce_python_audio_processors.cpp.o
...
__Py_FalseStruct, referenced from:
pybind11::detail::type_caster<bool, void>::load(pybind11::handle, bool) in PopsicleDemo.cpp.o
pybind11::detail::type_caster<bool, void>::cast(bool, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
__Py_NoneStruct, referenced from:
pybind11::none::none() in Main.cpp.o
pybind11::detail::object_api<pybind11::handle>::is_none() const in Main.cpp.o
pybind11::detail::object_api<pybind11::detail::accessor<pybind11::detail::accessor_policies::generic_item>>::is_none() const in juce_python_audio_basics.cpp.o
pybind11::detail::PyNone_Check(_object*) in juce_python_audio_devices.cpp.o
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
pybind11::detail::type_caster<juce::var, void>::cast(juce::var const&, pybind11::return_value_policy, pybind11::handle) in juce_python_core.cpp.o
__Py_NotImplementedStruct, referenced from:
pybind11::cpp_function::dispatcher(_object*, _object*, _object*) in Main.cpp.o
__Py_TrueStruct, referenced from:
pybind11::detail::type_caster<bool, void>::load(pybind11::handle, bool) in PopsicleDemo.cpp.o
pybind11::detail::type_caster<bool, void>::cast(bool, pybind11::return_value_policy, pybind11::handle) in juce_python_audio_basics.cpp.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [popsicle_demo_artefacts/Popsicle Demo.app/Contents/MacOS/Popsicle Demo] Error 1
make[1]: *** [CMakeFiles/popsicle_demo.dir/all] Error 2
make: *** [all] Error 2 I then made the following change to # set (Python_ROOT_DIR "/Library/Frameworks/Python.framework/Versions/Current")
set (Python_ROOT_DIR "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/Current") And then it built successfully. Note that you can get the current homebrew python via I saw that the resultant binary of Does this include the python standard lib? I searched for |
Yes that thing is in the branch (the opened PR). As you already discovered you have to change the python root (or comment it). I force that so i can move quickly among versions (i use upstream python so i have universal2 libraries, homebrew usually ship either intel or arm binaries, so i cannot test intel builds on my M1 by launching apps with |
debug or release ? either way, the cmake in master will not strip bnaries (both debug and release) but the one in the branch will strip release builds and include the python library (it's 26mb for ARM only in release). |
It was built using
Cool. Thanks, will check out the branch version when I can. |
I've had a go at building the demo in the dev branch and I had to make a few changes to make it work on my Mac m1 air. I've attached the fixed files with the following caveats: universal arch build didn't work for me for some reason (maybe I need to install Rosetta) and the resulting The two files which I modified are |
Can you check the size of your python3.zip in the build folder ? |
What is the problem with the python script ? Can you post the error message or the issue ? |
The only issue with - shutil.rmtree(str(final_location))
+ if final_location.exists():
+ shutil.rmtree(final_location)
+ else:
+ final_location.mkdir() The rest of the changes were trivial like not converting a |
@kunitoki congrats on the release which is pretty substantive! Incidentally, I wanted to ask are python extensions from the sodlib embeddable using |
Thanks! It's a small step towards a better integration. Yes, but you need to unpack them at runtime into a site-packages |
Yes, but the whole pybind11 direction is coming together nicely. Thanks for the clarification. |
FYI, I just posted an update about the recent popsicle release in the dawdreamer-forum |
That is nice from you @shakfu thanks a lot ! I was in the process of thinking how i could give this a bit more visibility, and you already did an unexpected great start !!! |
Hi, very cool project, thanks for sharing!! I just mentioned it in the discussions sections of another cool juce + python project. I think these two are complementary and I they work nice together.
I made a somewhat crude demo which is attached.
You will need to
pip install dawdreamer
and, of course,pip install popsicle
demo.py.zip
The text was updated successfully, but these errors were encountered: