diff --git a/.gitignore b/.gitignore index 7f6e879..9d28e4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,83 +1,10 @@ -################# -## PURE DATA -################# - -*.dll -*.pd_darwin -*.pd_linux - -################# -## Visual Studio -################# - -*.amplxeproj -*.tlog -*.obj -*.log -*.idb -*.pdb -*.lastbuildstate -*.ipch -*.opensdf -*.sdf -*.user -*.suo -*.cache -*.unsuccessfulbuild -*.ilk -*.rc -*.manifest -*.res - -sysbuild/ - -################# -## XCode -################# - -xcuserdata/ -xcshareddata/ - -*.build/ -*.gcda - -# Mac crap -.DS_Store - -*.mode1V3 -*.pbxuser - - -# backup copies -*~ - -# archive -*.tar.gz - -# build products -*.la +# Pure Data +build +*pd_darwin +*dll +*pd_linux + +# Craps +*o *.a -*.lo -*.o -*.so -*.pd_darwin -*.pd_linux -*.l_ia64 -*.l_i386 -*.dll -.deps -.libs -*.lib - -################# -## automake files -################# -Makefile -Makefile.in -cream-meta.pd -README.txt -config/* -configure -config.status -libtool -aclocal.m4 \ No newline at end of file +*.la diff --git a/.gitmodules b/.gitmodules index 20557ae..bf9fc1a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,9 @@ -[submodule "ThirdParty/CicmWrapper"] - path = ThirdParty/CicmWrapper - url = https://pierreguillot@github.com/CICM/CicmWrapper.git -[submodule "ThirdParty/HoaLibrary"] - path = ThirdParty/HoaLibrary +[submodule "pd.build"] + path = pd.build + url = https://pierreguillot@github.com/pierreguillot/pd.build.git +[submodule "hoa.library"] + path = hoa.library url = https://pierreguillot@github.com/CICM/HoaLibrary-Light.git +[submodule "pd"] + path = pd + url = https://pierreguillot@github.com/pure-data/pure-data.git diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..412276d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,91 @@ +language: c +dist: trusty +sudo: required + +notifications: + email: false +git: + submodules: true + depth: 3 + +matrix: + include: + + - os: linux + compiler: gcc + install: + - sudo apt-get install -y gcc-multilib + - sudo apt-get install -y g++-multilib + - sudo apt-get install -y libc6-dev-i386 + script: + - mkdir build + - cd build + - cmake .. -DCMAKE_C_FLAGS=-m32 + - cmake --build . --config Release + - cd .. + after_success: + - cp LICENSE hoa/license.txt + - cp README.md hoa/readme.txt + - cp -r sources/ hoa/sources/ + - zip -r hoa-$TRAVIS_COMMIT-"("Linux-i386-32")""("Sources")"-externals.zip hoa + - ls + before_deploy: + - mv hoa-$TRAVIS_COMMIT-"("Linux-i386-32")""("Sources")"-externals.zip hoa-$TRAVIS_TAG-"("Linux-i386-32")""("Sources")"-externals.zip + deploy: + provider: releases + skip_cleanup: true + api_key: + secure: OvuuxKFL/kVKsQU7xVJ09PHAAgmlPqCh+GLib/nCfUQKVZ87De0UGoC95mHUHs7C+xkRVEIcL7uZZYhF5bMlIGdqPUjD1aPs2rLKr6aI9U7em7OH/+8eGLKUmIrST3d4/20iaAbSsaOwI5TElYv3w/rDoaIDznXLE0qhXUODajNG6KiXJybq7aUVXw9jfeSeMChBEQkP170qzEaNqJQ6Fu4CVT6jy1F5Bu806AJajvPwNnRTh44P6X/ESxyaohzTPQAPVMov/Qk9FFqf4yslC8up6bqLB//AzMJPgmEhYpOuuy5j0F7+duav5Lh0BWvB/8PDte4EhGzkci9RCZ4wpKHoUZd0BEHkwl39lSuMOCgTVj94zUnNu3Zos5nDxgyuY54RB+qq4bx0yQHpqISFReQqqAV7ZC5Cs65CFUjzSGYMRsKItq3Oqsk9EQO39pziMLFZsnhc/IDEK+cgnOmm1diqQWDknemLCUrcnQRul+7IchQuay1I0Zu26Z1jJ4u0Zf1tOa1vOIPP1iMgOghVrWyRWcanBUjfJTqsykkh+oWyvECnTwmcCUPW/e5hQwAflCC8EKIqy2BSmpEYJm7AfoV9k3qZs36xz9LyTsNcOCxVL+vZWRwyPAMkyVkpJ9Je3tFsMDf2EeyxrQTRTctZlvppzd0ISobObnJ88vPJX/4= + file: hoa-$TRAVIS_TAG-(Linux-i386-32)(Sources)-externals.zip + on: + tags: true + + - os: linux + compiler: gcc + script: + - mkdir build + - cd build + - cmake .. -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 + - cmake --build . --config Release + - cd .. + after_success: + - cp LICENSE hoa/license.txt + - cp README.md hoa/readme.txt + - cp -r src/ hoa/sources/ + - zip -r hoa-$TRAVIS_COMMIT-"("Linux-amd64-64")""("Sources")"-externals.zip hoa + - ls + before_deploy: + - mv hoa-$TRAVIS_COMMIT-"("Linux-amd64-64")""("Sources")"-externals.zip hoa-$TRAVIS_TAG-"("Linux-amd64-64")""("Sources")"-externals.zip + deploy: + provider: releases + skip_cleanup: true + api_key: + secure: OvuuxKFL/kVKsQU7xVJ09PHAAgmlPqCh+GLib/nCfUQKVZ87De0UGoC95mHUHs7C+xkRVEIcL7uZZYhF5bMlIGdqPUjD1aPs2rLKr6aI9U7em7OH/+8eGLKUmIrST3d4/20iaAbSsaOwI5TElYv3w/rDoaIDznXLE0qhXUODajNG6KiXJybq7aUVXw9jfeSeMChBEQkP170qzEaNqJQ6Fu4CVT6jy1F5Bu806AJajvPwNnRTh44P6X/ESxyaohzTPQAPVMov/Qk9FFqf4yslC8up6bqLB//AzMJPgmEhYpOuuy5j0F7+duav5Lh0BWvB/8PDte4EhGzkci9RCZ4wpKHoUZd0BEHkwl39lSuMOCgTVj94zUnNu3Zos5nDxgyuY54RB+qq4bx0yQHpqISFReQqqAV7ZC5Cs65CFUjzSGYMRsKItq3Oqsk9EQO39pziMLFZsnhc/IDEK+cgnOmm1diqQWDknemLCUrcnQRul+7IchQuay1I0Zu26Z1jJ4u0Zf1tOa1vOIPP1iMgOghVrWyRWcanBUjfJTqsykkh+oWyvECnTwmcCUPW/e5hQwAflCC8EKIqy2BSmpEYJm7AfoV9k3qZs36xz9LyTsNcOCxVL+vZWRwyPAMkyVkpJ9Je3tFsMDf2EeyxrQTRTctZlvppzd0ISobObnJ88vPJX/4= + file: hoa-$TRAVIS_TAG-(Linux-amd64-64)(Sources)-externals.zip + on: + tags: true + + - os: osx + compiler: gcc + script: + - mkdir build + - cd build + - cmake .. "-DCMAKE_OSX_ARCHITECTURES=i386;x86_64" + - cmake --build . --config Release + - cd .. + after_success: + - cp LICENSE hoa/license.txt + - cp README.md hoa/readme.txt + - cp -r src/ hoa/sources/ + - zip -r hoa-$TRAVIS_COMMIT-"("Darwin-i386-32")""("Darwin-x86_64-32")""("Sources")"-externals.zip hoa + - ls + before_deploy: + - cp hoa-$TRAVIS_COMMIT-"("Darwin-i386-32")""("Darwin-x86_64-32")""("Sources")"-externals.zip hoa-$TRAVIS_TAG-"("Darwin-i386-32")""("Darwin-x86_64-32")""("Sources")"-externals.zip + deploy: + provider: releases + skip_cleanup: true + api_key: + secure: OvuuxKFL/kVKsQU7xVJ09PHAAgmlPqCh+GLib/nCfUQKVZ87De0UGoC95mHUHs7C+xkRVEIcL7uZZYhF5bMlIGdqPUjD1aPs2rLKr6aI9U7em7OH/+8eGLKUmIrST3d4/20iaAbSsaOwI5TElYv3w/rDoaIDznXLE0qhXUODajNG6KiXJybq7aUVXw9jfeSeMChBEQkP170qzEaNqJQ6Fu4CVT6jy1F5Bu806AJajvPwNnRTh44P6X/ESxyaohzTPQAPVMov/Qk9FFqf4yslC8up6bqLB//AzMJPgmEhYpOuuy5j0F7+duav5Lh0BWvB/8PDte4EhGzkci9RCZ4wpKHoUZd0BEHkwl39lSuMOCgTVj94zUnNu3Zos5nDxgyuY54RB+qq4bx0yQHpqISFReQqqAV7ZC5Cs65CFUjzSGYMRsKItq3Oqsk9EQO39pziMLFZsnhc/IDEK+cgnOmm1diqQWDknemLCUrcnQRul+7IchQuay1I0Zu26Z1jJ4u0Zf1tOa1vOIPP1iMgOghVrWyRWcanBUjfJTqsykkh+oWyvECnTwmcCUPW/e5hQwAflCC8EKIqy2BSmpEYJm7AfoV9k3qZs36xz9LyTsNcOCxVL+vZWRwyPAMkyVkpJ9Je3tFsMDf2EeyxrQTRTctZlvppzd0ISobObnJ88vPJX/4= + file: hoa-$TRAVIS_TAG-(Darwin-i386-32)(Darwin-x86_64-32)(Sources)-externals.zip + on: + tags: true diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..cf4ef29 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,71 @@ +cmake_minimum_required(VERSION 2.8) + +set(CMAKE_SUPPRESS_REGENERATION true) +set(CMAKE_MACOSX_RPATH Off) +set(CMAKE_OSX_DEPLOYMENT_TARGET 10.4) +set(CMAKE_OSX_ARCHITECTURES "i386;x86_64") + +include(pd.build/pd.cmake) +project(hoa) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +set_pd_sources(${PROJECT_SOURCE_DIR}/pd/src/) +set_pd_external_path("${PROJECT_SOURCE_DIR}/hoa/") + +file(GLOB hoa_library_src ${PROJECT_SOURCE_DIR}/hoa.library/Sources/*.cpp ${PROJECT_SOURCE_DIR}/hoa.library/Sources/*.hpp) +source_group(hoa.library FILES ${hoa_library_src}) +include_directories(${PROJECT_SOURCE_DIR}/hoa.library/Sources/) + +set(hoa_pd_path "${PROJECT_SOURCE_DIR}/sources") +set(hoa_pd_sources ${hoa_pd_path}/hoa.pd.h ${hoa_pd_path}/hoa.pd.c) + +# Common Part +add_pd_external(hoa.pi hoa.pi ${hoa_pd_path}/common/hoa.pi.c) +add_pd_external(hoa.pi_tilde hoa.pi~ ${hoa_pd_path}/common/hoa.pi_tilde.c) +add_pd_external(hoa.dac_tilde hoa.dac~ ${hoa_pd_path}/common/hoa.dac_tilde.c) +add_pd_external(hoa.connect hoa.connect ${hoa_pd_path}/common/hoa.connect.c) + +add_pd_external(hoa.in hoa.in ${hoa_pd_path}/common/hoa.in.c) +add_pd_external(hoa.out hoa.out ${hoa_pd_path}/common/hoa.out.c) +add_pd_external(hoa.in_tilde hoa.in~ ${hoa_pd_path}/common/hoa.in_tilde.c) +add_pd_external(hoa.out_tilde hoa.out~ ${hoa_pd_path}/common/hoa.out_tilde.c) +#add_pd_external(hoa.thisprocess_tilde hoa.thisprocess~ ${hoa_pd_path}/common/hoa.thisprocess_tilde.c) + +# 2D Part +file(GLOB hoa_pd_2d_encoder_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.encoder_tilde.cpp) +add_pd_external(hoa.2d.encoder_tilde hoa.2d.encoder~ "${hoa_pd_2d_encoder_tilde_sources}") +file(GLOB hoa_pd_2d_optim_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.optim_tilde.cpp) +add_pd_external(hoa.2d.optim_tilde hoa.2d.optim~ "${hoa_pd_2d_optim_tilde_sources}") +file(GLOB hoa_pd_2d_wider_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.wider_tilde.cpp) +add_pd_external(hoa.2d.wider_tilde hoa.2d.wider~ "${hoa_pd_2d_wider_tilde_sources}") +file(GLOB hoa_pd_2d_decoder_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.decoder_tilde.cpp) +add_pd_external(hoa.2d.decoder_tilde hoa.2d.decoder~ "${hoa_pd_2d_decoder_tilde_sources}") +file(GLOB hoa_pd_2d_process_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/common/hoa.process_instance.c ${hoa_pd_path}/2d/hoa.2d.process_tilde.c) +add_pd_external(hoa.2d.process_tilde hoa.2d.process~ "${hoa_pd_2d_process_tilde_sources}") +#file(GLOB hoa_pd_2d_map_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.map_tilde.cpp) +#add_pd_external(hoa.2d.map_tilde hoa.2d.map~ "${hoa_pd_2d_map_tilde_sources}") +file(GLOB hoa_pd_2d_rotate_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.rotate_tilde.cpp) +add_pd_external(hoa.2d.rotate_tilde hoa.2d.rotate~ "${hoa_pd_2d_rotate_tilde_sources}") +file(GLOB hoa_pd_2d_projector_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.projector_tilde.cpp) +add_pd_external(hoa.2d.projector_tilde hoa.2d.projector~ "${hoa_pd_2d_projector_tilde_sources}") +file(GLOB hoa_pd_2d_recomposer_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/2d/hoa.2d.recomposer_tilde.cpp) +add_pd_external(hoa.2d.recomposer_tilde hoa.2d.recomposer~ "${hoa_pd_2d_recomposer_tilde_sources}") + +# 3D Part +file(GLOB hoa_pd_3d_encoder_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/3d/hoa.3d.encoder_tilde.cpp) +add_pd_external(hoa.3d.encoder_tilde hoa.3d.encoder~ "${hoa_pd_3d_encoder_tilde_sources}") +file(GLOB hoa_pd_3d_optim_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/3d/hoa.3d.optim_tilde.cpp) +add_pd_external(hoa.3d.optim_tilde hoa.3d.optim~ "${hoa_pd_3d_optim_tilde_sources}") +file(GLOB hoa_pd_3d_wider_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/3d/hoa.3d.wider_tilde.cpp) +add_pd_external(hoa.3d.wider_tilde hoa.3d.wider~ "${hoa_pd_3d_wider_tilde_sources}") +file(GLOB hoa_pd_3d_decoder_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/3d/hoa.3d.decoder_tilde.cpp) +add_pd_external(hoa.3d.decoder_tilde hoa.3d.decoder~ "${hoa_pd_3d_decoder_tilde_sources}") +file(GLOB hoa_pd_3d_process_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/common/hoa.process_instance.c ${hoa_pd_path}/3d/hoa.3d.process_tilde.c) +add_pd_external(hoa.3d.process_tilde hoa.3d.process~ "${hoa_pd_3d_process_tilde_sources}") +#file(GLOB hoa_pd_3d_map_tilde_sources ${hoa_pd_sources} ${hoa_pd_path}/3d/hoa.3d.map_tilde.cpp) +#add_pd_external(hoa.3d.map_tilde hoa.3d.map~ "${hoa_pd_3d_map_tilde_sources}") + +message(STATUS ${CMAKE_C_FLAGS}) +message(STATUS ${CMAKE_CXX_FLAGS}) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") diff --git a/Hoa.xcodeproj/project.pbxproj b/Hoa.xcodeproj/project.pbxproj deleted file mode 100644 index 30d5a8f..0000000 --- a/Hoa.xcodeproj/project.pbxproj +++ /dev/null @@ -1,765 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 59FB02F817A7FAA9001E977D /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59FB02F717A7FAA9001E977D /* Accelerate.framework */; }; - 8F3E8ACF1AB9C286009A8EFC /* hoa.library.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F3E8ACD1AB9C286009A8EFC /* hoa.library.cpp */; }; - 8F3E8AD01AB9C286009A8EFC /* hoa.library.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F3E8ACD1AB9C286009A8EFC /* hoa.library.cpp */; }; - 8F3E8AD11AB9C286009A8EFC /* hoa.library.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F3E8ACE1AB9C286009A8EFC /* hoa.library.hpp */; }; - 8F3E8AD21AB9C286009A8EFC /* hoa.library.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F3E8ACE1AB9C286009A8EFC /* hoa.library.hpp */; }; - 8F5837371ABBF92F003F0A79 /* Processor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F5837361ABBF92F003F0A79 /* Processor.hpp */; }; - 8F5837381ABBF92F003F0A79 /* Processor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F5837361ABBF92F003F0A79 /* Processor.hpp */; }; - 8F6028871B2F211A005F6B46 /* g_canvas.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60287E1B2F211A005F6B46 /* g_canvas.h */; }; - 8F6028881B2F211A005F6B46 /* g_canvas.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60287E1B2F211A005F6B46 /* g_canvas.h */; }; - 8F6028891B2F211A005F6B46 /* m_imp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60287F1B2F211A005F6B46 /* m_imp.h */; }; - 8F60288A1B2F211A005F6B46 /* m_imp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60287F1B2F211A005F6B46 /* m_imp.h */; }; - 8F60288B1B2F211A005F6B46 /* m_pd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028801B2F211A005F6B46 /* m_pd.h */; }; - 8F60288C1B2F211A005F6B46 /* m_pd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028801B2F211A005F6B46 /* m_pd.h */; }; - 8F60288D1B2F211A005F6B46 /* s_stuff.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028811B2F211A005F6B46 /* s_stuff.h */; }; - 8F60288E1B2F211A005F6B46 /* s_stuff.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028811B2F211A005F6B46 /* s_stuff.h */; }; - 8F60288F1B2F211A005F6B46 /* g_canvas.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028831B2F211A005F6B46 /* g_canvas.h */; }; - 8F6028901B2F211A005F6B46 /* g_canvas.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028831B2F211A005F6B46 /* g_canvas.h */; }; - 8F6028911B2F211A005F6B46 /* m_imp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028841B2F211A005F6B46 /* m_imp.h */; }; - 8F6028921B2F211A005F6B46 /* m_imp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028841B2F211A005F6B46 /* m_imp.h */; }; - 8F6028931B2F211A005F6B46 /* m_pd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028851B2F211A005F6B46 /* m_pd.h */; }; - 8F6028941B2F211A005F6B46 /* m_pd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028851B2F211A005F6B46 /* m_pd.h */; }; - 8F6028951B2F211A005F6B46 /* s_stuff.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028861B2F211A005F6B46 /* s_stuff.h */; }; - 8F6028961B2F211A005F6B46 /* s_stuff.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6028861B2F211A005F6B46 /* s_stuff.h */; }; - 8F7F5BF21B13B2B1008D6985 /* Exchanger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F7F5BF11B13B2B1008D6985 /* Exchanger.hpp */; }; - 8F7F5BF31B13B2B1008D6985 /* Exchanger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F7F5BF11B13B2B1008D6985 /* Exchanger.hpp */; }; - 8F80BF171A613B0A00692F98 /* hoa.encoder_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF151A613B0A00692F98 /* hoa.encoder_tilde.cpp */; }; - 8F80BF181A613B0A00692F98 /* hoa.encoder_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF151A613B0A00692F98 /* hoa.encoder_tilde.cpp */; }; - 8F80BF191A613B0A00692F98 /* hoa.map_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF161A613B0A00692F98 /* hoa.map_tilde.cpp */; }; - 8F80BF1A1A613B0A00692F98 /* hoa.map_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF161A613B0A00692F98 /* hoa.map_tilde.cpp */; }; - 8F80BF1C1A613BC900692F98 /* hoa.space_gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF1B1A613BC900692F98 /* hoa.space_gui.cpp */; }; - 8F80BF1D1A613BC900692F98 /* hoa.space_gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF1B1A613BC900692F98 /* hoa.space_gui.cpp */; }; - 8F80BF1F1A613BD600692F98 /* hoa.rotate_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF1E1A613BD600692F98 /* hoa.rotate_tilde.cpp */; }; - 8F80BF201A613BD600692F98 /* hoa.rotate_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF1E1A613BD600692F98 /* hoa.rotate_tilde.cpp */; }; - 8F80BF221A613BE500692F98 /* hoa.recomposer_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF211A613BE500692F98 /* hoa.recomposer_tilde.cpp */; }; - 8F80BF231A613BE500692F98 /* hoa.recomposer_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF211A613BE500692F98 /* hoa.recomposer_tilde.cpp */; }; - 8F80BF251A613BEF00692F98 /* hoa.projector_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF241A613BEF00692F98 /* hoa.projector_tilde.cpp */; }; - 8F80BF261A613BEF00692F98 /* hoa.projector_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F80BF241A613BEF00692F98 /* hoa.projector_tilde.cpp */; }; - 8F83E7E31A5D26BF00FDDCC8 /* Tools.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7E21A5D26BF00FDDCC8 /* Tools.hpp */; }; - 8F83E7E41A5D26BF00FDDCC8 /* Tools.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7E21A5D26BF00FDDCC8 /* Tools.hpp */; }; - 8F83E7E61A5D277800FDDCC8 /* Meter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7E51A5D277800FDDCC8 /* Meter.hpp */; }; - 8F83E7E71A5D277800FDDCC8 /* Meter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7E51A5D277800FDDCC8 /* Meter.hpp */; }; - 8F83E7EC1A5D7D9400FDDCC8 /* Projector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7EB1A5D7D9400FDDCC8 /* Projector.hpp */; }; - 8F83E7ED1A5D7D9400FDDCC8 /* Projector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7EB1A5D7D9400FDDCC8 /* Projector.hpp */; }; - 8F83E7EF1A5D820F00FDDCC8 /* Recomposer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7EE1A5D820F00FDDCC8 /* Recomposer.hpp */; }; - 8F83E7F01A5D820F00FDDCC8 /* Recomposer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7EE1A5D820F00FDDCC8 /* Recomposer.hpp */; }; - 8F83E7F21A5E022300FDDCC8 /* Scope.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F11A5E022300FDDCC8 /* Scope.hpp */; }; - 8F83E7F31A5E022300FDDCC8 /* Scope.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F11A5E022300FDDCC8 /* Scope.hpp */; }; - 8F83E7F51A5E7CD700FDDCC8 /* Signal.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F41A5E7CD700FDDCC8 /* Signal.hpp */; }; - 8F83E7F61A5E7CD700FDDCC8 /* Signal.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F41A5E7CD700FDDCC8 /* Signal.hpp */; }; - 8F83E7F81A5EC73100FDDCC8 /* Wider.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F71A5EC73100FDDCC8 /* Wider.hpp */; }; - 8F83E7F91A5EC73100FDDCC8 /* Wider.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F83E7F71A5EC73100FDDCC8 /* Wider.hpp */; }; - 8F83E8101A60346F00FDDCC8 /* hoa.io.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80A1A60346F00FDDCC8 /* hoa.io.cpp */; }; - 8F83E8111A60346F00FDDCC8 /* hoa.io.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80A1A60346F00FDDCC8 /* hoa.io.cpp */; }; - 8F83E8121A60346F00FDDCC8 /* hoa.map_gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80B1A60346F00FDDCC8 /* hoa.map_gui.cpp */; }; - 8F83E8131A60346F00FDDCC8 /* hoa.map_gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80B1A60346F00FDDCC8 /* hoa.map_gui.cpp */; }; - 8F83E8141A60346F00FDDCC8 /* hoa.optim_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80C1A60346F00FDDCC8 /* hoa.optim_tilde.cpp */; }; - 8F83E8151A60346F00FDDCC8 /* hoa.optim_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80C1A60346F00FDDCC8 /* hoa.optim_tilde.cpp */; }; - 8F83E8161A60346F00FDDCC8 /* hoa.process_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80D1A60346F00FDDCC8 /* hoa.process_tilde.cpp */; }; - 8F83E8171A60346F00FDDCC8 /* hoa.process_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80D1A60346F00FDDCC8 /* hoa.process_tilde.cpp */; }; - 8F83E8181A60346F00FDDCC8 /* hoa.tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80E1A60346F00FDDCC8 /* hoa.tools.cpp */; }; - 8F83E8191A60346F00FDDCC8 /* hoa.tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80E1A60346F00FDDCC8 /* hoa.tools.cpp */; }; - 8F83E81A1A60346F00FDDCC8 /* hoa.wider_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80F1A60346F00FDDCC8 /* hoa.wider_tilde.cpp */; }; - 8F83E81B1A60346F00FDDCC8 /* hoa.wider_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F83E80F1A60346F00FDDCC8 /* hoa.wider_tilde.cpp */; }; - 8F9D78C61AAF07160091BFDF /* Hrir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F9D78C51AAF07160091BFDF /* Hrir.hpp */; }; - 8F9D78C71AAF07160091BFDF /* Hrir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F9D78C51AAF07160091BFDF /* Hrir.hpp */; }; - 8FAC0C56196985A400E09ACB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59FB02F717A7FAA9001E977D /* Accelerate.framework */; }; - 8FAD33081B19B05B002CBB4B /* hoa.exchanger_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FAD33071B19B05B002CBB4B /* hoa.exchanger_tilde.cpp */; }; - 8FAD33091B19B05B002CBB4B /* hoa.exchanger_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FAD33071B19B05B002CBB4B /* hoa.exchanger_tilde.cpp */; }; - 8FB3A1741B2EEFE800CCC760 /* cicm_wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1651B2EEFE800CCC760 /* cicm_wrapper.h */; }; - 8FB3A1751B2EEFE800CCC760 /* cicm_wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1651B2EEFE800CCC760 /* cicm_wrapper.h */; }; - 8FB3A1761B2EEFE800CCC760 /* ebox.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1661B2EEFE800CCC760 /* ebox.c */; }; - 8FB3A1771B2EEFE800CCC760 /* ebox.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1661B2EEFE800CCC760 /* ebox.c */; }; - 8FB3A1781B2EEFE800CCC760 /* ebox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1671B2EEFE800CCC760 /* ebox.h */; }; - 8FB3A1791B2EEFE800CCC760 /* ebox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1671B2EEFE800CCC760 /* ebox.h */; }; - 8FB3A17A1B2EEFE800CCC760 /* eclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1681B2EEFE800CCC760 /* eclass.c */; }; - 8FB3A17B1B2EEFE800CCC760 /* eclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1681B2EEFE800CCC760 /* eclass.c */; }; - 8FB3A17C1B2EEFE800CCC760 /* eclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1691B2EEFE800CCC760 /* eclass.h */; }; - 8FB3A17D1B2EEFE800CCC760 /* eclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1691B2EEFE800CCC760 /* eclass.h */; }; - 8FB3A17E1B2EEFE800CCC760 /* ecommon.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16A1B2EEFE800CCC760 /* ecommon.c */; }; - 8FB3A17F1B2EEFE800CCC760 /* ecommon.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16A1B2EEFE800CCC760 /* ecommon.c */; }; - 8FB3A1801B2EEFE800CCC760 /* ecommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16B1B2EEFE800CCC760 /* ecommon.h */; }; - 8FB3A1811B2EEFE800CCC760 /* ecommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16B1B2EEFE800CCC760 /* ecommon.h */; }; - 8FB3A1821B2EEFE800CCC760 /* edefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16C1B2EEFE800CCC760 /* edefine.h */; }; - 8FB3A1831B2EEFE800CCC760 /* edefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16C1B2EEFE800CCC760 /* edefine.h */; }; - 8FB3A1841B2EEFE800CCC760 /* egraphics.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16D1B2EEFE800CCC760 /* egraphics.c */; }; - 8FB3A1851B2EEFE800CCC760 /* egraphics.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16D1B2EEFE800CCC760 /* egraphics.c */; }; - 8FB3A1861B2EEFE800CCC760 /* egraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16E1B2EEFE800CCC760 /* egraphics.h */; }; - 8FB3A1871B2EEFE800CCC760 /* egraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A16E1B2EEFE800CCC760 /* egraphics.h */; }; - 8FB3A1881B2EEFE800CCC760 /* eobj.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16F1B2EEFE800CCC760 /* eobj.c */; }; - 8FB3A1891B2EEFE800CCC760 /* eobj.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A16F1B2EEFE800CCC760 /* eobj.c */; }; - 8FB3A18A1B2EEFE800CCC760 /* eobj.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1701B2EEFE800CCC760 /* eobj.h */; }; - 8FB3A18B1B2EEFE800CCC760 /* eobj.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1701B2EEFE800CCC760 /* eobj.h */; }; - 8FB3A18C1B2EEFE800CCC760 /* epdmax.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1711B2EEFE800CCC760 /* epdmax.h */; }; - 8FB3A18D1B2EEFE800CCC760 /* epdmax.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1711B2EEFE800CCC760 /* epdmax.h */; }; - 8FB3A18E1B2EEFE800CCC760 /* epopup.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1721B2EEFE800CCC760 /* epopup.c */; }; - 8FB3A18F1B2EEFE800CCC760 /* epopup.c in Sources */ = {isa = PBXBuildFile; fileRef = 8FB3A1721B2EEFE800CCC760 /* epopup.c */; }; - 8FB3A1901B2EEFE800CCC760 /* epopup.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1731B2EEFE800CCC760 /* epopup.h */; }; - 8FB3A1911B2EEFE800CCC760 /* epopup.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB3A1731B2EEFE800CCC760 /* epopup.h */; }; - 8FC2ED861A627B4800DBD231 /* hoa.scope_gui_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2ED851A627B4800DBD231 /* hoa.scope_gui_tilde.cpp */; }; - 8FC2ED871A627B4800DBD231 /* hoa.scope_gui_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2ED851A627B4800DBD231 /* hoa.scope_gui_tilde.cpp */; }; - 8FC2ED961A62A0DC00DBD231 /* Source.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FC2ED8F1A62A0DC00DBD231 /* Source.hpp */; }; - 8FC2ED971A62A0DC00DBD231 /* Source.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FC2ED8F1A62A0DC00DBD231 /* Source.hpp */; }; - 8FC2EDA71A62B32A00DBD231 /* hoa.decoder_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2EDA31A62B32A00DBD231 /* hoa.decoder_tilde.cpp */; }; - 8FC2EDA81A62B32A00DBD231 /* hoa.decoder_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2EDA31A62B32A00DBD231 /* hoa.decoder_tilde.cpp */; }; - 8FC2EDA91A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2EDA41A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp */; }; - 8FC2EDAA1A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8FC2EDA41A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp */; }; - 8FCBC9A51B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FCBC9A31B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp */; }; - 8FCBC9A61B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FCBC9A31B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp */; }; - 8FCBC9A71B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FCBC9A41B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp */; }; - 8FCBC9A81B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FCBC9A41B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp */; }; - 8FDAB82E1AB1F4B3002D98AC /* Voronoi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FDAB82D1AB1F4B3002D98AC /* Voronoi.hpp */; }; - 8FDAB82F1AB1F4B3002D98AC /* Voronoi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FDAB82D1AB1F4B3002D98AC /* Voronoi.hpp */; }; - 8FFCAC2F1A5C0FC600E38483 /* Decoder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0B1A5C0FC600E38483 /* Decoder.hpp */; }; - 8FFCAC301A5C0FC600E38483 /* Decoder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0B1A5C0FC600E38483 /* Decoder.hpp */; }; - 8FFCAC311A5C0FC600E38483 /* Encoder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0C1A5C0FC600E38483 /* Encoder.hpp */; }; - 8FFCAC321A5C0FC600E38483 /* Encoder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0C1A5C0FC600E38483 /* Encoder.hpp */; }; - 8FFCAC331A5C0FC600E38483 /* Harmonics.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0D1A5C0FC600E38483 /* Harmonics.hpp */; }; - 8FFCAC341A5C0FC600E38483 /* Harmonics.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0D1A5C0FC600E38483 /* Harmonics.hpp */; }; - 8FFCAC351A5C0FC600E38483 /* Hoa.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0E1A5C0FC600E38483 /* Hoa.hpp */; }; - 8FFCAC361A5C0FC600E38483 /* Hoa.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC0E1A5C0FC600E38483 /* Hoa.hpp */; }; - 8FFCAC651A5C0FC600E38483 /* Defs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC281A5C0FC600E38483 /* Defs.hpp */; }; - 8FFCAC661A5C0FC600E38483 /* Defs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC281A5C0FC600E38483 /* Defs.hpp */; }; - 8FFCAC671A5C0FC600E38483 /* Math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC291A5C0FC600E38483 /* Math.hpp */; }; - 8FFCAC681A5C0FC600E38483 /* Math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC291A5C0FC600E38483 /* Math.hpp */; }; - 8FFCAC691A5C0FC600E38483 /* Optim.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2A1A5C0FC600E38483 /* Optim.hpp */; }; - 8FFCAC6A1A5C0FC600E38483 /* Optim.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2A1A5C0FC600E38483 /* Optim.hpp */; }; - 8FFCAC6B1A5C0FC600E38483 /* Planewaves.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2B1A5C0FC600E38483 /* Planewaves.hpp */; }; - 8FFCAC6C1A5C0FC600E38483 /* Planewaves.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2B1A5C0FC600E38483 /* Planewaves.hpp */; }; - 8FFCAC6D1A5C0FC600E38483 /* Rotate.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2C1A5C0FC600E38483 /* Rotate.hpp */; }; - 8FFCAC6E1A5C0FC600E38483 /* Rotate.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2C1A5C0FC600E38483 /* Rotate.hpp */; }; - 8FFCAC711A5C0FC600E38483 /* Vector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2E1A5C0FC600E38483 /* Vector.hpp */; }; - 8FFCAC721A5C0FC600E38483 /* Vector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FFCAC2E1A5C0FC600E38483 /* Vector.hpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 5913846F15DAA36D0029AD16 /* Hoa.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = Hoa.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; - 59FB02F717A7FAA9001E977D /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; - 8F3E8ACD1AB9C286009A8EFC /* hoa.library.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.library.cpp; sourceTree = ""; }; - 8F3E8ACE1AB9C286009A8EFC /* hoa.library.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = hoa.library.hpp; sourceTree = ""; }; - 8F5837361ABBF92F003F0A79 /* Processor.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Processor.hpp; sourceTree = ""; }; - 8F60287E1B2F211A005F6B46 /* g_canvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g_canvas.h; sourceTree = ""; }; - 8F60287F1B2F211A005F6B46 /* m_imp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = m_imp.h; sourceTree = ""; }; - 8F6028801B2F211A005F6B46 /* m_pd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = m_pd.h; sourceTree = ""; }; - 8F6028811B2F211A005F6B46 /* s_stuff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = s_stuff.h; sourceTree = ""; }; - 8F6028831B2F211A005F6B46 /* g_canvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g_canvas.h; sourceTree = ""; }; - 8F6028841B2F211A005F6B46 /* m_imp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = m_imp.h; sourceTree = ""; }; - 8F6028851B2F211A005F6B46 /* m_pd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = m_pd.h; sourceTree = ""; }; - 8F6028861B2F211A005F6B46 /* s_stuff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = s_stuff.h; sourceTree = ""; }; - 8F7F5BF11B13B2B1008D6985 /* Exchanger.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Exchanger.hpp; sourceTree = ""; }; - 8F80BF151A613B0A00692F98 /* hoa.encoder_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.encoder_tilde.cpp; sourceTree = ""; }; - 8F80BF161A613B0A00692F98 /* hoa.map_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.map_tilde.cpp; sourceTree = ""; }; - 8F80BF1B1A613BC900692F98 /* hoa.space_gui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.space_gui.cpp; sourceTree = ""; }; - 8F80BF1E1A613BD600692F98 /* hoa.rotate_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.rotate_tilde.cpp; sourceTree = ""; }; - 8F80BF211A613BE500692F98 /* hoa.recomposer_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.recomposer_tilde.cpp; sourceTree = ""; }; - 8F80BF241A613BEF00692F98 /* hoa.projector_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.projector_tilde.cpp; sourceTree = ""; }; - 8F83E7E21A5D26BF00FDDCC8 /* Tools.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Tools.hpp; sourceTree = ""; }; - 8F83E7E51A5D277800FDDCC8 /* Meter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Meter.hpp; sourceTree = ""; }; - 8F83E7EB1A5D7D9400FDDCC8 /* Projector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Projector.hpp; sourceTree = ""; }; - 8F83E7EE1A5D820F00FDDCC8 /* Recomposer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Recomposer.hpp; sourceTree = ""; }; - 8F83E7F11A5E022300FDDCC8 /* Scope.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Scope.hpp; sourceTree = ""; }; - 8F83E7F41A5E7CD700FDDCC8 /* Signal.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Signal.hpp; sourceTree = ""; }; - 8F83E7F71A5EC73100FDDCC8 /* Wider.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Wider.hpp; sourceTree = ""; }; - 8F83E80A1A60346F00FDDCC8 /* hoa.io.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.io.cpp; sourceTree = ""; }; - 8F83E80B1A60346F00FDDCC8 /* hoa.map_gui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.map_gui.cpp; sourceTree = ""; }; - 8F83E80C1A60346F00FDDCC8 /* hoa.optim_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.optim_tilde.cpp; sourceTree = ""; }; - 8F83E80D1A60346F00FDDCC8 /* hoa.process_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.process_tilde.cpp; sourceTree = ""; }; - 8F83E80E1A60346F00FDDCC8 /* hoa.tools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.tools.cpp; sourceTree = ""; }; - 8F83E80F1A60346F00FDDCC8 /* hoa.wider_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.wider_tilde.cpp; sourceTree = ""; }; - 8F9D78C51AAF07160091BFDF /* Hrir.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Hrir.hpp; sourceTree = ""; }; - 8FAC0C91196985A400E09ACB /* Hoa.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = Hoa.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; - 8FAD33071B19B05B002CBB4B /* hoa.exchanger_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.exchanger_tilde.cpp; sourceTree = ""; }; - 8FB3A1651B2EEFE800CCC760 /* cicm_wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cicm_wrapper.h; sourceTree = ""; }; - 8FB3A1661B2EEFE800CCC760 /* ebox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ebox.c; sourceTree = ""; }; - 8FB3A1671B2EEFE800CCC760 /* ebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ebox.h; sourceTree = ""; }; - 8FB3A1681B2EEFE800CCC760 /* eclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eclass.c; sourceTree = ""; }; - 8FB3A1691B2EEFE800CCC760 /* eclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eclass.h; sourceTree = ""; }; - 8FB3A16A1B2EEFE800CCC760 /* ecommon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ecommon.c; sourceTree = ""; }; - 8FB3A16B1B2EEFE800CCC760 /* ecommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecommon.h; sourceTree = ""; }; - 8FB3A16C1B2EEFE800CCC760 /* edefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = edefine.h; sourceTree = ""; }; - 8FB3A16D1B2EEFE800CCC760 /* egraphics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = egraphics.c; sourceTree = ""; }; - 8FB3A16E1B2EEFE800CCC760 /* egraphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = egraphics.h; sourceTree = ""; }; - 8FB3A16F1B2EEFE800CCC760 /* eobj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eobj.c; sourceTree = ""; }; - 8FB3A1701B2EEFE800CCC760 /* eobj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eobj.h; sourceTree = ""; }; - 8FB3A1711B2EEFE800CCC760 /* epdmax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = epdmax.h; sourceTree = ""; }; - 8FB3A1721B2EEFE800CCC760 /* epopup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = epopup.c; sourceTree = ""; }; - 8FB3A1731B2EEFE800CCC760 /* epopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = epopup.h; sourceTree = ""; }; - 8FC2ED851A627B4800DBD231 /* hoa.scope_gui_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.scope_gui_tilde.cpp; sourceTree = ""; }; - 8FC2ED8F1A62A0DC00DBD231 /* Source.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Source.hpp; sourceTree = ""; }; - 8FC2EDA31A62B32A00DBD231 /* hoa.decoder_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.decoder_tilde.cpp; sourceTree = ""; }; - 8FC2EDA41A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hoa.meter_gui_tilde.cpp; sourceTree = ""; }; - 8FCBC9A31B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = HrirIrc1002C2D.hpp; sourceTree = ""; }; - 8FCBC9A41B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = HrirIrc1002C3D.hpp; sourceTree = ""; }; - 8FDAB82D1AB1F4B3002D98AC /* Voronoi.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Voronoi.hpp; sourceTree = ""; }; - 8FFCAC0B1A5C0FC600E38483 /* Decoder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Decoder.hpp; sourceTree = ""; }; - 8FFCAC0C1A5C0FC600E38483 /* Encoder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Encoder.hpp; sourceTree = ""; }; - 8FFCAC0D1A5C0FC600E38483 /* Harmonics.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Harmonics.hpp; sourceTree = ""; }; - 8FFCAC0E1A5C0FC600E38483 /* Hoa.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Hoa.hpp; sourceTree = ""; }; - 8FFCAC281A5C0FC600E38483 /* Defs.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Defs.hpp; sourceTree = ""; }; - 8FFCAC291A5C0FC600E38483 /* Math.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Math.hpp; sourceTree = ""; }; - 8FFCAC2A1A5C0FC600E38483 /* Optim.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Optim.hpp; sourceTree = ""; }; - 8FFCAC2B1A5C0FC600E38483 /* Planewaves.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Planewaves.hpp; sourceTree = ""; }; - 8FFCAC2C1A5C0FC600E38483 /* Rotate.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Rotate.hpp; sourceTree = ""; }; - 8FFCAC2E1A5C0FC600E38483 /* Vector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Vector.hpp; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 5913846C15DAA36D0029AD16 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 59FB02F817A7FAA9001E977D /* Accelerate.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8FAC0C55196985A400E09ACB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8FAC0C56196985A400E09ACB /* Accelerate.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 5913846415DAA36D0029AD16 = { - isa = PBXGroup; - children = ( - 8F3E8ACD1AB9C286009A8EFC /* hoa.library.cpp */, - 8F3E8ACE1AB9C286009A8EFC /* hoa.library.hpp */, - 8F83E8091A60346F00FDDCC8 /* Sources */, - 8F1F1B761A5425AF0026B9E8 /* CicmWrapper */, - 8F1F1AA61A5425390026B9E8 /* HoaLibrary */, - 59FB02F717A7FAA9001E977D /* Accelerate.framework */, - 5913847015DAA36D0029AD16 /* Products */, - ); - sourceTree = ""; - }; - 5913847015DAA36D0029AD16 /* Products */ = { - isa = PBXGroup; - children = ( - 5913846F15DAA36D0029AD16 /* Hoa.pd_darwin */, - 8FAC0C91196985A400E09ACB /* Hoa.pd_darwin */, - ); - name = Products; - sourceTree = ""; - }; - 8F1F1AA61A5425390026B9E8 /* HoaLibrary */ = { - isa = PBXGroup; - children = ( - 8FFCAC0A1A5C0FC600E38483 /* Sources */, - ); - name = HoaLibrary; - path = ThirdParty/HoaLibrary; - sourceTree = ""; - }; - 8F1F1B761A5425AF0026B9E8 /* CicmWrapper */ = { - isa = PBXGroup; - children = ( - 8FB3A1651B2EEFE800CCC760 /* cicm_wrapper.h */, - 8FB3A1661B2EEFE800CCC760 /* ebox.c */, - 8FB3A1671B2EEFE800CCC760 /* ebox.h */, - 8FB3A1681B2EEFE800CCC760 /* eclass.c */, - 8FB3A1691B2EEFE800CCC760 /* eclass.h */, - 8FB3A16A1B2EEFE800CCC760 /* ecommon.c */, - 8FB3A16B1B2EEFE800CCC760 /* ecommon.h */, - 8FB3A16C1B2EEFE800CCC760 /* edefine.h */, - 8FB3A16D1B2EEFE800CCC760 /* egraphics.c */, - 8FB3A16E1B2EEFE800CCC760 /* egraphics.h */, - 8FB3A16F1B2EEFE800CCC760 /* eobj.c */, - 8FB3A1701B2EEFE800CCC760 /* eobj.h */, - 8FB3A1711B2EEFE800CCC760 /* epdmax.h */, - 8FB3A1721B2EEFE800CCC760 /* epopup.c */, - 8FB3A1731B2EEFE800CCC760 /* epopup.h */, - 8F60287D1B2F211A005F6B46 /* pd-extended */, - 8F6028821B2F211A005F6B46 /* pd-vanilla */, - ); - name = CicmWrapper; - path = ThirdParty/CicmWrapper/Sources; - sourceTree = ""; - }; - 8F60287D1B2F211A005F6B46 /* pd-extended */ = { - isa = PBXGroup; - children = ( - 8F60287E1B2F211A005F6B46 /* g_canvas.h */, - 8F60287F1B2F211A005F6B46 /* m_imp.h */, - 8F6028801B2F211A005F6B46 /* m_pd.h */, - 8F6028811B2F211A005F6B46 /* s_stuff.h */, - ); - path = "pd-extended"; - sourceTree = ""; - }; - 8F6028821B2F211A005F6B46 /* pd-vanilla */ = { - isa = PBXGroup; - children = ( - 8F6028831B2F211A005F6B46 /* g_canvas.h */, - 8F6028841B2F211A005F6B46 /* m_imp.h */, - 8F6028851B2F211A005F6B46 /* m_pd.h */, - 8F6028861B2F211A005F6B46 /* s_stuff.h */, - ); - path = "pd-vanilla"; - sourceTree = ""; - }; - 8F83E8091A60346F00FDDCC8 /* Sources */ = { - isa = PBXGroup; - children = ( - 8FC2EDA31A62B32A00DBD231 /* hoa.decoder_tilde.cpp */, - 8FC2EDA41A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp */, - 8F80BF151A613B0A00692F98 /* hoa.encoder_tilde.cpp */, - 8FAD33071B19B05B002CBB4B /* hoa.exchanger_tilde.cpp */, - 8F80BF161A613B0A00692F98 /* hoa.map_tilde.cpp */, - 8F83E80A1A60346F00FDDCC8 /* hoa.io.cpp */, - 8F83E80B1A60346F00FDDCC8 /* hoa.map_gui.cpp */, - 8F83E80C1A60346F00FDDCC8 /* hoa.optim_tilde.cpp */, - 8F83E80D1A60346F00FDDCC8 /* hoa.process_tilde.cpp */, - 8F83E80E1A60346F00FDDCC8 /* hoa.tools.cpp */, - 8F83E80F1A60346F00FDDCC8 /* hoa.wider_tilde.cpp */, - 8F80BF1B1A613BC900692F98 /* hoa.space_gui.cpp */, - 8F80BF1E1A613BD600692F98 /* hoa.rotate_tilde.cpp */, - 8FC2ED851A627B4800DBD231 /* hoa.scope_gui_tilde.cpp */, - 8F80BF211A613BE500692F98 /* hoa.recomposer_tilde.cpp */, - 8F80BF241A613BEF00692F98 /* hoa.projector_tilde.cpp */, - ); - path = Sources; - sourceTree = ""; - }; - 8FFCAC0A1A5C0FC600E38483 /* Sources */ = { - isa = PBXGroup; - children = ( - 8FFCAC0E1A5C0FC600E38483 /* Hoa.hpp */, - 8FFCAC281A5C0FC600E38483 /* Defs.hpp */, - 8FFCAC291A5C0FC600E38483 /* Math.hpp */, - 8F83E7F41A5E7CD700FDDCC8 /* Signal.hpp */, - 8FFCAC0D1A5C0FC600E38483 /* Harmonics.hpp */, - 8FFCAC2B1A5C0FC600E38483 /* Planewaves.hpp */, - 8F5837361ABBF92F003F0A79 /* Processor.hpp */, - 8FFCAC0C1A5C0FC600E38483 /* Encoder.hpp */, - 8FFCAC2A1A5C0FC600E38483 /* Optim.hpp */, - 8F83E7F71A5EC73100FDDCC8 /* Wider.hpp */, - 8FFCAC2C1A5C0FC600E38483 /* Rotate.hpp */, - 8FFCAC0B1A5C0FC600E38483 /* Decoder.hpp */, - 8FFCAC2E1A5C0FC600E38483 /* Vector.hpp */, - 8F83E7F11A5E022300FDDCC8 /* Scope.hpp */, - 8F83E7EB1A5D7D9400FDDCC8 /* Projector.hpp */, - 8F83E7EE1A5D820F00FDDCC8 /* Recomposer.hpp */, - 8F83E7E51A5D277800FDDCC8 /* Meter.hpp */, - 8FDAB82D1AB1F4B3002D98AC /* Voronoi.hpp */, - 8FC2ED8F1A62A0DC00DBD231 /* Source.hpp */, - 8F7F5BF11B13B2B1008D6985 /* Exchanger.hpp */, - 8F83E7E21A5D26BF00FDDCC8 /* Tools.hpp */, - 8F9D78C51AAF07160091BFDF /* Hrir.hpp */, - 8FCBC9A31B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp */, - 8FCBC9A41B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp */, - ); - path = Sources; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 5913846D15DAA36D0029AD16 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8FFCAC6D1A5C0FC600E38483 /* Rotate.hpp in Headers */, - 8FB3A18C1B2EEFE800CCC760 /* epdmax.h in Headers */, - 8F83E7F51A5E7CD700FDDCC8 /* Signal.hpp in Headers */, - 8FFCAC2F1A5C0FC600E38483 /* Decoder.hpp in Headers */, - 8F60288F1B2F211A005F6B46 /* g_canvas.h in Headers */, - 8F83E7F81A5EC73100FDDCC8 /* Wider.hpp in Headers */, - 8FFCAC671A5C0FC600E38483 /* Math.hpp in Headers */, - 8F5837371ABBF92F003F0A79 /* Processor.hpp in Headers */, - 8FB3A1901B2EEFE800CCC760 /* epopup.h in Headers */, - 8FFCAC311A5C0FC600E38483 /* Encoder.hpp in Headers */, - 8FFCAC6B1A5C0FC600E38483 /* Planewaves.hpp in Headers */, - 8FB3A1861B2EEFE800CCC760 /* egraphics.h in Headers */, - 8F83E7EF1A5D820F00FDDCC8 /* Recomposer.hpp in Headers */, - 8F6028931B2F211A005F6B46 /* m_pd.h in Headers */, - 8FFCAC331A5C0FC600E38483 /* Harmonics.hpp in Headers */, - 8F3E8AD11AB9C286009A8EFC /* hoa.library.hpp in Headers */, - 8FCBC9A51B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp in Headers */, - 8FFCAC691A5C0FC600E38483 /* Optim.hpp in Headers */, - 8F6028871B2F211A005F6B46 /* g_canvas.h in Headers */, - 8FB3A17C1B2EEFE800CCC760 /* eclass.h in Headers */, - 8FFCAC711A5C0FC600E38483 /* Vector.hpp in Headers */, - 8FB3A1741B2EEFE800CCC760 /* cicm_wrapper.h in Headers */, - 8FCBC9A71B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp in Headers */, - 8F6028951B2F211A005F6B46 /* s_stuff.h in Headers */, - 8FB3A1821B2EEFE800CCC760 /* edefine.h in Headers */, - 8F6028911B2F211A005F6B46 /* m_imp.h in Headers */, - 8F83E7EC1A5D7D9400FDDCC8 /* Projector.hpp in Headers */, - 8F60288D1B2F211A005F6B46 /* s_stuff.h in Headers */, - 8F83E7E31A5D26BF00FDDCC8 /* Tools.hpp in Headers */, - 8FDAB82E1AB1F4B3002D98AC /* Voronoi.hpp in Headers */, - 8F9D78C61AAF07160091BFDF /* Hrir.hpp in Headers */, - 8FB3A1781B2EEFE800CCC760 /* ebox.h in Headers */, - 8F6028891B2F211A005F6B46 /* m_imp.h in Headers */, - 8FB3A1801B2EEFE800CCC760 /* ecommon.h in Headers */, - 8FFCAC351A5C0FC600E38483 /* Hoa.hpp in Headers */, - 8FFCAC651A5C0FC600E38483 /* Defs.hpp in Headers */, - 8F7F5BF21B13B2B1008D6985 /* Exchanger.hpp in Headers */, - 8FB3A18A1B2EEFE800CCC760 /* eobj.h in Headers */, - 8F60288B1B2F211A005F6B46 /* m_pd.h in Headers */, - 8F83E7F21A5E022300FDDCC8 /* Scope.hpp in Headers */, - 8F83E7E61A5D277800FDDCC8 /* Meter.hpp in Headers */, - 8FC2ED961A62A0DC00DBD231 /* Source.hpp in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8FAC0C57196985A400E09ACB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8FFCAC6E1A5C0FC600E38483 /* Rotate.hpp in Headers */, - 8FB3A18D1B2EEFE800CCC760 /* epdmax.h in Headers */, - 8F83E7F61A5E7CD700FDDCC8 /* Signal.hpp in Headers */, - 8FFCAC301A5C0FC600E38483 /* Decoder.hpp in Headers */, - 8F6028901B2F211A005F6B46 /* g_canvas.h in Headers */, - 8F83E7F91A5EC73100FDDCC8 /* Wider.hpp in Headers */, - 8FFCAC681A5C0FC600E38483 /* Math.hpp in Headers */, - 8F5837381ABBF92F003F0A79 /* Processor.hpp in Headers */, - 8FB3A1911B2EEFE800CCC760 /* epopup.h in Headers */, - 8FFCAC321A5C0FC600E38483 /* Encoder.hpp in Headers */, - 8FFCAC6C1A5C0FC600E38483 /* Planewaves.hpp in Headers */, - 8FB3A1871B2EEFE800CCC760 /* egraphics.h in Headers */, - 8F83E7F01A5D820F00FDDCC8 /* Recomposer.hpp in Headers */, - 8F6028941B2F211A005F6B46 /* m_pd.h in Headers */, - 8FFCAC341A5C0FC600E38483 /* Harmonics.hpp in Headers */, - 8F3E8AD21AB9C286009A8EFC /* hoa.library.hpp in Headers */, - 8FCBC9A61B2AE83F00CA3AAB /* HrirIrc1002C2D.hpp in Headers */, - 8FFCAC6A1A5C0FC600E38483 /* Optim.hpp in Headers */, - 8F6028881B2F211A005F6B46 /* g_canvas.h in Headers */, - 8FB3A17D1B2EEFE800CCC760 /* eclass.h in Headers */, - 8FFCAC721A5C0FC600E38483 /* Vector.hpp in Headers */, - 8FB3A1751B2EEFE800CCC760 /* cicm_wrapper.h in Headers */, - 8FCBC9A81B2AE83F00CA3AAB /* HrirIrc1002C3D.hpp in Headers */, - 8F6028961B2F211A005F6B46 /* s_stuff.h in Headers */, - 8FB3A1831B2EEFE800CCC760 /* edefine.h in Headers */, - 8F6028921B2F211A005F6B46 /* m_imp.h in Headers */, - 8F83E7ED1A5D7D9400FDDCC8 /* Projector.hpp in Headers */, - 8F60288E1B2F211A005F6B46 /* s_stuff.h in Headers */, - 8F83E7E41A5D26BF00FDDCC8 /* Tools.hpp in Headers */, - 8FDAB82F1AB1F4B3002D98AC /* Voronoi.hpp in Headers */, - 8F9D78C71AAF07160091BFDF /* Hrir.hpp in Headers */, - 8FB3A1791B2EEFE800CCC760 /* ebox.h in Headers */, - 8F60288A1B2F211A005F6B46 /* m_imp.h in Headers */, - 8FB3A1811B2EEFE800CCC760 /* ecommon.h in Headers */, - 8FFCAC361A5C0FC600E38483 /* Hoa.hpp in Headers */, - 8FFCAC661A5C0FC600E38483 /* Defs.hpp in Headers */, - 8F7F5BF31B13B2B1008D6985 /* Exchanger.hpp in Headers */, - 8FB3A18B1B2EEFE800CCC760 /* eobj.h in Headers */, - 8F60288C1B2F211A005F6B46 /* m_pd.h in Headers */, - 8F83E7F31A5E022300FDDCC8 /* Scope.hpp in Headers */, - 8F83E7E71A5D277800FDDCC8 /* Meter.hpp in Headers */, - 8FC2ED971A62A0DC00DBD231 /* Source.hpp in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 5913846E15DAA36D0029AD16 /* Hoa */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5913847315DAA36D0029AD16 /* Build configuration list for PBXNativeTarget "Hoa" */; - buildPhases = ( - 5913846B15DAA36D0029AD16 /* Sources */, - 5913846C15DAA36D0029AD16 /* Frameworks */, - 5913846D15DAA36D0029AD16 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Hoa; - productName = pd1; - productReference = 5913846F15DAA36D0029AD16 /* Hoa.pd_darwin */; - productType = "com.apple.product-type.library.dynamic"; - }; - 8FAC0BFC196985A400E09ACB /* Hoa_extended */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8FAC0C8F196985A400E09ACB /* Build configuration list for PBXNativeTarget "Hoa_extended" */; - buildPhases = ( - 8FAC0BFD196985A400E09ACB /* Sources */, - 8FAC0C55196985A400E09ACB /* Frameworks */, - 8FAC0C57196985A400E09ACB /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Hoa_extended; - productName = pd1; - productReference = 8FAC0C91196985A400E09ACB /* Hoa.pd_darwin */; - productType = "com.apple.product-type.library.dynamic"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 5913846615DAA36D0029AD16 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0630; - }; - buildConfigurationList = 5913846915DAA36D0029AD16 /* Build configuration list for PBXProject "Hoa" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 5913846415DAA36D0029AD16; - productRefGroup = 5913847015DAA36D0029AD16 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 5913846E15DAA36D0029AD16 /* Hoa */, - 8FAC0BFC196985A400E09ACB /* Hoa_extended */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 5913846B15DAA36D0029AD16 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8FAD33081B19B05B002CBB4B /* hoa.exchanger_tilde.cpp in Sources */, - 8FB3A1761B2EEFE800CCC760 /* ebox.c in Sources */, - 8F80BF191A613B0A00692F98 /* hoa.map_tilde.cpp in Sources */, - 8F80BF221A613BE500692F98 /* hoa.recomposer_tilde.cpp in Sources */, - 8F80BF1C1A613BC900692F98 /* hoa.space_gui.cpp in Sources */, - 8FC2EDA71A62B32A00DBD231 /* hoa.decoder_tilde.cpp in Sources */, - 8F80BF171A613B0A00692F98 /* hoa.encoder_tilde.cpp in Sources */, - 8FB3A17A1B2EEFE800CCC760 /* eclass.c in Sources */, - 8F80BF1F1A613BD600692F98 /* hoa.rotate_tilde.cpp in Sources */, - 8F83E8181A60346F00FDDCC8 /* hoa.tools.cpp in Sources */, - 8F83E8161A60346F00FDDCC8 /* hoa.process_tilde.cpp in Sources */, - 8F83E8121A60346F00FDDCC8 /* hoa.map_gui.cpp in Sources */, - 8F83E8141A60346F00FDDCC8 /* hoa.optim_tilde.cpp in Sources */, - 8FB3A1881B2EEFE800CCC760 /* eobj.c in Sources */, - 8FB3A18E1B2EEFE800CCC760 /* epopup.c in Sources */, - 8F83E8101A60346F00FDDCC8 /* hoa.io.cpp in Sources */, - 8F80BF251A613BEF00692F98 /* hoa.projector_tilde.cpp in Sources */, - 8FC2ED861A627B4800DBD231 /* hoa.scope_gui_tilde.cpp in Sources */, - 8FB3A17E1B2EEFE800CCC760 /* ecommon.c in Sources */, - 8FB3A1841B2EEFE800CCC760 /* egraphics.c in Sources */, - 8F3E8ACF1AB9C286009A8EFC /* hoa.library.cpp in Sources */, - 8F83E81A1A60346F00FDDCC8 /* hoa.wider_tilde.cpp in Sources */, - 8FC2EDA91A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8FAC0BFD196985A400E09ACB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8FAD33091B19B05B002CBB4B /* hoa.exchanger_tilde.cpp in Sources */, - 8FB3A1771B2EEFE800CCC760 /* ebox.c in Sources */, - 8F80BF1A1A613B0A00692F98 /* hoa.map_tilde.cpp in Sources */, - 8F80BF231A613BE500692F98 /* hoa.recomposer_tilde.cpp in Sources */, - 8F80BF1D1A613BC900692F98 /* hoa.space_gui.cpp in Sources */, - 8FC2EDA81A62B32A00DBD231 /* hoa.decoder_tilde.cpp in Sources */, - 8F80BF181A613B0A00692F98 /* hoa.encoder_tilde.cpp in Sources */, - 8FB3A17B1B2EEFE800CCC760 /* eclass.c in Sources */, - 8F80BF201A613BD600692F98 /* hoa.rotate_tilde.cpp in Sources */, - 8F83E8191A60346F00FDDCC8 /* hoa.tools.cpp in Sources */, - 8F83E8171A60346F00FDDCC8 /* hoa.process_tilde.cpp in Sources */, - 8F83E8131A60346F00FDDCC8 /* hoa.map_gui.cpp in Sources */, - 8F83E8151A60346F00FDDCC8 /* hoa.optim_tilde.cpp in Sources */, - 8FB3A1891B2EEFE800CCC760 /* eobj.c in Sources */, - 8FB3A18F1B2EEFE800CCC760 /* epopup.c in Sources */, - 8F83E8111A60346F00FDDCC8 /* hoa.io.cpp in Sources */, - 8F80BF261A613BEF00692F98 /* hoa.projector_tilde.cpp in Sources */, - 8FC2ED871A627B4800DBD231 /* hoa.scope_gui_tilde.cpp in Sources */, - 8FB3A17F1B2EEFE800CCC760 /* ecommon.c in Sources */, - 8FB3A1851B2EEFE800CCC760 /* egraphics.c in Sources */, - 8F3E8AD01AB9C286009A8EFC /* hoa.library.cpp in Sources */, - 8F83E81B1A60346F00FDDCC8 /* hoa.wider_tilde.cpp in Sources */, - 8FC2EDAA1A62B32A00DBD231 /* hoa.meter_gui_tilde.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 5913847215DAA36D0029AD16 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = fast; - GCC_PREPROCESSOR_DEFINITIONS = ""; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ""; - "HEADER_SEARCH_PATHS[arch=*]" = ""; - LIBRARY_SEARCH_PATHS = ""; - MACOSX_DEPLOYMENT_TARGET = 10.7; - PRODUCT_NAME = "$(PROJECT_NAME)"; - SDKROOT = macosx; - }; - name = Release; - }; - 5913847515DAA36D0029AD16 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; - CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; - CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_USE_OPTIMIZATION_PROFILE = NO; - CLANG_WARN_ASSIGN_ENUM = YES; - CLANG_WARN_CXX0X_EXTENSIONS = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; - CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; - CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES; - COMBINE_HIDPI_IMAGES = YES; - DEPLOYMENT_LOCATION = YES; - DSTROOT = /; - EXECUTABLE_EXTENSION = pd_darwin; - EXECUTABLE_PREFIX = ""; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = "compiler-default"; - GCC_ENABLE_CPP_EXCEPTIONS = YES; - GCC_FAST_MATH = NO; - GCC_OPTIMIZATION_LEVEL = fast; - GCC_PREPROCESSOR_DEFINITIONS = ""; - GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; - GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_UNROLL_LOOPS = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; - GCC_WARN_ABOUT_MISSING_NEWLINE = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; - GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; - GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; - GCC_WARN_PEDANTIC = YES; - GCC_WARN_SHADOW = YES; - GCC_WARN_SIGN_COMPARE = YES; - GCC_WARN_UNKNOWN_PRAGMAS = YES; - GCC_WARN_UNUSED_LABEL = YES; - GCC_WARN_UNUSED_PARAMETER = NO; - HEADER_SEARCH_PATHS = ( - "", - "/usr/local/include/voro++", - ); - "HEADER_SEARCH_PATHS[arch=*]" = "/Applications/Pd-0.46-6.app/Contents/Resources/src/"; - INSTALL_PATH = "/Applications/Pd-0.46-6.app/Contents/Resources/extra/Hoa"; - LIBRARY_SEARCH_PATHS = ""; - LLVM_LTO = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = ( - "-undefined", - dynamic_lookup, - ); - PRELINK_LIBS = ""; - PRODUCT_NAME = Hoa; - USER_HEADER_SEARCH_PATHS = "/Developer/usr/include /usr/local/include"; - }; - name = Release; - }; - 8FAC0C90196985A400E09ACB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; - CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - COMBINE_HIDPI_IMAGES = YES; - DEPLOYMENT_LOCATION = YES; - DSTROOT = /; - EXECUTABLE_EXTENSION = pd_darwin; - EXECUTABLE_PREFIX = ""; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_PREPROCESSOR_DEFINITIONS = "PD_EXTENDED=1"; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = ( - "", - "/usr/local/include/voro++", - ); - "HEADER_SEARCH_PATHS[arch=*]" = "/Applications/Pd-extended.app/Contents/Resources/include/pdextended/"; - INSTALL_PATH = "/Applications/Pd-extended.app/Contents/Resources/extra/Hoa"; - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = ( - "-undefined", - dynamic_lookup, - ); - PRELINK_LIBS = ""; - PRODUCT_NAME = Hoa; - USER_HEADER_SEARCH_PATHS = "/Developer/usr/include /usr/local/include"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 5913846915DAA36D0029AD16 /* Build configuration list for PBXProject "Hoa" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5913847215DAA36D0029AD16 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5913847315DAA36D0029AD16 /* Build configuration list for PBXNativeTarget "Hoa" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5913847515DAA36D0029AD16 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8FAC0C8F196985A400E09ACB /* Build configuration list for PBXNativeTarget "Hoa_extended" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8FAC0C90196985A400E09ACB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 5913846615DAA36D0029AD16 /* Project object */; -} diff --git a/Hoa.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Hoa.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6a10f22..0000000 --- a/Hoa.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Package/Hoa/LICENSE.txt b/LICENSE similarity index 66% rename from Package/Hoa/LICENSE.txt rename to LICENSE index 94a9ed0..b743e04 100644 --- a/Package/Hoa/LICENSE.txt +++ b/LICENSE @@ -1,16 +1,16 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. - Preamble + Preamble - The GNU General Public License is a free, copyleft license for +The GNU General Public License is a free, copyleft license for software and other kinds of works. - The licenses for most software and other practical works are designed +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free @@ -19,35 +19,35 @@ GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - To protect your rights, we need to prevent others from denying you +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - For example, if you distribute copies of such a program, whether +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - Developers that use the GNU GPL protect your rights with two steps: +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - For the developers' and authors' protection, the GPL clearly explains +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - Some devices are designed to deny users access to install or run +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic @@ -58,49 +58,49 @@ products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - Finally, every program is threatened constantly by software patents. +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - The precise terms and conditions for copying, distribution and +The precise terms and conditions for copying, distribution and modification follow. - TERMS AND CONDITIONS + TERMS AND CONDITIONS - 0. Definitions. +0. Definitions. - "This License" refers to version 3 of the GNU General Public License. +"This License" refers to version 3 of the GNU General Public License. - "Copyright" also means copyright-like laws that apply to other kinds of +"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - "The Program" refers to any copyrightable work licensed under this +"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. - To "modify" a work means to copy from or adapt all or part of the work +To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. - A "covered work" means either the unmodified Program or a work based +A "covered work" means either the unmodified Program or a work based on the Program. - To "propagate" a work means to do anything with it that, without +To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - To "convey" a work means any kind of propagation that enables other +To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - An interactive user interface displays "Appropriate Legal Notices" +An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the @@ -109,18 +109,18 @@ work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - 1. Source Code. +1. Source Code. - The "source code" for a work means the preferred form of the work +The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. - A "Standard Interface" means an interface that either is an official +A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - The "System Libraries" of an executable work include anything, other +The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that @@ -131,7 +131,7 @@ implementation is available to the public in source code form. A (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - The "Corresponding Source" for a work in object code form means all +The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's @@ -144,16 +144,16 @@ linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. - The Corresponding Source need not include anything that users +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - The Corresponding Source for a work in source code form is that +The Corresponding Source for a work in source code form is that same work. - 2. Basic Permissions. +2. Basic Permissions. - All rights granted under this License are granted for the term of +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a @@ -161,7 +161,7 @@ covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - You may make, run and propagate covered works that you do not +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you @@ -172,19 +172,19 @@ for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - Conveying under any other circumstances is permitted solely under +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. +3. Protecting Users' Legal Rights From Anti-Circumvention Law. - No covered work shall be deemed part of an effective technological +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - When you convey a covered work, you waive any legal power to forbid +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or @@ -192,9 +192,9 @@ modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - 4. Conveying Verbatim Copies. +4. Conveying Verbatim Copies. - You may convey verbatim copies of the Program's source code as you +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any @@ -202,37 +202,37 @@ non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - You may charge any price or no price for each copy that you convey, +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - 5. Conveying Modified Source Versions. +5. Conveying Modified Source Versions. - You may convey a work based on the Program, or the modifications to +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. - A compilation of a covered work with other separate and independent +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an @@ -242,59 +242,59 @@ beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - 6. Conveying Non-Source Forms. +6. Conveying Non-Source Forms. - You may convey a covered work in object code form under the terms +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - A "User Product" is either (1) a "consumer product", which means any +A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, @@ -307,7 +307,7 @@ is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - "Installation Information" for a User Product means any methods, +"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must @@ -315,7 +315,7 @@ suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - If you convey an object code work under this section in, or with, or +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a @@ -326,7 +326,7 @@ if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - The requirement to provide Installation Information does not include a +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a @@ -334,15 +334,15 @@ network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - Corresponding Source conveyed, and Installation Information provided, +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - 7. Additional Terms. +7. Additional Terms. - "Additional permissions" are terms that supplement the terms of this +"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent @@ -351,41 +351,41 @@ apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - When you convey a copy of a covered work, you may at your option +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - Notwithstanding any other provision of this License, for material you +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. - All other non-permissive additional terms are considered "further +All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further @@ -395,46 +395,46 @@ License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - If you add terms to a covered work in accord with this section, you +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - Additional terms, permissive or non-permissive, may be stated in the +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - 8. Termination. +8. Termination. - You may not propagate or modify a covered work except as expressly +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - However, if you cease all violation of this License, then your +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - Moreover, your license from a particular copyright holder is +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - Termination of your rights under this section does not terminate the +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - 9. Acceptance Not Required for Having Copies. +9. Acceptance Not Required for Having Copies. - You are not required to accept this License in order to receive or +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, @@ -443,14 +443,14 @@ modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - 10. Automatic Licensing of Downstream Recipients. +10. Automatic Licensing of Downstream Recipients. - Each time you convey a covered work, the recipient automatically +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - An "entity transaction" is a transaction transferring control of an +An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that @@ -460,7 +460,7 @@ give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - You may not impose any further restrictions on the exercise of the +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation @@ -468,13 +468,13 @@ rights granted under this License, and you may not initiate litigation any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - 11. Patents. +11. Patents. - A "contributor" is a copyright holder who authorizes use under this +A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". - A contributor's "essential patent claims" are all patent claims +A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, @@ -484,19 +484,19 @@ purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - Each contributor grants you a non-exclusive, worldwide, royalty-free +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - In the following three paragraphs, a "patent license" is any express +In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - If you convey a covered work, knowingly relying on a patent license, +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, @@ -510,7 +510,7 @@ covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - If, pursuant to or in connection with a single transaction or +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify @@ -518,7 +518,7 @@ or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - A patent license is "discriminatory" if it does not include within +A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered @@ -533,13 +533,13 @@ for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - Nothing in this License shall be construed as excluding or limiting +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - 12. No Surrender of Others' Freedom. +12. No Surrender of Others' Freedom. - If conditions are imposed on you (whether by court order, agreement or +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this @@ -549,9 +549,9 @@ to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - 13. Use with the GNU Affero General Public License. +13. Use with the GNU Affero General Public License. - Notwithstanding any other provision of this License, you have +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this @@ -560,14 +560,14 @@ but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - 14. Revised Versions of this License. +14. Revised Versions of this License. - The Free Software Foundation may publish revised and/or new versions of +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - Each version is given a distinguishing version number. If the +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered @@ -576,19 +576,19 @@ Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. - If the Program specifies that a proxy can decide which future +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - Later license versions may give you additional or different +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - 15. Disclaimer of Warranty. +15. Disclaimer of Warranty. - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, @@ -597,9 +597,9 @@ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - 16. Limitation of Liability. +16. Limitation of Liability. - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE @@ -609,64 +609,64 @@ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - 17. Interpretation of Sections 15 and 16. +17. Interpretation of Sections 15 and 16. - If the disclaimer of warranty and limitation of liability provided +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS - How to Apply These Terms to Your New Programs +How to Apply These Terms to Your New Programs - If you develop a new program, and you want it to be of the greatest +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - To do so, attach the following notices to the program. It is safest +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - Copyright (C) + +Copyright (C) - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . +You should have received a copy of the GNU General Public License +along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. - If the program does terminal interaction, make it output a short +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. + Copyright (C) +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". - You should also get your employer (if you work as a programmer) or school, +You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - The GNU General Public License does not permit incorporating your program +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 94a9ed0..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 8480e53..0000000 --- a/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I m4 - -pkglib_LTLIBRARIES = Hoa.la - -Hoa_la_CXXFLAGS = @PD_CPPFLAGS@ -s -O3 -fPIC -fpermissive -std=c++11 -Hoa_la_LDFLAGS = -module -avoid-version -shared -shrext .@EXTENSION@ @PD_LDFLAGS@ -fPIC -Hoa_la_LIBADD = Sources/libHoapd.la -Hoa_la_LIBADD += ThirdParty/CicmWrapper/Sources/libCicmWrapper.la - -Hoa_la_SOURCES = hoa.library.hpp \ -hoa.library.cpp - -ALL_CFLAGS = -I"$(PD_INCLUDE)" - -Hoadir=$(pkglibdir) - -dist_Hoa_DATA = \ - LICENSE.txt \ - README.txt - -EXTRA_DIST = autogen.sh - -DISTDIR=$(PACKAGE_NAME)-$(PACKAGE_VERSION) -ORIGDIR=pd-$(PACKAGE_NAME)_$(PACKAGE_VERSION) -OS=$(shell uname -s) -DISTBINDIR=$(DISTDIR)-$(OS) - -SUBDIRS= Sources -SUBDIRS+= ThirdParty/CicmWrapper -SUBDIRS+= Package/Hoa - -$(abs_builddir)/.libs/Hoa.@EXTENSION@: Hoa.la - -$(top_builddir)/Hoa.@EXTENSION@: $(abs_builddir)/.libs/Hoa.@EXTENSION@ - rm -f $@ && cd $(top_builddir) && test -e $< && $(LN_S) $< Hoa.@EXTENSION@ || true - -.PHONY: clean-conveniencelink help - -clean-conveniencelink: - test -L $(top_builddir)/Hoa.@EXTENSION@ && rm -f $(top_builddir)/Hoa.@EXTENSION@ || true - - -all-local:: $(top_builddir)/Hoa.@EXTENSION@ help - -clean-local:: clean-conveniencelink - -README.txt: - cp README.md README.txt diff --git a/Package/Hoa/Hoa-help.pd b/Package/Hoa/Hoa-help.pd deleted file mode 100644 index 84cf656..0000000 --- a/Package/Hoa/Hoa-help.pd +++ /dev/null @@ -1,179 +0,0 @@ -#N canvas 539 58 438 587 10; -#X obj 14 21 c.patcherinfos; -#X obj 19 4 loadbang; -#X obj 3 3 hoa.help.header; -#X obj 24 518 hoa.help.pub; -#X obj 5 156 c.tab @size 398 36 @fontname "Monaco" @fontweight "normal" -@fontslant "roman" @fontsize 13 @receive "(null)" @send "(null)" @presetname -"(null)" @orientation 0 @toggle 1 @items "2d" "3d" "common" "process" -"tutos" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1 @hocolor 0.5 0.5 0.5 1 @secolor 0.35 0.35 0.35 1; -#X obj 5 196 c.tab @size 398 264 @fontname "Monaco" @fontweight "normal" -@fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" @presetname -"(null)" @orientation 1 @toggle 0 @items "hoa.2d.decoder~" "hoa.2d.encoder~" -"hoa.2d.map~" "hoa.2d.meter~" "hoa.2d.optim~" "hoa.2d.projector~" "hoa.2d.recomposer~" -"hoa.2d.rotate~" "hoa.2d.scope~" "hoa.2d.space" "hoa.2d.wider~" @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 @hocolor -0.5 0.5 0.5 1 @secolor 0.35 0.35 0.35 1; -#N canvas 809 275 452 384 sel.hoa.txt 0; -#X obj -556 -387 unpack s s; -#X msg -394 -362 clear; -#X obj -592 -600 inlet; -#X obj -499 -336 outlet; -#X obj -556 -443 c.prepend read; -#X obj -556 -413 textfile; -#X obj -590 -530 until; -#X msg -573 -498 rewind; -#X obj -590 -572 t b b s b; -#X obj -556 -466 makefilename hoa.%s.txt; -#X obj -499 -363 c.prepend append; -#X connect 0 1 10 0; -#X connect 1 0 3 0; -#X connect 2 0 8 0; -#X connect 4 0 5 0; -#X connect 5 0 0 0; -#X connect 5 1 6 1; -#X connect 6 0 5 0; -#X connect 7 0 5 0; -#X connect 8 0 6 0; -#X connect 8 1 7 0; -#X connect 8 2 9 0; -#X connect 8 3 1 0; -#X connect 9 0 4 0; -#X connect 10 0 3 0; -#X restore 284 263 pd sel.hoa.txt; -#N canvas 672 99 691 357 sel.hoa.text2 0; -#X obj -326 -135 list split 1; -#X obj -292 -115 list split 1; -#X obj -467 -385 inlet; -#X obj -258 -62 outlet; -#X obj -467 -363 route -1; -#X obj -328 -380 inlet; -#X obj -326 -223 c.prepend read; -#X obj -326 -193 textfile; -#X obj -326 -352 t s b; -#X obj -422 -286 until; -#X msg -356 -298 rewind; -#X obj -326 -160 spigot 0; -#X obj -422 -218 f 0; -#X obj -383 -217 + 1; -#X obj -422 -194 ==; -#X msg -384 -250 0; -#X obj -422 -310 + 1; -#X obj -433 -241 t b b; -#X obj -326 -246 makefilename hoa.%s.txt; -#X obj -258 -92 c.prepend text 10 10; -#X msg -126 -92 clear; -#X obj -422 -336 t f f b b; -#X connect 0 1 1 0; -#X connect 1 1 19 0; -#X connect 2 0 4 0; -#X connect 4 1 21 0; -#X connect 5 0 8 0; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 18 0; -#X connect 8 1 20 0; -#X connect 9 0 17 0; -#X connect 10 0 7 0; -#X connect 11 0 0 0; -#X connect 12 0 13 0; -#X connect 12 0 14 0; -#X connect 13 0 12 1; -#X connect 14 0 11 1; -#X connect 15 0 12 1; -#X connect 16 0 9 0; -#X connect 17 0 7 0; -#X connect 17 1 12 0; -#X connect 18 0 6 0; -#X connect 19 0 3 0; -#X connect 20 0 3 0; -#X connect 21 0 16 0; -#X connect 21 1 14 1; -#X connect 21 1 15 0; -#X connect 21 2 10 0; -#X connect 21 3 20 0; -#X restore 136 331 pd sel.hoa.text2; -#N canvas 514 160 694 586 hoa.open.hel 0; -#X obj 371 248 makefilename %s-help.pd; -#X obj 371 281 pack s s; -#X obj 398 208 c.patcherinfos; -#X obj 371 187 t s b; -#X msg 371 308 \; pd open \$1 \$2; -#X obj 438 228 makefilename %s/helps; -#X obj 216 19 inlet; -#X obj 96 356 pack s s; -#X obj 143 213 c.patcherinfos; -#X msg 96 383 \; pd open \$1 \$2; -#X obj 183 233 makefilename %s/tutorials; -#X obj 16 30 sel tutos; -#X obj 16 10 inlet; -#X obj 96 168 spigot 0; -#X obj 371 163 spigot 1; -#X obj 16 72 f 1; -#X obj 67 72 f 0; -#X obj 42 72 f 0; -#X obj 94 72 f 1; -#X obj 67 50 bang; -#X msg 74 286 hoa.tools.2d.pd; -#X obj 146 19 inlet; -#X obj 96 192 t f b; -#X msg 235 302 hoa.tools.3d.pd; -#X obj 53 323 makefilename Tutorial_%d.pd; -#X obj 53 233 + 1; -#X obj 114 253 sel 11 12; -#X connect 0 0 1 0; -#X connect 1 0 4 0; -#X connect 2 1 5 0; -#X connect 3 0 0 0; -#X connect 3 1 2 0; -#X connect 5 0 1 1; -#X connect 6 0 14 0; -#X connect 7 0 9 0; -#X connect 8 1 10 0; -#X connect 10 0 7 1; -#X connect 11 0 15 0; -#X connect 11 0 17 0; -#X connect 11 1 19 0; -#X connect 12 0 11 0; -#X connect 13 0 22 0; -#X connect 14 0 3 0; -#X connect 15 0 13 1; -#X connect 16 0 13 1; -#X connect 17 0 14 1; -#X connect 18 0 14 1; -#X connect 19 0 16 0; -#X connect 19 0 18 0; -#X connect 20 0 7 0; -#X connect 21 0 13 0; -#X connect 22 0 25 0; -#X connect 22 1 8 0; -#X connect 23 0 7 0; -#X connect 24 0 7 0; -#X connect 25 0 26 0; -#X connect 26 0 20 0; -#X connect 26 1 23 0; -#X connect 26 2 24 0; -#X restore 220 420 pd hoa.open.hel; -#X obj 6 173 c.loadmess 0; -#X obj 5 464 c.blackboard @size 398 39 @fontname "Monaco" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@chalkmode 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X text 4 47 Hoa Library allows musicians and composers to synthesize -\, transform and render sound fields in a creative and artistic way. -This library facilitates the understanding and the appropriation of -key concepts of Ambisonics. Thanks to original graphical interfaces -a lot of new signal processings are allowed like diffuse sound field -synthesis \, perspective distorsion or spatial filtering.; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 4 1 6 0; -#X connect 4 1 7 1; -#X connect 4 1 8 0; -#X connect 5 0 8 1; -#X connect 5 1 8 2; -#X connect 5 2 7 0; -#X connect 6 0 5 0; -#X connect 7 0 10 0; -#X connect 9 0 4 0; -#X coords 0 -2.14748e+09 1 -2.14748e+09 100 60 0; diff --git a/Package/Hoa/Makefile.am b/Package/Hoa/Makefile.am deleted file mode 100644 index f972875..0000000 --- a/Package/Hoa/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.librarydir=$(pkglibdir) - -dist_hoa.library_DATA = Hoa-help.pd - -SUBDIRS=helps media misc patchers tutorials diff --git a/Package/Hoa/README.txt b/Package/Hoa/README.txt deleted file mode 100644 index 22055f2..0000000 --- a/Package/Hoa/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -## [HOA](http://www.mshparisnord.fr/hoalibrary/ "Hoa Library") for Pure Data - -![CaptureHoaPD](http://www.mshparisnord.fr/hoalibrary/wp-content/uploads/2015/06/CaptureHoaPD.png) - -### Compatibilty : - -The lastest release has been tested [Pure Data Vanilla](http://msp.ucsd.edu/software.html "PD-Vanilla") (0.46.6 - 32/64 bits) & [Pure Data Extended](https://puredata.info/ "PD-Extended") (0.43.4) on Linux, Mac Os, Windows . - -### Installation : - -With Pure Data Vanilla, copy the Hoa folder in your package folder and add hoa in the PD's statup window if you use the default package folder\*, otherwise add Hoa/hoa. - -With Pure Data Extended, copy the Hoa folder in your package folder and add -lib externals/Hoa in the statup falgs if you use the default package folder\*, otherwise add -lib Hoa/Hoa. - -\* The default package folder are generally /usr/local/lib/pd-externals on Linux, /Library/Pd on Mac Os and C:\Program Files\Common Files\Pd on Windows. - -__Important__ : The Hoa library needs the [Cream library](https://github.com/CICM/CreamLibrary "Cream") to work properly. - -### Documentation : - -Helps and tutorials are availables in the Hoa folder of the help browser. - -### Compilation : - - ./autogen.sh (if needed) - ./configure (useful options --with-pd=) - make - make install (optional) - -XCode, CodeBlock and Visual Studio projects are also available. - -### Dependencies : - -[Hoa Library](https://github.com/CICM/HoaLibrary-Light "Hoa Library") & the [Cicm Wrapper](https://github.com/CICM/CicmWrapper "Cicm Wrapper"). - -### Authors : - -Pierre Guillot -Eliott Paris -Thomas Le Meur -Julien Colafrancesco - -### Licence : - -The HOA Library in under the GNU Public License. If you'd like to avoid the restrictions of the GPL and use Hoa Library for a closed-source product, you contact the CICM. diff --git a/Package/Hoa/helps/Makefile.am b/Package/Hoa/helps/Makefile.am deleted file mode 100644 index 6095761..0000000 --- a/Package/Hoa/helps/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.libraryhelpdir=$(pkglibdir)/helps - -dist_hoa.libraryhelp_DATA = \ -hoa.3d.scope~-help.pd \ -hoa.3d.wider~-help.pd \ -hoa.connect-help.pd \ -hoa.dac~-help.pd \ -hoa.2d.decoder~-help.pd \ -hoa.fx.convolve~-help.pd \ -hoa.2d.encoder~-help.pd \ -hoa.fx.delay~-help.pd \ -hoa.2d.map~-help.pd \ -hoa.fx.freeverb~-help.pd \ -hoa.2d.meter~-help.pd \ -hoa.fx.gain~-help.pd \ -hoa.2d.optim~-help.pd \ -hoa.fx.mirror~-help.pd \ -hoa.2d.projector~-help.pd \ -hoa.fx.ringmod~-help.pd \ -hoa.2d.recomposer~-help.pd \ -hoa.io-help.pd \ -hoa.2d.rotate~-help.pd \ -hoa.map-help.pd \ -hoa.2d.scope~-help.pd \ -hoa.pi-help.pd \ -hoa.2d.space-help.pd \ -hoa.pi~-help.pd \ -hoa.2d.wider~-help.pd \ -hoa.process~-help.pd \ -hoa.3d.decoder~-help.pd \ -hoa.syn.delay~-help.pd \ -hoa.3d.encoder~-help.pd \ -hoa.3d.map~-help.pd \ -hoa.syn.grain~-help.pd \ -hoa.3d.meter~-help.pd \ -hoa.syn.ringmod~-help.pd \ -hoa.3d.optim~-help.pd \ -hoa.thisprocess~-help.pd \ -hoa.3d.exchanger~-help.pd \ -hoa.2d.exchanger~-help.pd - diff --git a/Package/Hoa/helps/hoa.2d.decoder~-help.pd b/Package/Hoa/helps/hoa.2d.decoder~-help.pd deleted file mode 100644 index 665468a..0000000 --- a/Package/Hoa/helps/hoa.2d.decoder~-help.pd +++ /dev/null @@ -1,209 +0,0 @@ -#N canvas 105 57 1197 687 10; -#X text 4 82 1st argument is the order.; -#X text 4 138 3rd argument is the number of loudspeakers (minmum 2 -* order + 1 for ambisonic mode).; -#X obj 458 417 c.meter~ @size 9 71 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @coldcolor -0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor -1 0.6 0 0.8 @overcolor 1 0 0 0.8; -#X obj 707 417 c.meter~ @size 9 71 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @coldcolor -0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor -1 0.6 0 0.8 @overcolor 1 0 0 0.8; -#X obj 458 205 c.gain~ @size 131 10 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor -0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; -#X msg 558 421 \; pd dsp 1; -#X msg 558 456 \; pd dsp 0; -#X text 3 47 hoa.2d.decoder~ decodes an ambisonic sound field for several -loudspeakers configurations or for headphones.; -#X msg 16 311 offset \$1; -#X obj 16 278 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 13 257 Offset of the loudspeakers in degrees; -#X msg 917 250 offset \$1; -#X obj 917 217 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 914 196 Offset of the loudspeakers in degrees; -#X obj 97 318 hoa.2d.optim~ 7 maxRe ---------------------; -#X obj 839 328 hoa.2d.optim~ 7 inPhase -------------------; -#X obj 97 404 hoa.2d.meter~ @size 261 261 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@channels 16 @angles 0 22.5 45 67.5 90 112.5 135 157.5 180 202.5 225 -247.5 270 292.5 315 337.5 @offset 0 @rotation "anti-clockwise" @vectors -"energy" @interval 50 @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor 0.85 -0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 0 0 0.8 @energycolor -0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 839 403 hoa.2d.meter~ @size 261 261 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@channels 5 @angles 0 30 110 250 330 @offset 0 @rotation "anti-clockwise" -@vectors "energy" @interval 50 @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 -0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor -0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 0 0 0.8 @energycolor -0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 561 25 hoa.connect; -#X obj 561 5 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 14 187 Ambisonic decoding is used for a perfect circle of loudspeakers -where all of them are to equal distance. The minimum number of loudspeakers -is 2 * order + 1 (default : 2 * order + 2). The fourth argument is -the offset of loudpeakers in degrees.; -#X text 3 97 2nd argument is the decoding mode : ambisonic or 0 \, -binaural or 1 (for headphones) \, irregular or 2 (for an irregular -loudpspeakers array).; -#X obj 707 196 hoa.pi~ 2; -#X obj 458 226 hoa.2d.encoder~ 7 ------------------------; -#X obj 13 20 c.patcherinfos; -#X obj 18 3 loadbang; -#X obj 3 3 hoa.help.header; -#X obj 420 628 hoa.help.pub; -#X text 448 90 Important : Unlike the GUI \, the argument are not saved -with the object. You have to write it in the box or to send a message. -; -#X obj 420 3 hoa.help.also; -#X obj 458 506 hoa.dac~ 1 2 -----------------------------; -#X obj 707 174 phasor~ 0.3; -#X obj 458 164 hoa.soundrone; -#X obj 97 351 hoa.2d.decoder~ 7 regular 16 --------------; -#X obj 839 356 hoa.2d.decoder~ 7 irregular 5 @angles 0 30 110 250 330 -, f 43; -#X text 834 99 Irregular mode is used for standard configurations : -mono (1) \, stereo (2) \, 3.1 (3) \, quadriphonie (4) \, 5.1 (5) \, -6.1 \, 7.1. The fourth argument is the irregular decoding mode : panning -(default) or projection. You should use "inPhase" optimization to avoid -artefact.; -#X msg 730 354 crop \$1; -#X obj 730 327 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 512 @minmax 0 512 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X text 425 540 Binaural mode is used for headphones. If the process -cost too much CPU \, you can crop the responses (the max length is -512 samples).; -#X obj 458 387 hoa.2d.decoder~ 7 binaural 2 @crop 256, f 42; -#X connect 4 0 23 0; -#X connect 8 0 33 0; -#X connect 8 0 16 0; -#X connect 9 0 8 0; -#X connect 11 0 34 0; -#X connect 11 0 17 0; -#X connect 12 0 11 0; -#X connect 14 0 33 0; -#X connect 14 1 33 1; -#X connect 14 2 33 2; -#X connect 14 3 33 3; -#X connect 14 4 33 4; -#X connect 14 5 33 5; -#X connect 14 6 33 6; -#X connect 14 7 33 7; -#X connect 14 8 33 8; -#X connect 14 9 33 9; -#X connect 14 10 33 10; -#X connect 14 11 33 11; -#X connect 14 12 33 12; -#X connect 14 13 33 13; -#X connect 14 14 33 14; -#X connect 15 0 34 0; -#X connect 15 1 34 1; -#X connect 15 2 34 2; -#X connect 15 3 34 3; -#X connect 15 4 34 4; -#X connect 15 5 34 5; -#X connect 15 6 34 6; -#X connect 15 7 34 7; -#X connect 15 8 34 8; -#X connect 15 9 34 9; -#X connect 15 10 34 10; -#X connect 15 11 34 11; -#X connect 15 12 34 12; -#X connect 15 13 34 13; -#X connect 15 14 34 14; -#X connect 19 0 18 0; -#X connect 22 0 23 1; -#X connect 23 0 14 0; -#X connect 23 0 15 0; -#X connect 23 0 39 0; -#X connect 23 1 14 1; -#X connect 23 1 15 1; -#X connect 23 1 39 1; -#X connect 23 2 14 2; -#X connect 23 2 15 2; -#X connect 23 2 39 2; -#X connect 23 3 14 3; -#X connect 23 3 15 3; -#X connect 23 3 39 3; -#X connect 23 4 14 4; -#X connect 23 4 15 4; -#X connect 23 4 39 4; -#X connect 23 5 14 5; -#X connect 23 5 15 5; -#X connect 23 5 39 5; -#X connect 23 6 14 6; -#X connect 23 6 15 6; -#X connect 23 6 39 6; -#X connect 23 7 14 7; -#X connect 23 7 15 7; -#X connect 23 7 39 7; -#X connect 23 8 14 8; -#X connect 23 8 15 8; -#X connect 23 8 39 8; -#X connect 23 9 14 9; -#X connect 23 9 15 9; -#X connect 23 9 39 9; -#X connect 23 10 14 10; -#X connect 23 10 15 10; -#X connect 23 10 39 10; -#X connect 23 11 14 11; -#X connect 23 11 15 11; -#X connect 23 11 39 11; -#X connect 23 12 14 12; -#X connect 23 12 15 12; -#X connect 23 12 39 12; -#X connect 23 13 14 13; -#X connect 23 13 15 13; -#X connect 23 13 39 13; -#X connect 23 14 14 14; -#X connect 23 14 15 14; -#X connect 23 14 39 14; -#X connect 24 0 26 0; -#X connect 25 0 24 0; -#X connect 31 0 22 1; -#X connect 32 0 4 0; -#X connect 33 0 16 0; -#X connect 33 1 16 1; -#X connect 33 2 16 2; -#X connect 33 3 16 3; -#X connect 33 4 16 4; -#X connect 33 5 16 5; -#X connect 33 6 16 6; -#X connect 33 7 16 7; -#X connect 33 8 16 8; -#X connect 33 9 16 9; -#X connect 33 10 16 10; -#X connect 33 11 16 11; -#X connect 33 12 16 12; -#X connect 33 13 16 13; -#X connect 33 14 16 14; -#X connect 33 15 16 15; -#X connect 34 0 17 0; -#X connect 34 1 17 1; -#X connect 34 2 17 2; -#X connect 34 3 17 3; -#X connect 34 4 17 4; -#X connect 36 0 39 14; -#X connect 37 0 36 0; -#X connect 39 0 30 0; -#X connect 39 0 2 0; -#X connect 39 1 3 0; -#X connect 39 1 30 1; -#X coords 0 687 1 686 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.encoder~-help.pd b/Package/Hoa/helps/hoa.2d.encoder~-help.pd deleted file mode 100644 index ca48ebb..0000000 --- a/Package/Hoa/helps/hoa.2d.encoder~-help.pd +++ /dev/null @@ -1,88 +0,0 @@ -#N canvas 345 36 735 641 10; -#X obj 437 77 phasor~ -0.3; -#X text 180 81 source; -#X msg 53 238 \; pd dsp 1; -#X msg 53 273 \; pd dsp 0; -#X obj 457 148 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 182 153 hoa.2d.encoder~ 7 -------------------------; -#X obj 182 106 hoa.soundgrain; -#X obj 182 135 c.gain~ @size 131 10 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor -0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; -#X obj 612 143 hoa.connect; -#X obj 612 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 437 102 hoa.pi~ 2; -#X obj 5 22 c.patcherinfos; -#X obj 5 5 loadbang; -#X obj 5 5 hoa.help.header; -#X obj 135 563 hoa.help.pub; -#X obj 421 5 hoa.help.also; -#X text 10 49 hoa.2d.encoder~ creates the circular harmonics of a signal -depending on a given order and an azimuth.; -#X text 471 127 azimuth (-π & π); -#X obj 182 494 hoa.2d.decoder~ 7 regular 16 --------------; -#X obj 182 542 hoa.dac~ 1:16 -----------------------------; -#X obj 182 206 hoa.2d.scope~ @size 261 261 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 7 @view 0 @gain 5 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X connect 0 0 10 1; -#X connect 5 0 18 0; -#X connect 5 0 20 0; -#X connect 5 1 18 1; -#X connect 5 1 20 1; -#X connect 5 2 18 2; -#X connect 5 2 20 2; -#X connect 5 3 18 3; -#X connect 5 3 20 3; -#X connect 5 4 18 4; -#X connect 5 4 20 4; -#X connect 5 5 18 5; -#X connect 5 5 20 5; -#X connect 5 6 18 6; -#X connect 5 6 20 6; -#X connect 5 7 18 7; -#X connect 5 7 20 7; -#X connect 5 8 18 8; -#X connect 5 8 20 8; -#X connect 5 9 18 9; -#X connect 5 9 20 9; -#X connect 5 10 18 10; -#X connect 5 10 20 10; -#X connect 5 11 18 11; -#X connect 5 11 20 11; -#X connect 5 12 18 12; -#X connect 5 12 20 12; -#X connect 5 13 18 13; -#X connect 5 13 20 13; -#X connect 5 14 18 14; -#X connect 5 14 20 14; -#X connect 6 0 7 0; -#X connect 7 0 5 0; -#X connect 9 0 8 0; -#X connect 10 0 5 1; -#X connect 10 0 4 0; -#X connect 11 0 13 0; -#X connect 12 0 11 0; -#X connect 18 0 19 0; -#X connect 18 1 19 1; -#X connect 18 2 19 2; -#X connect 18 3 19 3; -#X connect 18 4 19 4; -#X connect 18 5 19 5; -#X connect 18 6 19 6; -#X connect 18 7 19 7; -#X connect 18 8 19 8; -#X connect 18 9 19 9; -#X connect 18 10 19 10; -#X connect 18 11 19 11; -#X connect 18 12 19 12; -#X connect 18 13 19 13; -#X connect 18 14 19 14; -#X connect 18 15 19 15; -#X coords 0 641 1 640 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.exchanger~-help.pd b/Package/Hoa/helps/hoa.2d.exchanger~-help.pd deleted file mode 100644 index 494d734..0000000 --- a/Package/Hoa/helps/hoa.2d.exchanger~-help.pd +++ /dev/null @@ -1,159 +0,0 @@ -#N canvas 414 60 703 653 10; -#X obj 5 24 c.patcherinfos; -#X obj 5 7 loadbang; -#X obj 5 7 hoa.help.header; -#X obj 6 593 hoa.help.pub; -#X obj 421 7 hoa.help.also; -#X obj 149 507 c.dsp~ @size 30 30 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @logocolor 0 0.6 0 -0.8; -#X text 10 51 hoa.2d.exchanger~ renumbers and normalizes the channels. -; -#X obj 566 32 hoa.connect; -#X obj 566 12 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 372 57 sig~ 1; -#X obj 372 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 414 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 499 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 584 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X text 10 181 Numbering :, f 46; -#X text 10 191 toFurseMalham, f 46; -#X text 10 201 fromFurseMalham, f 46; -#X text 10 221 Normaliaztion :, f 46; -#X text 10 231 toMaxN, f 46; -#X text 10 241 fromMaxN, f 46; -#X text 10 262 The standards :, f 46; -#X text 10 271 toBFormat (aka. toFurseMalham & toMaxN), f 46; -#X text 10 281 fromBFormat (aka. fromFurseMalham & fromMaxN); -#X text 2 551 For further informations : http://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats#N3D -; -#X text 10 81 By default \, there is no normalization and the numbering -is ACN (cf tutorials). The exchangers will always convert from or to -the standard.; -#X text 10 141 The exchanger can take one or two arguments for the -numbering and the normalization.; -#X obj 372 80 hoa.2d.encoder~ 3, f 43; -#X obj 372 257 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 414 282 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 257 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 499 282 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 257 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 584 282 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 257 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 210 hoa.2d.exchanger~ 3 toBFormat, f 43; -#X obj 372 397 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 414 422 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 397 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 499 422 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 397 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 584 422 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 397 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 350 hoa.2d.exchanger~ 3 fromBFormat, f 43; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 8 0 7 0; -#X connect 9 0 29 0; -#X connect 29 0 10 0; -#X connect 29 0 37 0; -#X connect 29 1 11 0; -#X connect 29 1 37 1; -#X connect 29 2 12 0; -#X connect 29 2 37 2; -#X connect 29 3 13 0; -#X connect 29 3 37 3; -#X connect 29 4 14 0; -#X connect 29 4 37 4; -#X connect 29 5 15 0; -#X connect 29 5 37 5; -#X connect 29 6 16 0; -#X connect 29 6 37 6; -#X connect 37 0 30 0; -#X connect 37 0 45 0; -#X connect 37 1 31 0; -#X connect 37 1 45 1; -#X connect 37 2 32 0; -#X connect 37 2 45 2; -#X connect 37 3 33 0; -#X connect 37 3 45 3; -#X connect 37 4 34 0; -#X connect 37 4 45 4; -#X connect 37 5 35 0; -#X connect 37 5 45 5; -#X connect 37 6 36 0; -#X connect 37 6 45 6; -#X connect 45 0 38 0; -#X connect 45 1 39 0; -#X connect 45 2 40 0; -#X connect 45 3 41 0; -#X connect 45 4 42 0; -#X connect 45 5 43 0; -#X connect 45 6 44 0; -#X coords 0 653 1 652 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.map~-help.pd b/Package/Hoa/helps/hoa.2d.map~-help.pd deleted file mode 100644 index 6fa617f..0000000 --- a/Package/Hoa/helps/hoa.2d.map~-help.pd +++ /dev/null @@ -1,228 +0,0 @@ -#N canvas 398 87 965 625 10; -#X obj 613 180 phasor~ 0.2; -#X obj 613 245 *~ 2; -#X obj 634 222 hoa.pi 2; -#X obj 797 252 *~ 2; -#X obj 865 252 *~ 2; -#X msg 80 214 1 car \$1 \$2; -#X obj 797 230 osc~ 0.13; -#X obj 865 230 osc~ 0.25; -#X obj 730 281 phasor~ 220; -#X text 207 135 radius; -#X text 141 134 ordinate; -#X text 76 134 abscissa; -#X text 490 266 source; -#X text 566 263 radius; -#X text 883 268 ordinate; -#X text 808 268 abscissa; -#X text 728 264 source; -#X obj 251 405 hoa.2d.meter~ @size 129 129 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "" -@channels 8 @angles 0 45 90 135 180 225 270 315 @offset 0 @rotation -"anti-clockwise" @vectors "energy" @interval 50 @bgcolor 0.76 0.76 -0.76 1 @bdcolor 0.7 0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 -0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor -1 0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X msg 483 66 \; pd dsp 1; -#X msg 545 66 \; pd dsp 0; -#X obj 490 405 hoa.2d.meter~ @size 129 129 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "" -@channels 8 @angles 0 45 90 135 180 225 270 315 @offset 0 @rotation -"anti-clockwise" @vectors "energy" @interval 50 @bgcolor 0.76 0.76 -0.76 1 @bdcolor 0.7 0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 -0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor -1 0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 730 405 hoa.2d.meter~ @size 141 141 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "" -@channels 8 @angles 0 45 90 135 180 225 270 315 @offset 0 @rotation -"anti-clockwise" @vectors "energy" @interval 50 @bgcolor 0.76 0.76 -0.76 1 @bdcolor 0.7 0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 -0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor -1 0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 551 215 +~ 1; -#X obj 551 238 *~ 0.5; -#X obj 551 191 osc~ 0.3; -#X obj 80 158 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 80 193 c.pak -----; -#X obj 143 158 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 210 158 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 273 158 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 21 344 hoa.map~'s syntax; -#X text 21 354 for multisource mode :; -#X text 21 364 index; -#X text 21 374 coordinate type (polar or cartesian); -#X text 21 384 coordinate one (radius or abscissa); -#X obj 561 288 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 624 288 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 807 288 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 876 288 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 251 380 hoa.2d.decoder~ 3 0 8; -#X obj 251 346 hoa.2d.optim~ 3 -----; -#X obj 251 320 hoa.2d.map~ 3 2 -----; -#X obj 490 345 hoa.2d.optim~ 3 -----; -#X obj 490 379 hoa.2d.decoder~ 3 0 8; -#X obj 490 538 hoa.dac~ 1:8 --------; -#X obj 730 379 hoa.2d.decoder~ 3 0 8 -; -#X text 3 46 hoa.2d.map~ is an ambisonics encoder that uses fractionnal -orders and amplitude variation to simulate sources distances. First -argument is the order and second argument is the number of sources. -; -#X obj 730 345 hoa.2d.optim~ 3 -------; -#X obj 210 193 c.pak 0 0; -#X obj 490 284 hoa.soundrone; -#X obj 251 284 sig~ 1; -#X obj 374 284 sig~ 1; -#X obj 877 29 hoa.connect; -#X obj 877 9 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 730 320 hoa.2d.map~ 3 1 car ---; -#X obj 11 21 c.patcherinfos; -#X obj 16 4 loadbang; -#X obj 1 4 hoa.help.header; -#X obj 266 565 hoa.help.pub; -#X obj 418 4 hoa.help.also; -#X msg 210 214 2 pol \$1 \$2; -#X obj 634 202 c.loadmess; -#X text 477 110 With one source \, you can drive it with signals. Set -the mode polar (or pol or 0) to use polar coordinates (radius and azimuth) -and cartesian (or car or 1) to use cartesian corrdinates (abscissa -and ordinate).; -#X text 633 262 azimuth; -#X text 270 135 azimuth; -#X text 21 394 coordinate two (azimuth or ordinate).; -#X obj 490 320 hoa.2d.map~ 3 1 pol -; -#X text 251 267 source 1; -#X text 372 265 source 2; -#X connect 0 0 1 0; -#X connect 1 0 36 0; -#X connect 1 0 66 2; -#X connect 2 0 1 1; -#X connect 3 0 37 0; -#X connect 3 0 54 1; -#X connect 4 0 38 0; -#X connect 4 0 54 2; -#X connect 5 0 41 0; -#X connect 6 0 3 0; -#X connect 7 0 4 0; -#X connect 8 0 54 0; -#X connect 22 0 23 0; -#X connect 23 0 35 0; -#X connect 23 0 66 1; -#X connect 24 0 22 0; -#X connect 25 0 26 0; -#X connect 26 0 5 0; -#X connect 27 0 26 1; -#X connect 28 0 48 0; -#X connect 29 0 48 1; -#X connect 39 0 17 0; -#X connect 39 1 17 1; -#X connect 39 2 17 2; -#X connect 39 3 17 3; -#X connect 39 4 17 4; -#X connect 39 5 17 5; -#X connect 39 6 17 6; -#X connect 39 7 17 7; -#X connect 40 0 39 0; -#X connect 40 1 39 1; -#X connect 40 2 39 2; -#X connect 40 3 39 3; -#X connect 40 4 39 4; -#X connect 40 5 39 5; -#X connect 40 6 39 6; -#X connect 41 0 40 0; -#X connect 41 1 40 1; -#X connect 41 2 40 2; -#X connect 41 3 40 3; -#X connect 41 4 40 4; -#X connect 41 5 40 5; -#X connect 41 6 40 6; -#X connect 42 0 43 0; -#X connect 42 1 43 1; -#X connect 42 2 43 2; -#X connect 42 3 43 3; -#X connect 42 4 43 4; -#X connect 42 5 43 5; -#X connect 42 6 43 6; -#X connect 43 0 20 0; -#X connect 43 0 44 0; -#X connect 43 1 20 1; -#X connect 43 1 44 1; -#X connect 43 2 20 2; -#X connect 43 2 44 2; -#X connect 43 3 20 3; -#X connect 43 3 44 3; -#X connect 43 4 20 4; -#X connect 43 4 44 4; -#X connect 43 5 20 5; -#X connect 43 5 44 5; -#X connect 43 6 20 6; -#X connect 43 6 44 6; -#X connect 43 7 20 7; -#X connect 43 7 44 7; -#X connect 45 0 21 0; -#X connect 45 1 21 1; -#X connect 45 2 21 2; -#X connect 45 3 21 3; -#X connect 45 4 21 4; -#X connect 45 5 21 5; -#X connect 45 6 21 6; -#X connect 45 7 21 7; -#X connect 47 0 45 0; -#X connect 47 1 45 1; -#X connect 47 2 45 2; -#X connect 47 3 45 3; -#X connect 47 4 45 4; -#X connect 47 5 45 5; -#X connect 47 6 45 6; -#X connect 48 0 60 0; -#X connect 49 0 66 0; -#X connect 50 0 41 0; -#X connect 51 0 41 1; -#X connect 53 0 52 0; -#X connect 54 0 47 0; -#X connect 54 1 47 1; -#X connect 54 2 47 2; -#X connect 54 3 47 3; -#X connect 54 4 47 4; -#X connect 54 5 47 5; -#X connect 54 6 47 6; -#X connect 55 0 57 0; -#X connect 56 0 55 0; -#X connect 60 0 41 0; -#X connect 61 0 2 0; -#X connect 66 0 42 0; -#X connect 66 1 42 1; -#X connect 66 2 42 2; -#X connect 66 3 42 3; -#X connect 66 4 42 4; -#X connect 66 5 42 5; -#X connect 66 6 42 6; -#X coords 0 625 1 624 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.meter~-help.pd b/Package/Hoa/helps/hoa.2d.meter~-help.pd deleted file mode 100644 index a468094..0000000 --- a/Package/Hoa/helps/hoa.2d.meter~-help.pd +++ /dev/null @@ -1,111 +0,0 @@ -#N canvas 408 100 814 589 10; -#X obj 585 262 s hoameter; -#X obj 478 191 c.number @size 53 17 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @min 1 @max 64 @minmax 1 64 @decimal 0 @bgcolor 0.75 0.75 0.75 -1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 478 224 channels \$1; -#X obj 585 191 c.number @size 53 17 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @min -360 @max 360 @minmax -360 360 @decimal 0 @bgcolor 0.75 -0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 585 224 offset \$1; -#X text 582 160 Offset of; -#X text 582 170 channels; -#X text 672 170 channels; -#X text 672 160 Rotation of; -#X msg 675 224 rotation \$1; -#X obj 675 190 c.menu @size 100 17 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @hover 0 @items Anti-Clockwise Clockwise @states 0 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 346 94 phasor~ 0.3; -#X obj 459 392 s hoameter; -#X text 482 170 channels; -#X text 482 160 Number of; -#X obj 375 310 c.menu @size 100 17 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @hover 0 @items none energy velocity both @states 0 0 0 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 375 344 vectors \$1; -#X text 392 280 Vectors to; -#X text 392 290 display; -#X text 665 256 Angles; -#X msg 520 294 angles 0 15 90 270 345; -#X obj 61 163 r hoadec; -#X obj 535 392 s hoadec; -#X obj 121 109 noise~; -#X obj 121 141 hoa.2d.encoder~ 3 --------------------; -#X obj 121 240 hoa.2d.meter~ @size 231 231 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive hoameter @send (null) -@channels 5 @angles 0 30 110 250 330 @offset 0 @rotation anti-clockwise -@vectors energy @interval 50 @bgcolor 0.758847 0.758847 0.758847 1 -@bdcolor 0.699562 0.699562 0.699562 1 @coldcolor 0 0.6 0 0.8 @tepidcolor -0.6 0.73 0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor -1 0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X text 3 45 hoa.2d.meter~ displays the peak levels for a circurlar -array of loudspeakers. It computes and displays the energy and velocity -vectors.; -#X msg 535 320 angles 0 72 144 -144 -72; -#X obj 558 27 hoa.connect; -#X obj 558 7 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 346 115 hoa.pi~ 2; -#X obj 139 508 hoa.help.pub; -#X obj 13 19 c.patcherinfos; -#X obj 18 2 loadbang; -#X obj 3 2 hoa.help.header; -#X obj 409 2 hoa.help.also; -#X obj 478 134 c.loadmess set 5; -#X obj 375 264 c.loadmess set 1; -#X obj 45 384 c.dsp~ @size 30 30 @fontname Helvetica @fontweight normal -@fontslant roman @fontsize 11 @receive (null) @send (null) @local 0 -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @logocolor 0 0.6 0 -0.8; -#X obj 121 167 hoa.2d.optim~ 3 inPhase, f 38; -#X obj 121 191 hoa.2d.decoder~ 3 irregular 5 @angles 0 30 110 250 330 -, f 38; -#X msg 552 347 angles 0 30 110 250 330; -#X connect 1 0 2 0; -#X connect 2 0 0 0; -#X connect 3 0 4 0; -#X connect 4 0 0 0; -#X connect 4 0 22 0; -#X connect 9 0 0 0; -#X connect 10 0 9 0; -#X connect 11 0 30 1; -#X connect 15 0 16 0; -#X connect 16 0 12 0; -#X connect 20 0 12 0; -#X connect 20 0 22 0; -#X connect 21 0 40 0; -#X connect 23 0 24 0; -#X connect 24 0 39 0; -#X connect 24 1 39 1; -#X connect 24 2 39 2; -#X connect 24 3 39 3; -#X connect 24 4 39 4; -#X connect 24 5 39 5; -#X connect 24 6 39 6; -#X connect 27 0 12 0; -#X connect 27 0 22 0; -#X connect 29 0 28 0; -#X connect 30 0 24 1; -#X connect 32 0 34 0; -#X connect 33 0 32 0; -#X connect 36 0 1 0; -#X connect 37 0 15 0; -#X connect 39 0 40 0; -#X connect 39 1 40 1; -#X connect 39 2 40 2; -#X connect 39 3 40 3; -#X connect 39 4 40 4; -#X connect 39 5 40 5; -#X connect 39 6 40 6; -#X connect 40 0 25 0; -#X connect 40 1 25 1; -#X connect 40 2 25 2; -#X connect 40 3 25 3; -#X connect 40 4 25 4; -#X connect 41 0 12 0; -#X connect 41 0 22 0; diff --git a/Package/Hoa/helps/hoa.2d.optim~-help.pd b/Package/Hoa/helps/hoa.2d.optim~-help.pd deleted file mode 100644 index bc39214..0000000 --- a/Package/Hoa/helps/hoa.2d.optim~-help.pd +++ /dev/null @@ -1,100 +0,0 @@ -#N canvas 769 40 640 686 10; -#X obj 394 110 hoa.pi 2; -#X obj 394 90 loadbang; -#X obj 379 131 *~; -#X obj 379 66 phasor~ -0.3; -#X obj 242 416 hoa.2d.meter~ @size 147 147 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "b%" -@channels 8 @angles 0 45 90 135 180 225 270 315 @offset 0 @rotation -"anti-clockwise" @vectors "energy" @interval 50 @bgcolor 0.7 0.7 0.7 -1 @bdcolor 0.5 0.5 0.5 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 -0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 -0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 242 580 hoa.dac~ 1:8 -----------; -#X text 6 202 basic has no effect.; -#X text 6 241 the circle.; -#X text 6 231 confined to the center of the; -#X obj 105 154 c.menu @size 100 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "basic" "maxRe" "inPhase" @states -0 0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 -0 0 1; -#X obj 241 382 hoa.2d.decoder~ 3 0 8 --; -#X text 5 260 inPhase is used when audience; -#X obj 481 91 hoa.connect; -#X obj 481 71 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 4 54 hoa.2d.optim~ weights the circular harmonics signals depending -on the optimization.; -#X text 9 308 Important : the optimization; -#X text 9 318 can be changed in real time; -#X text 9 328 but this is not a good practice.; -#X text 9 338 You should only use this; -#X text 9 349 option for your tests.; -#X obj 13 27 c.patcherinfos; -#X obj 18 10 loadbang; -#X obj 3 10 hoa.help.header; -#X obj 110 612 hoa.help.pub; -#X obj 414 10 hoa.help.also; -#X obj 59 619 c.dsp~ @size 30 30 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @logocolor 0 0.6 0 -0.8; -#X obj 105 122 c.loadmess set 1; -#X obj 238 123 hoa.soundrone; -#X obj 238 159 hoa.2d.encoder~ 3, f 24; -#X obj 239 222 hoa.2d.scope~ @size 147 147 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 3 @view 0 @gain 100 @interval 100 @bgcolor 0.76 0.76 0.76 1 -@bdcolor 0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 238 193 hoa.2d.optim~ 3 maxRe, f 24; -#X text 6 221 maxRe is used when audience is; -#X text 5 270 covers all the circle.; -#X connect 0 0 2 1; -#X connect 1 0 0 0; -#X connect 2 0 28 1; -#X connect 3 0 2 0; -#X connect 9 1 30 0; -#X connect 10 0 4 0; -#X connect 10 0 5 0; -#X connect 10 1 4 1; -#X connect 10 1 5 1; -#X connect 10 2 4 2; -#X connect 10 2 5 2; -#X connect 10 3 4 3; -#X connect 10 3 5 3; -#X connect 10 4 4 4; -#X connect 10 4 5 4; -#X connect 10 5 4 5; -#X connect 10 5 5 5; -#X connect 10 6 4 6; -#X connect 10 6 5 6; -#X connect 10 7 4 7; -#X connect 10 7 5 7; -#X connect 13 0 12 0; -#X connect 20 0 22 0; -#X connect 21 0 20 0; -#X connect 26 0 9 0; -#X connect 27 0 28 0; -#X connect 28 0 30 0; -#X connect 28 1 30 1; -#X connect 28 2 30 2; -#X connect 28 3 30 3; -#X connect 28 4 30 4; -#X connect 28 5 30 5; -#X connect 28 6 30 6; -#X connect 30 0 10 0; -#X connect 30 0 29 0; -#X connect 30 1 10 1; -#X connect 30 1 29 1; -#X connect 30 2 10 2; -#X connect 30 2 29 2; -#X connect 30 3 29 3; -#X connect 30 3 10 3; -#X connect 30 4 29 4; -#X connect 30 4 10 4; -#X connect 30 5 29 5; -#X connect 30 5 10 5; -#X connect 30 6 29 6; -#X connect 30 6 10 6; -#X coords 0 686 1 685 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.projector~-help.pd b/Package/Hoa/helps/hoa.2d.projector~-help.pd deleted file mode 100644 index 4650044..0000000 --- a/Package/Hoa/helps/hoa.2d.projector~-help.pd +++ /dev/null @@ -1,153 +0,0 @@ -#N canvas 220 82 754 671 10; -#X obj 230 142 hoa.pi 2; -#X msg 371 134 \; pd dsp 1; -#X msg 371 172 \; pd dsp 0; -#X obj 215 161 *~; -#X obj 20 311 hoa.2d.scope~ @size 201 201 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 4 @view 0 @gain 10 @interval 20 @bgcolor 0.758847 0.758847 0.758847 -1 @bdcolor 0.699562 0.699562 0.699562 1 @phcolor 1 0 0 1 @nhcolor 0 -0 1 1; -#X text 336 293 Here \, we apply differents delay lines on each signal. -; -#X obj 215 102 phasor~ 0.8; -#X obj 20 133 hoa.soundgrain; -#X obj 585 25 hoa.connect; -#X obj 585 4 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 358 311 hoa.2d.space @size 201 201 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "hoadelproj" -@presetname "hoadelpreset" @channels 10 @minmax 1 3000 @bgcolor 0.76 -0.76 0.76 1 @bdcolor 0.7 0.7 0.7 1 @spcolor 0.27 0.43 0.54 0.25 @ptcolor -0 0 0 1; -#X obj 20 182 hoa.2d.encoder~ 4 ---------------; -#X obj 20 208 hoa.2d.projector~ 4 10 ----------; -#X obj 230 123 c.loadmess; -#X obj 275 219 r hoadelproj; -#X obj 20 161 c.gain~ @size 127 12 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor -0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; -#X msg 470 157 inter \$1; -#X obj 470 133 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 470 111 line; -#X obj 470 184 c.preset @size 121 41 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 -@emcolor 0.85 0.85 0.85 1 @stcolor 0.5 0.5 0.5 1 @secolor 0.15 0.15 -0.15 1 @preset [ @index 0 @hoadelpreset hoa.2d.space list 1 1 1 1 1 -1 1 1 1 1 @index 1 @hoadelpreset hoa.2d.space list 92.5173 1937.78 -2108.48 1390.73 1 3000 3000 3000 3000 2335.39 @index 2 @hoadelpreset -hoa.2d.space list 1882.71 61.5205 59.4307 1953.11 813.017 2917.27 184.399 -252.658 2269.49 146.736 @index 3 @hoadelpreset hoa.2d.space list 3000 -2666.9 2664.81 3000 3000 3000 2789.78 2858.03 3000 2752.11 @index 4 -@hoadelpreset hoa.2d.space list 1 1 1 3000 1 1 1 1 1 1 @index 5 @hoadelpreset -hoa.2d.space list 1 1 1 3000 3000 3000 3000 1 1 1 @index 6 @hoadelpreset -hoa.2d.space list 3000 1 3000 1 1 1 1 3000 1 3000 @index 7 @hoadelpreset -hoa.2d.space list 1387.1 3000 1613.9 1387.1 1613.9 1 1 1 1387.1 1613.9 -@index 8 @hoadelpreset hoa.2d.space list 1 84.1164 3000 1387.1 1 1 -3000 1 1387.1 3000 @index 9 @hoadelpreset hoa.2d.space list 1 84.1164 -3000 3000 3000 1 1 3000 3000 3000 @index 10 @hoadelpreset hoa.2d.space -list 3000 88.6911 81.6861 2914.74 3000 3000 88.6911 1 2912.31 3000 -@index 11 @hoadelpreset hoa.2d.space list 3000 2998.94 88.6885 82.7172 -2914.77 3000 2998.94 88.6592 2.05962 2912.34 ]; -#X text 468 63 Interpolations; -#X obj 358 524 c.prepend set; -#X msg 358 546 2.00666 22.304 24.1816 16.2866 1 33.988 33.988 33.988 -33.988 26.6775; -#X text 3 45 hoa.2d.projector~ discretizes the ambisonic sound field -into the plane waves domain. Use hoa.recomposer~ to come back to harmonics -domain.; -#X text 336 243 Sound field transformations have differents behavior -in the plane waves domain compared to the circular harmonics domain. -; -#X obj 20 250 hoa.2d.process~ 10 hoa.fx.delay~ planewaves, f 33; -#X obj 20 288 hoa.2d.recomposer~ 4 10 ---------; -#X obj 20 534 hoa.2d.decoder~ 4 ambisonic 10 --; -#X obj 20 567 hoa.dac~ 1:10 -------------------; -#X obj 12 20 c.patcherinfos; -#X obj 17 3 loadbang; -#X obj 2 3 hoa.help.header; -#X obj 143 618 hoa.help.pub; -#X obj 443 4 hoa.help.also; -#X msg 560 87 12 \, 1 12000; -#X msg 470 87 1 \, 12 12000; -#X connect 0 0 3 1; -#X connect 3 0 11 1; -#X connect 6 0 3 0; -#X connect 7 0 15 0; -#X connect 9 0 8 0; -#X connect 10 0 21 0; -#X connect 11 0 12 0; -#X connect 11 1 12 1; -#X connect 11 2 12 2; -#X connect 11 3 12 3; -#X connect 11 4 12 4; -#X connect 11 5 12 5; -#X connect 11 6 12 6; -#X connect 11 7 12 7; -#X connect 11 8 12 8; -#X connect 12 0 25 0; -#X connect 12 1 25 1; -#X connect 12 2 25 2; -#X connect 12 3 25 3; -#X connect 12 4 25 4; -#X connect 12 5 25 5; -#X connect 12 6 25 6; -#X connect 12 7 25 7; -#X connect 12 8 25 8; -#X connect 12 9 25 9; -#X connect 13 0 0 0; -#X connect 14 0 25 10; -#X connect 15 0 11 0; -#X connect 16 0 19 0; -#X connect 17 0 16 0; -#X connect 18 0 17 0; -#X connect 21 0 22 0; -#X connect 25 0 26 0; -#X connect 25 1 26 1; -#X connect 25 2 26 2; -#X connect 25 3 26 3; -#X connect 25 4 26 4; -#X connect 25 5 26 5; -#X connect 25 6 26 6; -#X connect 25 7 26 7; -#X connect 25 8 26 8; -#X connect 25 9 26 9; -#X connect 26 0 4 0; -#X connect 26 0 27 0; -#X connect 26 1 4 1; -#X connect 26 1 27 1; -#X connect 26 2 4 2; -#X connect 26 2 27 2; -#X connect 26 3 4 3; -#X connect 26 3 27 3; -#X connect 26 4 4 4; -#X connect 26 4 27 4; -#X connect 26 5 4 5; -#X connect 26 5 27 5; -#X connect 26 6 4 6; -#X connect 26 6 27 6; -#X connect 26 7 4 7; -#X connect 26 7 27 7; -#X connect 26 8 4 8; -#X connect 26 8 27 8; -#X connect 27 0 28 0; -#X connect 27 1 28 1; -#X connect 27 2 28 2; -#X connect 27 3 28 3; -#X connect 27 4 28 4; -#X connect 27 5 28 5; -#X connect 27 6 28 6; -#X connect 27 7 28 7; -#X connect 27 8 28 8; -#X connect 27 9 28 9; -#X connect 29 0 31 0; -#X connect 30 0 29 0; -#X connect 34 0 18 0; -#X connect 35 0 18 0; -#X coords 0 671 1 670 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.recomposer~-help.pd b/Package/Hoa/helps/hoa.2d.recomposer~-help.pd deleted file mode 100644 index 1878b75..0000000 --- a/Package/Hoa/helps/hoa.2d.recomposer~-help.pd +++ /dev/null @@ -1,166 +0,0 @@ -#N canvas 348 82 752 686 10; -#X text 529 301 Fisheye factor between 0 and 1; -#X msg 47 600 \; pd dsp 1; -#X msg 47 638 \; pd dsp 0; -#X obj 250 454 hoa.2d.scope~ @size 189 189 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 4 @view 0 @gain 10 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 250 214 hoa.2d.scope~ @size 171 171 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 4 @view 0 @gain 10 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 572 25 hoa.connect; -#X obj 572 6 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 175 133 c.loadmess; -#X obj 563 323 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 1 @minmax 0 1 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 563 387 line~; -#X msg 563 358 \$1 200; -#X obj 10 147 hoa.soundrone; -#X obj 247 649 hoa.2d.decoder~ 4 0 10 --------; -#X obj 247 682 hoa.dac~ 1:10 -----------------; -#X obj 250 391 hoa.2d.projector~ 4 10 -----; -#X obj 10 173 hoa.2d.encoder~ 4 ----------; -#X text 6 47 hoa.2D.recomposer~ recomposes a plane wave sound field -into the circular harmonics domain.; -#X text 7 84 1st argument is the order; -#X text 7 94 2nd argument is the number of channels; -#X obj 250 146 hoa.soundgrain; -#X obj 490 146 hoa.soundcoat; -#X obj 415 133 c.loadmess; -#X obj 250 173 hoa.2d.encoder~ 4 ----------; -#X obj 654 133 c.loadmess; -#X obj 490 173 hoa.2d.encoder~ 4 ----------; -#X obj 175 153 hoa.pi 0.4; -#X obj 415 153 hoa.pi 1; -#X obj 654 153 hoa.pi 1.6; -#X text 29 345 fixe mode :; -#X text 29 366 The sound field is just; -#X text 29 376 recomposed into the; -#X text 29 386 circular harmonics domain; -#X text 29 396 without any effect.; -#X text 29 425 fisheye mode :; -#X text 29 446 The sound field can be; -#X text 29 456 compressed to the front.; -#X text 29 466 With fisheye \, the object; -#X text 29 476 has one additionnal inlet.; -#X obj 15 20 c.patcherinfos; -#X obj 20 3 loadbang; -#X obj 5 3 hoa.help.header; -#X obj 172 709 hoa.help.pub; -#X obj 426 3 hoa.help.also; -#X obj 250 420 hoa.2d.recomposer~ 4 10 fisheye; -#X text 7 104 3nd argument is the mode : fixe (default) or fisheye -; -#X connect 6 0 5 0; -#X connect 7 0 25 0; -#X connect 8 0 10 0; -#X connect 9 0 43 10; -#X connect 10 0 9 0; -#X connect 11 0 15 0; -#X connect 12 0 13 0; -#X connect 12 1 13 1; -#X connect 12 2 13 2; -#X connect 12 3 13 3; -#X connect 12 4 13 4; -#X connect 12 5 13 5; -#X connect 12 6 13 6; -#X connect 12 7 13 7; -#X connect 12 8 13 8; -#X connect 12 9 13 9; -#X connect 14 0 43 0; -#X connect 14 1 43 1; -#X connect 14 2 43 2; -#X connect 14 3 43 3; -#X connect 14 4 43 4; -#X connect 14 5 43 5; -#X connect 14 6 43 6; -#X connect 14 7 43 7; -#X connect 14 8 43 8; -#X connect 14 9 43 9; -#X connect 15 0 4 0; -#X connect 15 0 14 0; -#X connect 15 1 4 1; -#X connect 15 1 14 1; -#X connect 15 2 4 2; -#X connect 15 2 14 2; -#X connect 15 3 4 3; -#X connect 15 3 14 3; -#X connect 15 4 4 4; -#X connect 15 4 14 4; -#X connect 15 5 4 5; -#X connect 15 5 14 5; -#X connect 15 6 4 6; -#X connect 15 6 14 6; -#X connect 15 7 4 7; -#X connect 15 7 14 7; -#X connect 15 8 4 8; -#X connect 15 8 14 8; -#X connect 19 0 22 0; -#X connect 20 0 24 0; -#X connect 21 0 26 0; -#X connect 22 0 4 0; -#X connect 22 0 14 0; -#X connect 22 1 4 1; -#X connect 22 1 14 1; -#X connect 22 2 4 2; -#X connect 22 2 14 2; -#X connect 22 3 4 3; -#X connect 22 3 14 3; -#X connect 22 4 4 4; -#X connect 22 4 14 4; -#X connect 22 5 4 5; -#X connect 22 5 14 5; -#X connect 22 6 4 6; -#X connect 22 6 14 6; -#X connect 22 7 4 7; -#X connect 22 7 14 7; -#X connect 22 8 4 8; -#X connect 22 8 14 8; -#X connect 23 0 27 0; -#X connect 24 0 4 0; -#X connect 24 0 14 0; -#X connect 24 1 4 1; -#X connect 24 1 14 1; -#X connect 24 2 4 2; -#X connect 24 2 14 2; -#X connect 24 3 4 3; -#X connect 24 3 14 3; -#X connect 24 4 4 4; -#X connect 24 4 14 4; -#X connect 24 5 4 5; -#X connect 24 5 14 5; -#X connect 24 6 4 6; -#X connect 24 6 14 6; -#X connect 24 7 4 7; -#X connect 24 7 14 7; -#X connect 24 8 4 8; -#X connect 24 8 14 8; -#X connect 25 0 15 1; -#X connect 26 0 22 1; -#X connect 27 0 24 1; -#X connect 38 0 40 0; -#X connect 39 0 38 0; -#X connect 43 0 3 0; -#X connect 43 0 12 0; -#X connect 43 1 3 1; -#X connect 43 1 12 1; -#X connect 43 2 3 2; -#X connect 43 2 12 2; -#X connect 43 3 3 3; -#X connect 43 3 12 3; -#X connect 43 4 3 4; -#X connect 43 4 12 4; -#X connect 43 5 3 5; -#X connect 43 5 12 5; -#X connect 43 6 3 6; -#X connect 43 6 12 6; -#X connect 43 7 3 7; -#X connect 43 7 12 7; -#X connect 43 8 3 8; -#X connect 43 8 12 8; -#X coords 0 686 1 685 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.rotate~-help.pd b/Package/Hoa/helps/hoa.2d.rotate~-help.pd deleted file mode 100644 index 5c08b3c..0000000 --- a/Package/Hoa/helps/hoa.2d.rotate~-help.pd +++ /dev/null @@ -1,119 +0,0 @@ -#N canvas 330 82 562 615 10; -#X obj 452 233 hoa.pi 2; -#X obj 452 214 loadbang; -#X obj 437 252 *~; -#X obj 437 189 phasor~ 0.1; -#X msg 330 373 \; pd dsp 1; -#X msg 330 411 \; pd dsp 0; -#X obj 139 335 hoa.2d.scope~ @size 153 153 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 4 @view 0 @gain 5 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.5 0.5 0.5 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 139 523 hoa.dac~ 1:10 -----------; -#X obj 437 295 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 178 146 hoa.pi; -#X obj 178 93 c.loadmess 0; -#X obj 178 122 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 374 122 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 374 93 c.loadmess 1; -#X obj 437 162 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 437 113 c.loadmess 0.1; -#X text 444 134 Speed of; -#X text 444 144 rotation; -#X text 466 254 Angle of; -#X text 466 264 rotation; -#X text 466 274 in radian; -#X obj 49 170 hoa.2d.encoder~ 4 ----; -#X obj 245 170 hoa.2d.encoder~ 4 ----; -#X obj 139 305 hoa.2d.rotate~ 4 --------; -#X obj 139 491 hoa.2d.decoder~ 4 0 10 --; -#X text 20 48 hoa.2d.rotate~ allows you to apply a rotation on the -ambisonic sound field. The last inlet set the angle of the rotation. -; -#X obj 245 122 hoa.soundrone; -#X obj 49 122 hoa.soundgrain; -#X obj 374 147 hoa.pi; -#X obj 35 545 hoa.help.pub; -#X obj 23 24 c.patcherinfos; -#X obj 28 7 loadbang; -#X obj 13 5 hoa.help.header; -#X obj 421 5 hoa.help.also; -#X connect 0 0 2 1; -#X connect 1 0 0 0; -#X connect 2 0 8 0; -#X connect 2 0 23 9; -#X connect 3 0 2 0; -#X connect 9 0 21 1; -#X connect 10 0 11 0; -#X connect 11 0 9 0; -#X connect 12 0 28 0; -#X connect 13 0 12 0; -#X connect 14 0 3 0; -#X connect 15 0 14 0; -#X connect 21 0 23 0; -#X connect 21 1 23 1; -#X connect 21 2 23 2; -#X connect 21 3 23 3; -#X connect 21 4 23 4; -#X connect 21 5 23 5; -#X connect 21 6 23 6; -#X connect 21 7 23 7; -#X connect 21 8 23 8; -#X connect 22 0 23 0; -#X connect 22 1 23 1; -#X connect 22 2 23 2; -#X connect 22 3 23 3; -#X connect 22 4 23 4; -#X connect 22 5 23 5; -#X connect 22 6 23 6; -#X connect 22 7 23 7; -#X connect 22 8 23 8; -#X connect 23 0 6 0; -#X connect 23 0 24 0; -#X connect 23 1 6 1; -#X connect 23 1 24 1; -#X connect 23 2 6 2; -#X connect 23 2 24 2; -#X connect 23 3 6 3; -#X connect 23 3 24 3; -#X connect 23 4 6 4; -#X connect 23 4 24 4; -#X connect 23 5 6 5; -#X connect 23 5 24 5; -#X connect 23 6 6 6; -#X connect 23 6 24 6; -#X connect 23 7 6 7; -#X connect 23 7 24 7; -#X connect 23 8 24 8; -#X connect 23 8 6 8; -#X connect 24 0 7 0; -#X connect 24 1 7 1; -#X connect 24 2 7 2; -#X connect 24 3 7 3; -#X connect 24 4 7 4; -#X connect 24 5 7 5; -#X connect 24 6 7 6; -#X connect 24 7 7 7; -#X connect 24 8 7 8; -#X connect 24 9 7 9; -#X connect 26 0 22 0; -#X connect 27 0 21 0; -#X connect 28 0 22 1; -#X connect 30 0 32 0; -#X connect 31 0 30 0; -#X coords 0 615 1 614 100 60 0; diff --git a/Package/Hoa/helps/hoa.2d.scope~-help.pd b/Package/Hoa/helps/hoa.2d.scope~-help.pd deleted file mode 100644 index f5acdd9..0000000 --- a/Package/Hoa/helps/hoa.2d.scope~-help.pd +++ /dev/null @@ -1,101 +0,0 @@ -#N canvas 408 103 770 585 10; -#X obj 361 128 hoa.pi 2; -#X obj 361 99 loadbang; -#X obj 280 171 *~; -#X obj 280 128 phasor~ 0.1; -#X msg 480 78 \; pd dsp 1; -#X msg 480 116 \; pd dsp 0; -#X obj 325 243 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X msg 325 269 order \$1; -#X obj 415 298 s hoascope; -#X obj 325 220 c.loadmess 7; -#X obj 415 243 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X msg 415 269 gain \$1; -#X obj 415 220 c.loadmess 1; -#X obj 505 243 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 20 @max 1000 @minmax 20 1000 @decimal 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 505 269 interval \$1; -#X obj 464 448 s hoascope; -#X obj 324 377 c.colorpanel @size 97 14 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @matrix 8 1 @reverse 0 @saturation 1 @hue 0 @lightness -0.5 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X obj 324 396 c.prepend phcolor; -#X obj 464 377 c.colorpanel @size 97 14 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @matrix 8 1 @reverse 0 @saturation 1 @hue 0.65 -@lightness 0.5 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X text 323 196 order :; -#X text 323 186 Ambisonic; -#X text 413 186 Gain :; -#X text 503 196 interval :; -#X text 323 346 color :; -#X text 323 336 Positive; -#X text 463 346 color :; -#X text 463 336 Negative; -#X obj 79 160 osc~ 0.1; -#X text 503 186 Refresh; -#X obj 505 220 c.loadmess 20; -#X obj 464 396 c.prepend nhcolor; -#X obj 79 257 hoa.2d.scope~ @size 207 207 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "hoascope" @send -"(null)" @order 7 @view 0 @gain 1 @interval 20 @bgcolor 0.76 0.76 0.76 -1 @bdcolor 0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 79 211 hoa.2d.encoder~ 7 ----------------; -#X text 37 66 hoa.2d.scope~ displays the circular harmonics of an ambisonic -sound field on a disc.; -#X obj 133 492 hoa.help.pub; -#X obj 525 510 hoa.connect; -#X obj 525 490 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 54 32 c.patcherinfos; -#X obj 59 15 loadbang; -#X obj 39 15 hoa.help.header; -#X obj 448 15 hoa.help.also; -#X connect 0 0 2 1; -#X connect 1 0 0 0; -#X connect 2 0 32 1; -#X connect 3 0 2 0; -#X connect 6 0 7 0; -#X connect 7 0 8 0; -#X connect 9 0 6 0; -#X connect 10 0 11 0; -#X connect 11 0 8 0; -#X connect 12 0 10 0; -#X connect 13 0 14 0; -#X connect 14 0 8 0; -#X connect 16 0 17 0; -#X connect 17 0 15 0; -#X connect 18 0 30 0; -#X connect 27 0 32 0; -#X connect 29 0 13 0; -#X connect 30 0 15 0; -#X connect 32 0 31 0; -#X connect 32 1 31 1; -#X connect 32 2 31 2; -#X connect 32 3 31 3; -#X connect 32 4 31 4; -#X connect 32 5 31 5; -#X connect 32 6 31 6; -#X connect 32 7 31 7; -#X connect 32 8 31 8; -#X connect 32 9 31 9; -#X connect 32 10 31 10; -#X connect 32 11 31 11; -#X connect 32 12 31 12; -#X connect 32 13 31 13; -#X connect 32 14 31 14; -#X connect 36 0 35 0; -#X connect 37 0 39 0; -#X connect 38 0 37 0; -#X coords 0 585 1 584 85 60 0; diff --git a/Package/Hoa/helps/hoa.2d.space-help.pd b/Package/Hoa/helps/hoa.2d.space-help.pd deleted file mode 100644 index 01de41d..0000000 --- a/Package/Hoa/helps/hoa.2d.space-help.pd +++ /dev/null @@ -1,296 +0,0 @@ -#N canvas 100 82 1101 686 10; -#X msg 69 164 channels \$1; -#X msg 69 539 0.876279 1 1 1 0.0306693 0.0306693 0.0137424 0 0 0.017797 -0.0343521 0.0879706 0.0634424 0 0 0; -#X text 77 119 Number of channels; -#X text 203 130 Coefficients; -#X obj 195 105 loadbang; -#X msg 195 153 0.876279 1 1 1 0.0306693 0.0306693 0.0137424 0 0 0.017797 -0.0343521 0.0879706 0.0634424; -#X obj 69 511 c.prepend set; -#X obj 69 141 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max 250 @minmax 1 250 @decimal 6 @bgcolor -0.76 0.76 0.76 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 69 97 c.loadmess set 16; -#X obj 418 484 c.preset @size 121 41 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 -@emcolor 0.85 0.85 0.85 1 @stcolor 0.5 0.5 0.5 1 @secolor 0.15 0.15 -0.15 1 @preset [ @index 0 @spacepreset hoa.2d.space list 0.268812 0.308778 -0.42228 0.568753 0.788201 0.80421 0.876024 0.907126 1 0.103335 0.134466 -0.255546 0.394962 0.394665 0.397036 0.343979 @index 1 @spacepreset -hoa.2d.space list 0.532779 0.588845 0.684887 0 0 0 0.0445425 0.0978753 -0.143325 0.0625148 0.030905 0.034628 0.0435662 0.501465 0.549832 0.479624 -@index 2 @spacepreset hoa.2d.space list 0 0 0 0 0 0 1 0 0 0 0 0.0100281 -0.00180078 0.451538 1 0 @index 3 @spacepreset hoa.2d.space list 0 0.00669422 -1 0 0 0 1 0 0 0 1 0.0100281 0.00180078 0.451538 1 0 @index 4 @spacepreset -hoa.2d.space list 0.931365 0.0690971 0 0 0.930903 0.705041 0 0 0.930903 -0.0784322 0.00236926 0.420463 0.962103 0.0690971 0 0.00623167 @index -5 @spacepreset hoa.2d.space list 1 0.714482 0.645385 0.645385 1 1 0.645385 -0.692838 1 0.723817 0.647754 1 1 0.714482 0.645385 0.651617 ]; -#X msg 418 444 inter \$1; -#X obj 418 416 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 418 390 line; -#X msg 418 359 1 \, 6 6000; -#X text 388 204 1 - Click and drag to; -#X text 388 214 set the coefficients.; -#X text 388 234 2 - Hold shift and click; -#X text 388 244 and drag to increase or; -#X text 388 264 coefficients together.; -#X text 388 254 decrease all the; -#X text 388 294 click and drag to compute; -#X text 388 304 a rotation of the coefficients; -#X text 416 332 Preset :; -#X obj 31 141 c.bang @size 17 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @bacolor 0 0 0 1; -#X obj 69 222 hoa.2d.space @size 269 269 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "hoaspacer" @send -"hoaspaces" @presetname "spacepreset" @channels 16 @minmax 0 1 @bgcolor -0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 1 @spcolor 0.272711 0.434756 -0.545421 0.25 @ptcolor 0 0 0 1; -#X text 388 284 3 - Hold alt and; -#X obj 590 30 hoa.connect; -#X obj 590 11 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 632 361 hoa.2d.projector~ 7 16 ---------; -#X obj 632 69 hoa.soundcoat; -#X obj 632 158 hoa.2d.scope~ @size 195 195 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 7 @view 0 @gain 10 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 632 445 hoa.2d.recomposer~ 7 16 --------; -#X obj 823 382 r hoaspaces; -#X obj 632 100 c.gain~ @size 150 10 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor -0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; -#X text 838 404 Spatial; -#X text 838 414 filetring; -#X msg 889 118 size \$1; -#X obj 821 92 r hoagrain; -#X obj 889 149 s hoagrain; -#X obj 889 91 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max "(null)" @minmax 0 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X msg 895 521 \; pd dsp 1; -#X msg 895 556 \; pd dsp 0; -#X obj 979 91 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 5000 @minmax 0 5000 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 979 118 delay \$1; -#X obj 889 269 s hoagrain; -#X obj 889 211 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 1 @minmax 0 1 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 979 211 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 1 @minmax 0 1 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 889 238 feedback \$1; -#X msg 979 238 rarefaction \$1; -#X obj 889 63 c.loadmess 20; -#X obj 979 63 c.loadmess 5000; -#X obj 979 183 c.loadmess 0.4; -#X obj 889 183 c.loadmess 0.8; -#N canvas 237 132 503 391 hoa_grain_env 0; -#X obj 270 148 / 256; -#X obj 270 193 * 1; -#X obj 270 247 * 0.5; -#X obj 270 219 sin; -#X obj 270 271 + 0.5; -#X obj 271 8 c.loadmess; -#X obj 270 120 t f f; -#X obj 270 299 pack; -#X obj 306 166 hoa.pi 1; -#X obj 270 169 - 0.5; -#X obj 271 32 t b b; -#X obj 270 323 tabwrite \$0-hoa_grain_array; -#X obj 270 76 until; -#X obj 270 97 f; -#X obj 297 98 + 1; -#X msg 270 55 512; -#X connect 0 0 9 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 2 0; -#X connect 4 0 7 0; -#X connect 5 0 10 0; -#X connect 6 0 0 0; -#X connect 6 1 7 1; -#X connect 7 0 11 0; -#X connect 8 0 1 1; -#X connect 9 0 1 0; -#X connect 10 0 15 0; -#X connect 10 1 8 0; -#X connect 12 0 13 0; -#X connect 13 0 14 0; -#X connect 13 0 6 0; -#X connect 14 0 13 1; -#X connect 15 0 12 0; -#X restore 675 38 pd hoa_grain_env; -#X obj 674 18 table \$0-hoa_grain_array 512; -#X obj 632 699 hoa.dac~ 1:16 ------------------; -#X obj 632 672 hoa.decoder~ 7 ambisonic 16 ----; -#X obj 632 118 hoa.2d.process~ 7 hoa.syn.grain~ harmonics \$0-hoa_grain_array -, f 32; -#X text 6 49 hoa.2d.space is a graphical user interface that facilitates -the control of processing in the plane wave domain., f 80; -#X obj 632 403 hoa.2d.process~ 16 hoa.fx.gain~ planewaves, f 32; -#X obj 632 468 hoa.2d.scope~ @size 195 195 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 7 @view 0 @gain 10 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 13 22 c.patcherinfos; -#X obj 18 5 loadbang; -#X obj 3 5 hoa.help.header; -#X obj 104 626 hoa.help.pub; -#X obj 430 5 hoa.help.also; -#X connect 0 0 24 0; -#X connect 4 0 5 0; -#X connect 5 0 24 0; -#X connect 6 0 1 0; -#X connect 7 0 0 0; -#X connect 8 0 7 0; -#X connect 10 0 9 0; -#X connect 11 0 10 0; -#X connect 12 0 11 0; -#X connect 13 0 12 0; -#X connect 23 0 24 0; -#X connect 24 0 6 0; -#X connect 27 0 26 0; -#X connect 28 0 59 0; -#X connect 28 1 59 1; -#X connect 28 2 59 2; -#X connect 28 3 59 3; -#X connect 28 4 59 4; -#X connect 28 5 59 5; -#X connect 28 6 59 6; -#X connect 28 7 59 7; -#X connect 28 8 59 8; -#X connect 28 9 59 9; -#X connect 28 10 59 10; -#X connect 28 11 59 11; -#X connect 28 12 59 12; -#X connect 28 13 59 13; -#X connect 28 14 59 14; -#X connect 28 15 59 15; -#X connect 29 0 33 0; -#X connect 31 0 56 0; -#X connect 31 0 60 0; -#X connect 31 1 56 1; -#X connect 31 1 60 1; -#X connect 31 2 56 2; -#X connect 31 2 60 2; -#X connect 31 3 56 3; -#X connect 31 3 60 3; -#X connect 31 4 56 4; -#X connect 31 4 60 4; -#X connect 31 5 56 5; -#X connect 31 5 60 5; -#X connect 31 6 56 6; -#X connect 31 6 60 6; -#X connect 31 7 56 7; -#X connect 31 7 60 7; -#X connect 31 8 56 8; -#X connect 31 8 60 8; -#X connect 31 9 56 9; -#X connect 31 9 60 9; -#X connect 31 10 56 10; -#X connect 31 10 60 10; -#X connect 31 11 56 11; -#X connect 31 11 60 11; -#X connect 31 12 56 12; -#X connect 31 12 60 12; -#X connect 31 13 56 13; -#X connect 31 13 60 13; -#X connect 31 14 56 14; -#X connect 31 14 60 14; -#X connect 32 0 59 16; -#X connect 33 0 57 0; -#X connect 36 0 38 0; -#X connect 37 0 57 1; -#X connect 39 0 36 0; -#X connect 42 0 43 0; -#X connect 43 0 38 0; -#X connect 45 0 47 0; -#X connect 46 0 48 0; -#X connect 47 0 44 0; -#X connect 48 0 44 0; -#X connect 49 0 39 0; -#X connect 50 0 42 0; -#X connect 51 0 46 0; -#X connect 52 0 45 0; -#X connect 56 0 55 0; -#X connect 56 1 55 1; -#X connect 56 2 55 2; -#X connect 56 3 55 3; -#X connect 56 4 55 4; -#X connect 56 5 55 5; -#X connect 56 6 55 6; -#X connect 56 7 55 7; -#X connect 56 8 55 8; -#X connect 56 9 55 9; -#X connect 56 10 55 10; -#X connect 56 11 55 11; -#X connect 56 12 55 12; -#X connect 56 13 55 13; -#X connect 56 14 55 14; -#X connect 56 15 55 15; -#X connect 57 0 30 0; -#X connect 57 0 28 0; -#X connect 57 1 30 1; -#X connect 57 1 28 1; -#X connect 57 2 30 2; -#X connect 57 2 28 2; -#X connect 57 3 30 3; -#X connect 57 3 28 3; -#X connect 57 4 30 4; -#X connect 57 4 28 4; -#X connect 57 5 30 5; -#X connect 57 5 28 5; -#X connect 57 6 30 6; -#X connect 57 6 28 6; -#X connect 57 7 30 7; -#X connect 57 7 28 7; -#X connect 57 8 30 8; -#X connect 57 8 28 8; -#X connect 57 9 30 9; -#X connect 57 9 28 9; -#X connect 57 10 30 10; -#X connect 57 10 28 10; -#X connect 57 11 30 11; -#X connect 57 11 28 11; -#X connect 57 12 30 12; -#X connect 57 12 28 12; -#X connect 57 13 30 13; -#X connect 57 13 28 13; -#X connect 57 14 30 14; -#X connect 57 14 28 14; -#X connect 59 0 31 0; -#X connect 59 1 31 1; -#X connect 59 2 31 2; -#X connect 59 3 31 3; -#X connect 59 4 31 4; -#X connect 59 5 31 5; -#X connect 59 6 31 6; -#X connect 59 7 31 7; -#X connect 59 8 31 8; -#X connect 59 9 31 9; -#X connect 59 10 31 10; -#X connect 59 11 31 11; -#X connect 59 12 31 12; -#X connect 59 13 31 13; -#X connect 59 14 31 14; -#X connect 59 15 31 15; -#X connect 61 0 63 0; -#X connect 62 0 61 0; diff --git a/Package/Hoa/helps/hoa.2d.wider~-help.pd b/Package/Hoa/helps/hoa.2d.wider~-help.pd deleted file mode 100644 index 08acbb2..0000000 --- a/Package/Hoa/helps/hoa.2d.wider~-help.pd +++ /dev/null @@ -1,132 +0,0 @@ -#N canvas 174 87 610 686 10; -#X obj 126 256 hoa.2d.scope~ @size 201 201 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 7 @view 0 @gain 5 @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor -0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X msg 19 365 \; pd dsp 1; -#X msg 19 409 \; pd dsp 0; -#X obj 407 185 line~; -#X msg 407 165 \$1 20; -#X obj 126 497 hoa.2d.meter~ @size 202 202 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "$" -@channels 16 @angles 0 22.5 45 67.5 90 112.5 135 157.5 180 202.5 225 -247.5 270 292.5 315 337.5 @offset 0 @rotation "anti-clockwise" @vectors -"energy" @interval 50 @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor 0.85 -0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 0 0 0.8 @energycolor -0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X text 468 148 between 0 and 1; -#X text 468 136 Widen value; -#X obj 407 142 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0 @max 1 @minmax 0 1 @decimal 6 @bgcolor -0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 309 152 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 309 174 hoa.pi 0; -#X obj 309 129 c.loadmess 0; -#X obj 126 713 hoa.dac~ 1:16 -------------------; -#X obj 407 119 c.loadmess 0.175; -#X obj 126 468 hoa.2d.decoder~ 7 ambisonic 16 --; -#X obj 126 200 hoa.2d.encoder~ 7 -------------; -#X obj 126 226 hoa.2d.wider~ 7 -----------------; -#X obj 126 153 hoa.soundrone; -#X obj 13 19 c.patcherinfos; -#X obj 18 2 loadbang; -#X obj 3 2 hoa.help.header; -#X obj 74 743 hoa.help.pub; -#X obj 410 2 hoa.help.also; -#X text 8 46 hoa.2d.wider~ can be used to wide the diffusion of a localised -sound. The degrees depending signals are weighted and appear in a logarithmic -way to have linear changes.; -#X connect 3 0 16 15; -#X connect 4 0 3 0; -#X connect 8 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 15 1; -#X connect 11 0 9 0; -#X connect 13 0 8 0; -#X connect 14 0 5 0; -#X connect 14 0 12 0; -#X connect 14 1 5 1; -#X connect 14 1 12 1; -#X connect 14 2 5 2; -#X connect 14 2 12 2; -#X connect 14 3 5 3; -#X connect 14 3 12 3; -#X connect 14 4 5 4; -#X connect 14 4 12 4; -#X connect 14 5 5 5; -#X connect 14 5 12 5; -#X connect 14 6 5 6; -#X connect 14 6 12 6; -#X connect 14 7 5 7; -#X connect 14 7 12 7; -#X connect 14 8 5 8; -#X connect 14 8 12 8; -#X connect 14 9 5 9; -#X connect 14 9 12 9; -#X connect 14 10 5 10; -#X connect 14 10 12 10; -#X connect 14 11 5 11; -#X connect 14 11 12 11; -#X connect 14 12 5 12; -#X connect 14 12 12 12; -#X connect 14 13 5 13; -#X connect 14 13 12 13; -#X connect 14 14 5 14; -#X connect 14 14 12 14; -#X connect 14 15 5 15; -#X connect 14 15 12 15; -#X connect 15 0 16 0; -#X connect 15 1 16 1; -#X connect 15 2 16 2; -#X connect 15 3 16 3; -#X connect 15 4 16 4; -#X connect 15 5 16 5; -#X connect 15 6 16 6; -#X connect 15 7 16 7; -#X connect 15 8 16 8; -#X connect 15 9 16 9; -#X connect 15 10 16 10; -#X connect 15 11 16 11; -#X connect 15 12 16 12; -#X connect 15 13 16 13; -#X connect 15 14 16 14; -#X connect 16 0 0 0; -#X connect 16 0 14 0; -#X connect 16 1 0 1; -#X connect 16 1 14 1; -#X connect 16 2 0 2; -#X connect 16 2 14 2; -#X connect 16 3 0 3; -#X connect 16 3 14 3; -#X connect 16 4 0 4; -#X connect 16 4 14 4; -#X connect 16 5 0 5; -#X connect 16 5 14 5; -#X connect 16 6 0 6; -#X connect 16 6 14 6; -#X connect 16 7 0 7; -#X connect 16 7 14 7; -#X connect 16 8 0 8; -#X connect 16 8 14 8; -#X connect 16 9 0 9; -#X connect 16 9 14 9; -#X connect 16 10 0 10; -#X connect 16 10 14 10; -#X connect 16 11 0 11; -#X connect 16 11 14 11; -#X connect 16 12 0 12; -#X connect 16 12 14 12; -#X connect 16 13 0 13; -#X connect 16 13 14 13; -#X connect 16 14 0 14; -#X connect 16 14 14 14; -#X connect 17 0 15 0; -#X connect 18 0 20 0; -#X connect 19 0 18 0; -#X coords 0 686 1 685 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.encoder~-help.pd b/Package/Hoa/helps/hoa.3d.encoder~-help.pd deleted file mode 100644 index 1120836..0000000 --- a/Package/Hoa/helps/hoa.3d.encoder~-help.pd +++ /dev/null @@ -1,123 +0,0 @@ -#N canvas 284 114 656 687 10; -#X text 127 91 source; -#X msg 50 218 \; pd dsp 1; -#X msg 50 253 \; pd dsp 0; -#X obj 129 135 c.gain~ @size 131 10 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor -0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; -#X obj 569 32 hoa.connect; -#X obj 569 12 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 2 22 c.patcherinfos; -#X obj 2 5 loadbang; -#X obj 2 5 hoa.help.header; -#X obj 418 5 hoa.help.also; -#X text 7 49 hoa.3d.encoder~ creates the spherical harmonics of a signal -depending on a given order \, an azimuth and an elevation.; -#X obj 100 611 hoa.help.pub; -#X obj 129 106 hoa.soundcoat; -#X obj 129 544 hoa.3d.decoder~ 3 regular 20 -------------------; -#X obj 129 582 hoa.dac~ 1:20 ----------------------------------; -#X obj 344 156 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 271 128 hoa.pi~ 2; -#X text 344 128 azimuth; -#X text 494 132 elevation; -#X obj 498 162 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 271 103 phasor~ -0.5; -#X text 342 139 (-π & π); -#X text 486 144 (-π/2 & π/2); -#X obj 414 134 hoa.pi~ 0.5; -#X obj 414 109 hoa.tri~ 0.05; -#X obj 129 183 hoa.3d.encoder~ 3, f 48; -#X obj 129 210 hoa.3d.scope~ @size 291 291 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 3 @view 0 0 0 @gain 1 @interval 100 @bgcolor 0.76 0.76 0.76 -1 @bdcolor 0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 129 521 hoa.3d.optim~ 3 inPhase ------------------------; -#X connect 3 0 25 0; -#X connect 5 0 4 0; -#X connect 6 0 8 0; -#X connect 7 0 6 0; -#X connect 12 0 3 0; -#X connect 13 0 14 0; -#X connect 13 1 14 1; -#X connect 13 2 14 2; -#X connect 13 3 14 3; -#X connect 13 4 14 4; -#X connect 13 5 14 5; -#X connect 13 6 14 6; -#X connect 13 7 14 7; -#X connect 13 8 14 8; -#X connect 13 9 14 9; -#X connect 13 10 14 10; -#X connect 13 11 14 11; -#X connect 13 12 14 12; -#X connect 13 13 14 13; -#X connect 13 14 14 14; -#X connect 13 15 14 15; -#X connect 13 16 14 16; -#X connect 13 17 14 17; -#X connect 13 18 14 18; -#X connect 13 19 14 19; -#X connect 16 0 15 0; -#X connect 16 0 25 1; -#X connect 20 0 16 1; -#X connect 23 0 19 0; -#X connect 23 0 25 2; -#X connect 24 0 23 1; -#X connect 25 0 26 0; -#X connect 25 0 27 0; -#X connect 25 1 26 1; -#X connect 25 1 27 1; -#X connect 25 2 26 2; -#X connect 25 2 27 2; -#X connect 25 3 26 3; -#X connect 25 3 27 3; -#X connect 25 4 26 4; -#X connect 25 4 27 4; -#X connect 25 5 26 5; -#X connect 25 5 27 5; -#X connect 25 6 26 6; -#X connect 25 6 27 6; -#X connect 25 7 26 7; -#X connect 25 7 27 7; -#X connect 25 8 26 8; -#X connect 25 8 27 8; -#X connect 25 9 26 9; -#X connect 25 9 27 9; -#X connect 25 10 26 10; -#X connect 25 10 27 10; -#X connect 25 11 26 11; -#X connect 25 11 27 11; -#X connect 25 12 26 12; -#X connect 25 12 27 12; -#X connect 25 13 26 13; -#X connect 25 13 27 13; -#X connect 25 14 26 14; -#X connect 25 14 27 14; -#X connect 25 15 26 15; -#X connect 25 15 27 15; -#X connect 27 0 13 0; -#X connect 27 1 13 1; -#X connect 27 2 13 2; -#X connect 27 3 13 3; -#X connect 27 4 13 4; -#X connect 27 5 13 5; -#X connect 27 6 13 6; -#X connect 27 7 13 7; -#X connect 27 8 13 8; -#X connect 27 9 13 9; -#X connect 27 10 13 10; -#X connect 27 11 13 11; -#X connect 27 12 13 12; -#X connect 27 13 13 13; -#X connect 27 14 13 14; -#X connect 27 15 13 15; -#X coords 0 687 1 686 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.exchanger~-help.pd b/Package/Hoa/helps/hoa.3d.exchanger~-help.pd deleted file mode 100644 index 3e8c682..0000000 --- a/Package/Hoa/helps/hoa.3d.exchanger~-help.pd +++ /dev/null @@ -1,512 +0,0 @@ -#N canvas 311 43 703 653 10; -#X obj 5 24 c.patcherinfos; -#X obj 5 7 loadbang; -#X obj 5 7 hoa.help.header; -#X obj 6 593 hoa.help.pub; -#X obj 421 7 hoa.help.also; -#X obj 149 507 c.dsp~ @size 30 30 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @logocolor 0 0.6 0 -0.8; -#X obj 566 32 hoa.connect; -#X obj 566 12 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 10 141 The excahnger can take one or two arguments for the -numbering and the normalization., f 58; -#X obj 372 176 hoa.3d.exchanger~ 3 toBFormat, f 43; -#X obj 372 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 389 223 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 406 248 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 423 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 440 223 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 248 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 474 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 491 223 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 508 248 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 525 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 223 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 559 248 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 576 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 593 223 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 610 248 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 199 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 57 sig~ 1; -#X obj 372 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 389 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 406 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 423 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 440 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 474 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 491 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 508 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 525 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 559 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 576 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 593 127 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 610 152 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 103 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 80 hoa.3d.encoder~ 3, f 43; -#X obj 372 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 389 323 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 406 348 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 423 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 440 323 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 348 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 474 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 491 323 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 508 348 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 525 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 323 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 559 348 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 576 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 593 323 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 610 348 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 299 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 276 hoa.3d.exchanger~ 3 fromBFormat, f 43; -#X obj 372 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 389 423 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 406 448 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 423 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 440 423 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 448 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 474 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 491 423 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 508 448 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 525 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 423 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 559 448 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 576 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 593 423 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 610 448 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 627 399 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 376 hoa.3d.exchanger~ 3 toN3D toSID, f 43; -#X obj 372 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 389 523 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 406 548 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 423 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 440 523 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 457 548 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 474 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 491 523 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 508 548 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 525 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 542 523 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 559 548 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 576 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 593 523 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 610 548 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 372 476 hoa.3d.exchanger~ 3 fromDaniel, f 43; -#X text 10 181 Numbering :, f 46; -#X text 10 191 toFurseMalham, f 46; -#X text 10 201 toSID, f 46; -#X text 10 211 fromFurseMalham, f 46; -#X text 10 221 fromSID, f 46; -#X text 10 251 Normaliaztion :, f 46; -#X text 10 261 toMaxN, f 46; -#X text 10 271 toN3D, f 46; -#X text 10 281 fromMaxN, f 46; -#X text 10 291 fromN3D, f 46; -#X text 10 322 The standards :, f 46; -#X text 10 331 toBFormat (aka. toFurseMalham & toMaxN), f 46; -#X text 10 341 toDaniel (aka. toSID & toN3D), f 46; -#X text 10 351 fromBFormat (aka. fromFurseMalham & fromMaxN); -#X text 10 361 fromDaniel (aka. fromSID & fromN3D); -#X obj 626 499 c.number~ @size 45 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X text 2 551 For further informations : http://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats#N3D -; -#X text 10 51 hoa.3d.exchanger~ renumbers and normalizes the channels. -; -#X text 10 81 The library default normalization is SN3D and the numbering -is ACN (cf tutorials). The exchangers will always convert from or to -the standard., f 58; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 7 0 6 0; -#X connect 9 0 10 0; -#X connect 9 0 60 0; -#X connect 9 1 11 0; -#X connect 9 1 60 1; -#X connect 9 2 12 0; -#X connect 9 2 60 2; -#X connect 9 3 13 0; -#X connect 9 3 60 3; -#X connect 9 4 14 0; -#X connect 9 4 60 4; -#X connect 9 5 15 0; -#X connect 9 5 60 5; -#X connect 9 6 16 0; -#X connect 9 6 60 6; -#X connect 9 7 17 0; -#X connect 9 7 60 7; -#X connect 9 8 18 0; -#X connect 9 8 60 8; -#X connect 9 9 19 0; -#X connect 9 9 60 9; -#X connect 9 10 20 0; -#X connect 9 10 60 10; -#X connect 9 11 21 0; -#X connect 9 11 60 11; -#X connect 9 12 22 0; -#X connect 9 12 60 12; -#X connect 9 13 23 0; -#X connect 9 13 60 13; -#X connect 9 14 24 0; -#X connect 9 14 60 14; -#X connect 9 15 25 0; -#X connect 9 15 60 15; -#X connect 26 0 43 0; -#X connect 43 0 27 0; -#X connect 43 0 9 0; -#X connect 43 1 28 0; -#X connect 43 1 9 1; -#X connect 43 2 29 0; -#X connect 43 2 9 2; -#X connect 43 3 30 0; -#X connect 43 3 9 3; -#X connect 43 4 31 0; -#X connect 43 4 9 4; -#X connect 43 5 32 0; -#X connect 43 5 9 5; -#X connect 43 6 33 0; -#X connect 43 6 9 6; -#X connect 43 7 34 0; -#X connect 43 7 9 7; -#X connect 43 8 35 0; -#X connect 43 8 9 8; -#X connect 43 9 36 0; -#X connect 43 9 9 9; -#X connect 43 10 37 0; -#X connect 43 10 9 10; -#X connect 43 11 38 0; -#X connect 43 11 9 11; -#X connect 43 12 39 0; -#X connect 43 12 9 12; -#X connect 43 13 40 0; -#X connect 43 13 9 13; -#X connect 43 14 41 0; -#X connect 43 14 9 14; -#X connect 43 15 42 0; -#X connect 43 15 9 15; -#X connect 60 0 44 0; -#X connect 60 0 77 0; -#X connect 60 1 45 0; -#X connect 60 1 77 1; -#X connect 60 2 46 0; -#X connect 60 2 77 2; -#X connect 60 3 47 0; -#X connect 60 3 77 3; -#X connect 60 4 48 0; -#X connect 60 4 77 4; -#X connect 60 5 49 0; -#X connect 60 5 77 5; -#X connect 60 6 50 0; -#X connect 60 6 77 6; -#X connect 60 7 51 0; -#X connect 60 7 77 7; -#X connect 60 8 52 0; -#X connect 60 8 77 8; -#X connect 60 9 53 0; -#X connect 60 9 77 9; -#X connect 60 10 54 0; -#X connect 60 10 77 10; -#X connect 60 11 55 0; -#X connect 60 11 77 11; -#X connect 60 12 56 0; -#X connect 60 12 77 12; -#X connect 60 13 57 0; -#X connect 60 13 77 13; -#X connect 60 14 58 0; -#X connect 60 14 77 14; -#X connect 60 15 59 0; -#X connect 60 15 77 15; -#X connect 77 0 61 0; -#X connect 77 0 93 0; -#X connect 77 1 62 0; -#X connect 77 1 93 1; -#X connect 77 2 63 0; -#X connect 77 2 93 2; -#X connect 77 3 64 0; -#X connect 77 3 93 3; -#X connect 77 4 65 0; -#X connect 77 4 93 4; -#X connect 77 5 66 0; -#X connect 77 5 93 5; -#X connect 77 6 67 0; -#X connect 77 6 93 6; -#X connect 77 7 68 0; -#X connect 77 7 93 7; -#X connect 77 8 69 0; -#X connect 77 8 93 8; -#X connect 77 9 70 0; -#X connect 77 9 93 9; -#X connect 77 10 71 0; -#X connect 77 10 93 10; -#X connect 77 11 72 0; -#X connect 77 11 93 11; -#X connect 77 12 73 0; -#X connect 77 12 93 12; -#X connect 77 13 74 0; -#X connect 77 13 93 13; -#X connect 77 14 75 0; -#X connect 77 14 93 14; -#X connect 77 15 76 0; -#X connect 77 15 93 15; -#X connect 93 0 78 0; -#X connect 93 1 79 0; -#X connect 93 2 80 0; -#X connect 93 3 81 0; -#X connect 93 4 82 0; -#X connect 93 5 83 0; -#X connect 93 6 84 0; -#X connect 93 7 85 0; -#X connect 93 8 86 0; -#X connect 93 9 87 0; -#X connect 93 10 88 0; -#X connect 93 11 89 0; -#X connect 93 12 90 0; -#X connect 93 13 91 0; -#X connect 93 14 92 0; -#X connect 93 15 109 0; -#X coords 0 653 1 652 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.map~-help.pd b/Package/Hoa/helps/hoa.3d.map~-help.pd deleted file mode 100644 index 026b4ec..0000000 --- a/Package/Hoa/helps/hoa.3d.map~-help.pd +++ /dev/null @@ -1,243 +0,0 @@ -#N canvas 168 87 1195 625 10; -#X msg 647 43 \; pd dsp 1; -#X msg 647 78 \; pd dsp 0; -#X obj 645 239 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 487 88 hoa.connect; -#X obj 487 68 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 632 191 hoa.pi~ 2; -#X obj 4 21 c.patcherinfos; -#X obj 4 4 loadbang; -#X obj 4 4 hoa.help.header; -#X obj 420 4 hoa.help.also; -#X text 646 221 azimuth; -#X text 737 220 elevation; -#X obj 727 191 hoa.pi~ 1; -#X obj 737 238 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 727 166 hoa.tri~ 0.1 -0.5 0.5; -#X obj 632 166 phasor~ -0.5; -#X obj 400 561 hoa.help.pub; -#X obj 31 244 sig~ 1; -#X obj 316 246 sig~ 1; -#X text 233 131 radius; -#X text 78 130 ordinate; -#X text 12 130 abscissa; -#X obj 16 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 80 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 236 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 300 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 30 227 source 1; -#X obj 16 189 c.pak 0 0 0, f 22; -#X obj 31 326 hoa.3d.decoder~ 1 regular 8 --------------------; -#X obj 31 301 hoa.3d.optim~ 1 inPhase ------------------------; -#X obj 31 272 hoa.3d.map~ 1 2 --------------------------------; -#X msg 16 210 1 car \$1 \$2 \$3; -#X msg 236 210 2 pol \$1 \$2 \$3; -#X obj 236 189 c.pak 0 0 0, f 22; -#X obj 31 356 hoa.3d.meter~ @size 291 145.5 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@channels 8 @angles 0 45 90 45 180 45 270 45 0 -45 90 -45 180 -45 270 --45 @offset 0 0 0 @rotation "anti-clockwise" @view "top-bottom" @vectors -"none" @interval 50 @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor 0.85 -0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 0 0 0.8 @energycolor -0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 145 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 143 130 height; -#X obj 365 154 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 297 131 azimuth; -#X text 362 131 elevation; -#X text 441 227 source 1; -#X obj 442 326 hoa.3d.decoder~ 1 regular 8 --------------------; -#X obj 442 301 hoa.3d.optim~ 1 inPhase ------------------------; -#X obj 442 356 hoa.3d.meter~ @size 291 145.5 @fontname "Helvetica" -@fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" -@send "(null)" @channels 8 @angles 0 45 90 45 180 45 270 45 0 -45 90 --45 180 -45 270 -45 @offset 0 0 0 @rotation "anti-clockwise" @view -"top-bottom" @vectors "none" @interval 50 @bgcolor 0.76 0.76 0.76 1 -@bdcolor 0.7 0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 -0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 -0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X text 557 222 radius; -#X obj 537 191 +~ 1; -#X obj 537 166 osc~ 0.3; -#X obj 552 239 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 822 244 sig~ 1; -#X text 821 227 source 1; -#X obj 822 326 hoa.3d.decoder~ 1 regular 8 --------------------; -#X obj 822 301 hoa.3d.optim~ 1 inPhase ------------------------; -#X obj 822 356 hoa.3d.meter~ @size 291 145.5 @fontname "Helvetica" -@fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" -@send "(null)" @channels 8 @angles 0 45 90 45 180 45 270 45 0 -45 90 --45 180 -45 270 -45 @offset 0 0 0 @rotation "anti-clockwise" @view -"top-bottom" @vectors "none" @interval 50 @bgcolor 0.76 0.76 0.76 1 -@bdcolor 0.7 0.7 0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 -0 0.8 @warmcolor 0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 -0 0 0.8 @energycolor 0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 442 272 hoa.3d.map~ 1 1 polar --------------------------; -#X obj 822 272 hoa.3d.map~ 1 1 cartesian ----------------------; -#X obj 440 517 hoa.dac~ 1:8 -----------------------------------; -#X obj 442 246 hoa.soundrone; -#X obj 917 187 *~ 2; -#X obj 1012 187 *~ 2; -#X obj 917 165 osc~ 0.13; -#X obj 1012 165 osc~ 0.25; -#X text 1030 203 ordinate; -#X text 928 203 abscissa; -#X obj 927 223 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 1023 223 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 1107 187 *~ 2; -#X obj 1118 223 c.number~ @size 48 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X text 1125 203 height; -#X text 774 84 With one source \, you can drive it with signals. Set -the mode polar (or pol or 0) to use polar coordinates (radius \, azimuth -and elevation) and cartesian (or car or 1) to use cartesian coordinates -(abscissa \, ordinate and height).; -#X text 51 525 hoa.map~'s syntax; -#X text 51 535 for multisource mode :; -#X text 51 545 index; -#X text 51 555 coordinate type (polar or cartesian); -#X text 51 565 coordinate one (radius or abscissa); -#X text 51 575 coordinate two (azimuth or ordinate); -#X text 51 585 coordinate three (elevation or height).; -#X obj 1107 165 osc~ 0.33; -#X text 9 48 hoa.3d.map~ is an ambisonic encoder that uses fractionnal -orders and amplitude variation to simulate sources distances. First -argument is the order \, second argument is the number of sources and -third argument (facultative) is the coordinates mode (polar or pol -/ cartesian or car).; -#X text 314 227 source 2; -#X connect 4 0 3 0; -#X connect 5 0 2 0; -#X connect 5 0 53 2; -#X connect 6 0 8 0; -#X connect 7 0 6 0; -#X connect 12 0 13 0; -#X connect 12 0 53 3; -#X connect 14 0 12 1; -#X connect 15 0 5 1; -#X connect 17 0 30 0; -#X connect 18 0 30 1; -#X connect 22 0 27 0; -#X connect 23 0 27 1; -#X connect 24 0 33 0; -#X connect 25 0 33 1; -#X connect 27 0 31 0; -#X connect 28 0 34 0; -#X connect 28 1 34 1; -#X connect 28 2 34 2; -#X connect 28 3 34 3; -#X connect 28 4 34 4; -#X connect 28 5 34 5; -#X connect 28 6 34 6; -#X connect 28 7 34 7; -#X connect 29 0 28 0; -#X connect 29 1 28 1; -#X connect 29 2 28 2; -#X connect 29 3 28 3; -#X connect 30 0 29 0; -#X connect 30 1 29 1; -#X connect 30 2 29 2; -#X connect 30 3 29 3; -#X connect 31 0 30 0; -#X connect 32 0 30 0; -#X connect 33 0 32 0; -#X connect 35 0 27 2; -#X connect 37 0 33 2; -#X connect 41 0 43 0; -#X connect 41 0 55 0; -#X connect 41 1 43 1; -#X connect 41 1 55 1; -#X connect 41 2 43 2; -#X connect 41 2 55 2; -#X connect 41 3 43 3; -#X connect 41 3 55 3; -#X connect 41 4 43 4; -#X connect 41 4 55 4; -#X connect 41 5 43 5; -#X connect 41 5 55 5; -#X connect 41 6 43 6; -#X connect 41 6 55 6; -#X connect 41 7 43 7; -#X connect 41 7 55 7; -#X connect 42 0 41 0; -#X connect 42 1 41 1; -#X connect 42 2 41 2; -#X connect 42 3 41 3; -#X connect 45 0 53 1; -#X connect 45 0 47 0; -#X connect 46 0 45 0; -#X connect 48 0 54 0; -#X connect 50 0 52 0; -#X connect 50 1 52 1; -#X connect 50 2 52 2; -#X connect 50 3 52 3; -#X connect 50 4 52 4; -#X connect 50 5 52 5; -#X connect 50 6 52 6; -#X connect 50 7 52 7; -#X connect 51 0 50 0; -#X connect 51 1 50 1; -#X connect 51 2 50 2; -#X connect 51 3 50 3; -#X connect 53 0 42 0; -#X connect 53 1 42 1; -#X connect 53 2 42 2; -#X connect 53 3 42 3; -#X connect 54 0 51 0; -#X connect 54 1 51 1; -#X connect 54 2 51 2; -#X connect 54 3 51 3; -#X connect 56 0 53 0; -#X connect 57 0 63 0; -#X connect 57 0 54 1; -#X connect 58 0 64 0; -#X connect 58 0 54 2; -#X connect 59 0 57 0; -#X connect 60 0 58 0; -#X connect 65 0 66 0; -#X connect 65 0 54 3; -#X connect 76 0 65 0; -#X coords 0 625 1 624 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.meter~-help.pd b/Package/Hoa/helps/hoa.3d.meter~-help.pd deleted file mode 100644 index f7b7715..0000000 --- a/Package/Hoa/helps/hoa.3d.meter~-help.pd +++ /dev/null @@ -1,188 +0,0 @@ -#N canvas 300 64 1112 686 10; -#X obj 487 68 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 4 21 c.patcherinfos; -#X obj 4 4 loadbang; -#X obj 4 4 hoa.help.header; -#X obj 420 4 hoa.help.also; -#X obj 487 92 hoa.connect; -#X msg 488 198 \; pd dsp 1; -#X msg 488 233 \; pd dsp 0; -#X obj 202 147 hoa.pi~ 2; -#X obj 381 146 hoa.pi~ 1; -#X obj 204 101 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 382 101 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 381 122 hoa.tri~ 0.05 -0.5 0.5; -#X obj 202 122 phasor~ 0.5; -#X obj 691 196 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max 64 @minmax 1 64 @decimal 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 691 229 channels \$1; -#X text 788 175 channels; -#X text 788 165 Rotation of; -#X msg 791 229 rotation \$1; -#X obj 791 195 c.menu @size 100 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "Anti-Clockwise" "Clockwise" @states -0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 -0 1; -#X text 695 175 channels; -#X text 695 165 Number of; -#X obj 573 196 c.menu @size 100 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "none" "energy" "velocity" "both" -@states 0 0 0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X msg 573 230 vectors \$1; -#X text 590 166 Vectors to; -#X text 590 176 display; -#X obj 731 277 s hoameter3d; -#X obj 24 288 hoa.3d.meter~ @size 363 181.5 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "hoameter3d" @send -"(null)" @channels 20 @angles 180 69.1 159.1 0 90 20.9 135 35.3 135 --35.3 180 -69.1 20.9 0 90 -20.9 45 35.3 45 -35.3 0 69.1 200.9 0 270 -20.9 225 35.3 225 -35.3 0 -69.1 339.1 0 270 -20.9 315 35.3 315 -35.3 -@offset 0 0 0 @rotation "anti-clockwise" @view "top-bottom" @vectors -"velocity" @interval 100 @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 -0.7 1 @coldcolor 0 0.6 0 0.8 @tepidcolor 0.6 0.73 0 0.8 @warmcolor -0.85 0.85 0 0.8 @hotcolor 1 0.6 0 0.8 @overcolor 1 0 0 0.8 @energycolor -0 0 1 0.8 @velocitycolor 1 0 0 0.8; -#X obj 691 139 c.loadmess 20; -#X obj 402 219 r hoadec3d; -#X obj 915 195 c.menu @size 100 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "top" "bottom" "top-bottom" "top/bottom" -@states 0 0 0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X msg 915 229 view \$1; -#X obj 915 139 c.loadmess set 2; -#X text 9 48 hoa.2d.meter~ displays the peak levels for a spherical -array of loudspeakers. It computes and displays the energy and velocity -vectors.; -#X obj 573 139 c.loadmess set 1; -#X text 499 324 Offset of; -#X text 499 334 channels; -#X msg 501 448 offset \$1 \$2 \$3; -#X msg 501 395 0 0 0; -#X msg 521 417 60 0 180; -#X msg 704 356 angles 180 69.0948 159.095 -0 90 20.9052 135 35.2644 -135 -35.2644 180 -69.0948 20.9052 -0 90 -20.9052 45 35.2644 45 -35.2644 -0 69.0948 200.905 -0 270 20.9052 225 35.2644 225 -35.2644 0 -69.0948 -339.095 -0 270 -20.9052 315 35.2644 315 -35.2644; -#X msg 730 437 angles 0 0 72 6 144 12 216 18 288 24 0 30 72 36 144 -42 216 48 288 54 0 60 72 66 144 72 216 78 288 84 0 90 60 -33 180 -33 --60 -33; -#X obj 704 526 s hoadec3d; -#X obj 607 526 s hoameter3d; -#X text 499 344 (Rotation around; -#X text 499 354 xyz axes); -#X text 710 334 channels; -#X text 710 324 Angles of; -#X text 920 164 View; -#X obj 567 5 hoa.help.pub; -#X text 503 557 The offset performs an xyz rotation of the channels -positions.; -#X text 504 593 The channels surfaces necessitates heavy calculations -\, thus you shouldn't change the number of channels \, the offset or -the angles before the last computation has been made.; -#X obj 783 328 c.loadmess; -#X obj 24 249 hoa.3d.decoder~ 3 regular 20 ------------------------------- -; -#X obj 24 132 osc~ 220; -#X obj 24 171 hoa.3d.encoder~ 3 ------------------------------------------ -; -#X obj 24 214 hoa.3d.optim~ 3 inPhase ------------------------------------ -; -#X connect 0 0 5 0; -#X connect 1 0 3 0; -#X connect 2 0 1 0; -#X connect 8 0 55 1; -#X connect 9 0 55 2; -#X connect 10 0 13 0; -#X connect 11 0 12 0; -#X connect 12 0 9 1; -#X connect 13 0 8 1; -#X connect 14 0 15 0; -#X connect 15 0 26 0; -#X connect 18 0 26 0; -#X connect 19 0 18 0; -#X connect 22 0 23 0; -#X connect 23 0 26 0; -#X connect 28 0 14 0; -#X connect 29 0 53 15; -#X connect 30 0 31 0; -#X connect 31 0 26 0; -#X connect 32 0 30 0; -#X connect 34 0 22 0; -#X connect 37 0 43 0; -#X connect 37 0 42 0; -#X connect 38 0 37 0; -#X connect 39 0 37 0; -#X connect 40 0 42 0; -#X connect 40 0 43 0; -#X connect 41 0 42 0; -#X connect 41 0 43 0; -#X connect 52 0 40 0; -#X connect 53 0 27 0; -#X connect 53 1 27 1; -#X connect 53 2 27 2; -#X connect 53 3 27 3; -#X connect 53 4 27 4; -#X connect 53 5 27 5; -#X connect 53 6 27 6; -#X connect 53 7 27 7; -#X connect 53 8 27 8; -#X connect 53 9 27 9; -#X connect 53 10 27 10; -#X connect 53 11 27 11; -#X connect 53 12 27 12; -#X connect 53 13 27 13; -#X connect 53 14 27 14; -#X connect 53 15 27 15; -#X connect 53 16 27 16; -#X connect 53 17 27 17; -#X connect 53 18 27 18; -#X connect 53 19 27 19; -#X connect 54 0 55 0; -#X connect 55 0 56 0; -#X connect 55 1 56 1; -#X connect 55 2 56 2; -#X connect 55 3 56 3; -#X connect 55 4 56 4; -#X connect 55 5 56 5; -#X connect 55 6 56 6; -#X connect 55 7 56 7; -#X connect 55 8 56 8; -#X connect 55 9 56 9; -#X connect 55 10 56 10; -#X connect 55 11 56 11; -#X connect 55 12 56 12; -#X connect 55 13 56 13; -#X connect 55 14 56 14; -#X connect 55 15 56 15; -#X connect 56 0 53 0; -#X connect 56 1 53 1; -#X connect 56 2 53 2; -#X connect 56 3 53 3; -#X connect 56 4 53 4; -#X connect 56 5 53 5; -#X connect 56 6 53 6; -#X connect 56 7 53 7; -#X connect 56 8 53 8; -#X connect 56 9 53 9; -#X connect 56 10 53 10; -#X connect 56 11 53 11; -#X connect 56 12 53 12; -#X connect 56 13 53 13; -#X connect 56 14 53 14; -#X connect 56 15 53 15; -#X coords 0 686 1 685 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.optim~-help.pd b/Package/Hoa/helps/hoa.3d.optim~-help.pd deleted file mode 100644 index 38dce91..0000000 --- a/Package/Hoa/helps/hoa.3d.optim~-help.pd +++ /dev/null @@ -1,122 +0,0 @@ -#N canvas 101 76 570 676 10; -#X obj 320 100 phasor~ -0.3; -#X msg 455 211 \; pd dsp 1; -#X msg 455 249 \; pd dsp 0; -#X text 6 196 basic has no effect.; -#X text 6 225 confined to the center of the; -#X obj 105 148 c.menu @size 100 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "basic" "maxRe" "inPhase" @states -0 0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 -0 0 1; -#X obj 214 125 hoa.soundcoat; -#X text 5 254 inPhase is used when audience; -#X obj 481 85 hoa.connect; -#X obj 481 65 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 9 302 Important : the optimization; -#X text 9 312 can be changed in real time; -#X text 9 322 but this is not a good practice.; -#X text 9 332 You should only use this; -#X text 9 343 option for your tests.; -#X obj 13 21 c.patcherinfos; -#X obj 18 4 loadbang; -#X obj 3 4 hoa.help.header; -#X obj 110 606 hoa.help.pub; -#X obj 414 4 hoa.help.also; -#X obj 215 268 hoa.3d.scope~ @size 219 219 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@order 3 @view 0 0 0 @gain 20 @interval 100 @bgcolor 0.76 0.76 0.76 -1 @bdcolor 0.7 0.7 0.7 1 @phcolor 1 0 0 1 @nhcolor 0 0 1 1; -#X obj 214 192 hoa.3d.optim~ 3 maxRe --------------; -#X obj 214 153 hoa.3d.encoder~ 3 ------------------; -#X obj 215 526 hoa.3d.decoder~ 3 regular 20 -------; -#X obj 215 574 hoa.dac~ 1:20 ----------------------; -#X text 4 48 hoa.3d.optim~ weights the spherical harmonics signals -depending on the optimization.; -#X text 6 235 the sphere.; -#X obj 105 116 c.loadmess set 1; -#X obj 427 100 sig~ 0; -#X obj 427 125 hoa.pi~ 1; -#X obj 320 125 hoa.pi~ 2; -#X text 5 264 coverzs all the sphere.; -#X text 6 215 maxRe is used when audience is; -#X connect 0 0 30 1; -#X connect 5 1 21 0; -#X connect 6 0 22 0; -#X connect 9 0 8 0; -#X connect 15 0 17 0; -#X connect 16 0 15 0; -#X connect 21 0 20 0; -#X connect 21 0 23 0; -#X connect 21 1 20 1; -#X connect 21 1 23 1; -#X connect 21 2 20 2; -#X connect 21 2 23 2; -#X connect 21 3 20 3; -#X connect 21 3 23 3; -#X connect 21 4 20 4; -#X connect 21 4 23 4; -#X connect 21 5 20 5; -#X connect 21 5 23 5; -#X connect 21 6 20 6; -#X connect 21 6 23 6; -#X connect 21 7 20 7; -#X connect 21 7 23 7; -#X connect 21 8 20 8; -#X connect 21 8 23 8; -#X connect 21 9 20 9; -#X connect 21 9 23 9; -#X connect 21 10 20 10; -#X connect 21 10 23 10; -#X connect 21 11 20 11; -#X connect 21 11 23 11; -#X connect 21 12 20 12; -#X connect 21 12 23 12; -#X connect 21 13 20 13; -#X connect 21 13 23 13; -#X connect 21 14 20 14; -#X connect 21 14 23 14; -#X connect 21 15 20 15; -#X connect 21 15 23 15; -#X connect 22 0 21 0; -#X connect 22 1 21 1; -#X connect 22 2 21 2; -#X connect 22 3 21 3; -#X connect 22 4 21 4; -#X connect 22 5 21 5; -#X connect 22 6 21 6; -#X connect 22 7 21 7; -#X connect 22 8 21 8; -#X connect 22 9 21 9; -#X connect 22 10 21 10; -#X connect 22 11 21 11; -#X connect 22 12 21 12; -#X connect 22 13 21 13; -#X connect 22 14 21 14; -#X connect 22 15 21 15; -#X connect 23 0 24 0; -#X connect 23 1 24 1; -#X connect 23 2 24 2; -#X connect 23 3 24 3; -#X connect 23 4 24 4; -#X connect 23 5 24 5; -#X connect 23 6 24 6; -#X connect 23 7 24 7; -#X connect 23 8 24 8; -#X connect 23 9 24 9; -#X connect 23 10 24 10; -#X connect 23 11 24 11; -#X connect 23 12 24 12; -#X connect 23 13 24 13; -#X connect 23 14 24 14; -#X connect 23 15 24 15; -#X connect 23 16 24 16; -#X connect 23 17 24 17; -#X connect 23 18 24 18; -#X connect 23 19 24 19; -#X connect 27 0 5 0; -#X connect 28 0 29 0; -#X connect 29 0 22 2; -#X connect 30 0 22 1; -#X coords 0 676 1 675 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.scope~-help.pd b/Package/Hoa/helps/hoa.3d.scope~-help.pd deleted file mode 100644 index 6f14101..0000000 --- a/Package/Hoa/helps/hoa.3d.scope~-help.pd +++ /dev/null @@ -1,116 +0,0 @@ -#N canvas 408 103 616 551 10; -#X msg 446 69 \; pd dsp 1; -#X msg 446 107 \; pd dsp 0; -#X obj 291 244 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X msg 291 270 order \$1; -#X obj 381 244 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X msg 381 270 gain \$1; -#X obj 381 221 c.loadmess 1; -#X obj 471 244 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 20 @max 1000 @minmax 20 1000 @decimal 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 471 270 interval \$1; -#X obj 290 368 c.colorpanel @size 97 14 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @matrix 8 1 @reverse 0 @saturation 1 @hue 0 @lightness -0.5 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X obj 290 387 c.prepend phcolor; -#X obj 430 368 c.colorpanel @size 97 14 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @matrix 8 1 @reverse 0 @saturation 1 @hue 0.65 -@lightness 0.5 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X text 289 197 order :; -#X text 289 187 Ambisonic; -#X text 379 187 Gain :; -#X text 469 197 interval :; -#X text 289 337 color :; -#X text 289 327 Positive; -#X text 429 337 color :; -#X text 429 327 Negative; -#X text 469 187 Refresh; -#X obj 471 221 c.loadmess 20; -#X obj 430 387 c.prepend nhcolor; -#X obj 99 483 hoa.help.pub; -#X obj 491 501 hoa.connect; -#X obj 491 481 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 20 23 c.patcherinfos; -#X obj 25 6 loadbang; -#X obj 5 6 hoa.help.header; -#X obj 414 6 hoa.help.also; -#X obj 45 202 hoa.3d.encoder~ 3 ----------------; -#X obj 291 221 c.loadmess 3; -#X obj 381 299 s hoascope3d; -#X obj 145 136 phasor~ -0.3; -#X obj 145 161 hoa.pi~ 2; -#X obj 145 107 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 246 136 hoa.tri~ 0.1 -0.5 0.5; -#X obj 246 161 hoa.pi~ 1; -#X obj 246 107 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 430 439 s hoascope3d; -#X text 3 57 hoa.3d.scope~ displays the spherical harmonics of an ambisonic -sound field on a disc. The disc is the cross-section of the ambisonic -sphere at 0° elevation.; -#X obj 45 240 hoa.3d.scope~ @size 207 207 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "hoascope3d" @send -"(null)" @order 3 @view 0 0 0 @gain 1 @interval 20 @bgcolor 0.76 0.76 -0.76 1 @bdcolor 0.7 0.7 0.7 1 @phcolor 1 0 2.38419e-07 1 @nhcolor 0 -0.1 1 1; -#X obj 45 151 osc~ 0.1; -#X connect 2 0 3 0; -#X connect 3 0 32 0; -#X connect 4 0 5 0; -#X connect 5 0 32 0; -#X connect 6 0 4 0; -#X connect 7 0 8 0; -#X connect 8 0 32 0; -#X connect 9 0 10 0; -#X connect 10 0 39 0; -#X connect 11 0 22 0; -#X connect 21 0 7 0; -#X connect 22 0 39 0; -#X connect 25 0 24 0; -#X connect 26 0 28 0; -#X connect 27 0 26 0; -#X connect 30 0 41 0; -#X connect 30 1 41 1; -#X connect 30 2 41 2; -#X connect 30 3 41 3; -#X connect 30 4 41 4; -#X connect 30 5 41 5; -#X connect 30 6 41 6; -#X connect 30 7 41 7; -#X connect 30 8 41 8; -#X connect 30 9 41 9; -#X connect 30 10 41 10; -#X connect 30 11 41 11; -#X connect 30 12 41 12; -#X connect 30 13 41 13; -#X connect 30 14 41 14; -#X connect 30 15 41 15; -#X connect 31 0 2 0; -#X connect 33 0 34 1; -#X connect 34 0 30 1; -#X connect 35 0 33 0; -#X connect 36 0 37 1; -#X connect 37 0 30 2; -#X connect 38 0 36 0; -#X connect 42 0 30 0; -#X coords 0 551 1 550 85 60 0; diff --git a/Package/Hoa/helps/hoa.connect-help.pd b/Package/Hoa/helps/hoa.connect-help.pd deleted file mode 100644 index 2d50a12..0000000 --- a/Package/Hoa/helps/hoa.connect-help.pd +++ /dev/null @@ -1,25 +0,0 @@ -#N canvas 476 114 686 323 10; -#X obj 434 208 hoa.connect; -#X obj 434 189 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 434 150 key; -#X obj 434 169 sel 32; -#X text 5 49 hoa.connect hepls to connect the hoa objects together. -; -#X obj 31 95 hoa.2d.encoder~ 7 ---------------------------; -#X obj 31 146 hoa.2d.decoder~ 7 ambisonic 16 --------------; -#X obj 31 199 hoa.dac~ 1:16 -------------------------------; -#X text 386 86 Select the objects you want to connect; -#X text 386 96 then bang hoa.connect. In this example \,; -#X text 386 106 we use the space key to generate the bang.; -#X obj 13 23 c.patcherinfos; -#X obj 18 6 loadbang; -#X obj 3 6 hoa.help.header; -#X obj 49 242 hoa.help.pub; -#X obj 425 6 hoa.help.also; -#X connect 1 0 0 0; -#X connect 2 0 3 0; -#X connect 3 0 1 0; -#X connect 11 0 13 0; -#X connect 12 0 11 0; -#X coords 0 323 1 322 100 60 0; diff --git a/Package/Hoa/helps/hoa.dac~-help.pd b/Package/Hoa/helps/hoa.dac~-help.pd deleted file mode 100644 index cb00dad..0000000 --- a/Package/Hoa/helps/hoa.dac~-help.pd +++ /dev/null @@ -1,19 +0,0 @@ -#N canvas 568 143 613 395 10; -#X text 27 46 hoa.dac~ facilitates the routing of large array of loudspeakers. -; -#X text 31 148 Channels 1 to 8 :; -#X text 31 208 Channels 16 to 1 :; -#X obj 30 298 hoa.dac~ 9:16 10 22 6:1 ------------------; -#X text 31 268 Channels 9 to 16 \, 10 \, 22 and 6 to 1 :; -#X text 31 88 Channels 1 2 :; -#X obj 30 238 hoa.dac~ 16:1 ----------------------------; -#X obj 30 178 hoa.dac~ 1:8 -----------------------------; -#X obj 30 118 hoa.dac~ 1 2 -----------------------------; -#X obj 32 21 c.patcherinfos; -#X obj 37 4 loadbang; -#X obj 22 4 hoa.help.header; -#X obj 39 330 hoa.help.pub; -#X obj 447 4 hoa.help.also; -#X connect 9 0 11 0; -#X connect 10 0 9 0; -#X coords 0 395 1 394 100 60 0; diff --git a/Package/Hoa/helps/hoa.io-help.pd b/Package/Hoa/helps/hoa.io-help.pd deleted file mode 100644 index 173a3ab..0000000 --- a/Package/Hoa/helps/hoa.io-help.pd +++ /dev/null @@ -1,267 +0,0 @@ -#N canvas 1 23 1427 663 10; -#X obj 40 229 hoa.in; -#X text 5 48 The inlet and outlet to use in the hoa.process~'s patchers -; -#X obj 187 229 hoa.in~; -#X obj 110 229 hoa.in; -#X obj 110 328 hoa.out; -#X obj 40 328 hoa.out; -#X obj 187 329 hoa.out~; -#X obj 221 273 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 287 229 hoa.in~; -#X obj 287 329 hoa.out~; -#X obj 321 273 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 681 273 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 801 273 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 430 229 hoa.in extra 1; -#X obj 430 329 hoa.out extra 1; -#X obj 647 229 hoa.in~ extra 1; -#X obj 540 229 hoa.in extra 3; -#X obj 540 329 hoa.out extra 4; -#X obj 647 329 hoa.out~ extra 1; -#X obj 767 229 hoa.in~ extra 2; -#X obj 767 329 hoa.out~ extra 2; -#X text 39 165 hoa.in~ and hoa.in share the same parent inlet but the -signal is routed to the hoa.in~ and the other messages are routed to -hoa.in.; -#X text 8 425 With the above hoa.io configuration \, the hoa.process~ -have one inlet per instance \, that send messages to the two hoa.in -and the signal to the two hoa.in~ \, and two outlet per instance \, -the first one outputs the sum of the signal received by the hoa.out~ -and the second one outputs the message received by the hoa.out.; -#X text 459 165 hoa.in~ and hoa.in with the same extra argument share -the same parent inlet but the signal is routed to the hoa.in~ and the -other messages are routed to hoa.in.; -#X obj 462 273 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 52 273 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 122 273 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 899 292 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 964 268 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 940 314 sig~ 1; -#X obj 1011 294 sig~ 2; -#X obj 1082 264 sig~ 3; -#X obj 1036 238 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 940 384 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 972 414 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 1004 444 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X text 916 498 instance.; -#X obj 1225 284 sig~ 1.5; -#X obj 1037 384 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 1069 414 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 940 346 hoa.2d.process~ 3 hoa.ioexample~ planewaves ---------------- -; -#X text 916 468 The 3 instance; -#X text 916 478 signal outlets \,; -#X text 916 488 one for each; -#X text 916 508 Each instance; -#X text 916 518 have two hoa.out~; -#X text 916 528 that sum the; -#X text 916 538 signals of the; -#X text 916 548 hoa.in~.; -#X text 1029 468 The 2 extra; -#X text 1029 478 signal outlets.; -#X text 1029 498 outputs the; -#X text 1029 508 sum of the; -#X text 1029 518 signals received; -#X text 1029 548 extra hoa.out~; -#X text 1029 488 Each one; -#X text 1029 528 by the; -#X text 1029 538 corresponding; -#X obj 1154 314 sig~ 0.333333; -#X obj 1102 384 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 1134 414 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 1167 444 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 1136 498 instance.; -#X text 1136 468 The 3 instance; -#X text 1136 488 one for each; -#X text 1136 478 messages outlets \,; -#X text 1136 508 Each one outputs; -#X text 1136 518 the messages; -#X text 1136 528 received by the; -#X text 1136 538 hoa.out~ of; -#X text 1136 548 its instance.; -#X obj 899 267 c.loadmess 1; -#X obj 964 237 c.loadmess 2; -#X obj 1036 207 c.loadmess 3; -#X obj 1199 393 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X text 886 78 The hoa.io configuration of this patch inside a hoa.process~ -in planewaves mode with 3 instance.; -#X text 8 75 hoa.io without arguments create an inlet for each instance -of the process. You can have several hoa.io without arguments in a -patcher but they will share the same parent inlet and outlet.; -#X text 459 376 hoa.out~ and hoa.out with the same extra argument have -separated parent outlets for signal or other messages.; -#X text 39 376 hoa.out~ and hoa.out have separated parent outlets for -signal or other messages.; -#X text 448 75 hoa.io with the argument extra and a number (or default -1) create an extra inlet or outlet that will be shared by all the instances. -You can have several hoa.io with the same extra argument in a patcher -but they will share the same parent inlet and outlet.; -#X text 448 425 With the above hoa.io configuration \, the hoa.process~ -have 3 extra inlets and 6 extra outlets \, 2 for the signal and 4 for -the messages. The extra hoa.in~ receives the signals from the extra -inlets 1 and 2 of the hoa.process~ and the extra hoa.in receives the -messages from the extra inlets 1 and 3 (note that if you target the -hoa.process~ only the target instace receive the messages). The extra -signal outlets output the sum of the extra hoa.out~ of all the instances -that correspond to their index. The extra message outlet 1 outputs -the messages received by the hoa.out extra 1 of all the instance and -the extra message outlet 4 outputs the messages received by the hoa.out -extra 4 of all the instance. Note that the messages sent to the extra -inlet 2 are not received because there is no hoa.in extra 2 and the -extra messages outlets 2 and 3 are useless because there are no hoa.out -extra 2 and 3; -#X text 1249 498 outputs the; -#X text 1249 488 Each one; -#X text 1249 518 by the; -#X text 1249 528 corresponding; -#X text 1249 468 The 4 extra; -#X text 1249 478 messages outlets.; -#X text 1249 508 messages received; -#X text 1249 538 extra hoa.out.; -#X text 1249 548 Then \, extra messages; -#X text 1249 558 outlet 2 and 3 are; -#X text 1249 568 useless.; -#X obj 1134 292 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 1134 240 c.loadmess 69; -#X msg 560 275; -#X msg 1297 277 set Année érotique; -#X msg 1297 392 Année érotique; -#X msg 1297 367 set \$1 \$2; -#X text 916 118 The 3 instance signal and messages; -#X text 916 128 inlets \, one for each instance.; -#X text 916 138 The messages are sent to the hoa.in.; -#X text 916 148 The signals are sent to the hoa.in~.; -#X text 1156 118 The 3 extra signal and messages; -#X text 1156 128 inlets.; -#X text 1156 138 The extra inlet 1 \, send the messages; -#X text 1156 148 to the hoa.in extra 1 and the signal; -#X text 1156 158 to the hoa.in~ extra 1; -#X text 1156 168 The extra inlet 2 \, send the signal; -#X text 1156 178 to the hoa.in~ extra 2; -#X text 1156 188 The extra inlet 3 \, send the messages; -#X text 1156 198 to the hoa.in extra 3; -#X msg 927 37 \; pd dsp 1; -#X msg 991 37 \; pd dsp 0; -#X text 905 593 The hoa.io configuration of this patch is an example -made to show all the behaviors of the hoa.io. You would prefer to look -at the real uses of hoa.process~.; -#X obj 13 22 c.patcherinfos; -#X obj 18 5 loadbang; -#X obj 3 5 hoa.help.header; -#X obj 16 551 hoa.help.pub; -#X obj 439 5 hoa.help.also; -#X connect 0 0 5 0; -#X connect 0 0 25 0; -#X connect 2 0 7 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 26 0; -#X connect 8 0 10 0; -#X connect 8 0 9 0; -#X connect 13 0 24 0; -#X connect 13 0 14 0; -#X connect 15 0 11 0; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 16 0 94 0; -#X connect 19 0 12 0; -#X connect 19 0 20 0; -#X connect 27 0 40 0; -#X connect 28 0 40 1; -#X connect 29 0 40 0; -#X connect 30 0 40 1; -#X connect 31 0 40 2; -#X connect 32 0 40 2; -#X connect 37 0 40 4; -#X connect 40 0 33 0; -#X connect 40 1 34 0; -#X connect 40 2 35 0; -#X connect 40 3 38 0; -#X connect 40 4 39 0; -#X connect 40 5 59 0; -#X connect 40 6 60 0; -#X connect 40 7 61 0; -#X connect 40 8 74 0; -#X connect 40 11 97 0; -#X connect 58 0 40 3; -#X connect 71 0 27 0; -#X connect 72 0 28 0; -#X connect 73 0 32 0; -#X connect 92 0 40 3; -#X connect 93 0 92 0; -#X connect 95 0 40 5; -#X connect 97 0 96 0; -#X connect 114 0 116 0; -#X connect 115 0 114 0; diff --git a/Package/Hoa/helps/hoa.map-help.pd b/Package/Hoa/helps/hoa.map-help.pd deleted file mode 100644 index 1ccd7e9..0000000 --- a/Package/Hoa/helps/hoa.map-help.pd +++ /dev/null @@ -1,609 +0,0 @@ -#N canvas 451 48 844 712 10; -#X text 360 314 Mousewheel and alt to change the zoom.; -#X obj 33 145 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "hoamapexample" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 -0.7 0.7 1 @view "xy" @outputmode "polar" @zoom 0.4 @mapname "(null)" -; -#X obj 33 121 c.loadmess; -#X msg 534 540 \; pd dsp 1; -#X msg 534 575 \; pd dsp 0; -#X obj 582 42 hoa.connect; -#X obj 582 17 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X obj 53 376 c.loadmess 1; -#X text 360 225 To create group \, drag select a set of sources \, -when mouse up the group will be created. To remove group \, right-click -or click with cmd on group then select "Remove group".; -#X text 358 276 To mute source or group \, right-click or click with -cmd on it and select "Mute" or "Unmute".; -#X obj 53 431 hoa.2d.map~ 3 4 -------------------------; -#N canvas 284 119 577 458 hoa.rhythm 0; -#X msg 231 -105 0; -#X obj 158 21 *~ 0; -#X msg 211 -33 0; -#X obj 204 -105 + 1; -#X obj 179 -104 f; -#X obj 8 21 *~ 0; -#X msg 61 -33 0; -#X obj 54 -105 + 1; -#X obj 29 -104 f; -#X msg 81 -105 0; -#X obj 29 -82 sel 0 4; -#X obj 61 -56 delay 3; -#X obj -112 57 *~ 0; -#X msg -59 -13 0; -#X obj -66 -85 + 1; -#X obj -91 -84 f; -#X msg -39 -85 0; -#X obj -91 -62 sel 0 6; -#X obj -62 231 *~ 0; -#X msg -9 177 0; -#X obj -9 154 delay 1; -#X obj -16 105 + 1; -#X obj -41 106 f; -#X msg 11 105 0; -#X obj -41 128 sel 0 2; -#X obj -62 200 osc~ 0.05; -#X obj -112 11 phasor~ 0.1; -#X obj -59 -36 delay 3; -#X obj -112 32 +~ 0.2; -#X obj 56 -9 osc~ 3.7; -#X obj 211 -59 delay 5; -#X obj -32 32 +~ 0.2; -#X obj 61 18 abs~; -#X obj 191 -166 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 -10 -262144 -1 -1 0 256; -#X obj 145 -194 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 -1 1; -#X obj 179 -82 sel 1 3 8; -#X obj 29 -138 metro 120; -#X msg -91 -13 0.8; -#X msg 29 -33 0.8; -#X obj 136 -66 noise~; -#X obj 144 -12 lop~ 200; -#X msg 179 -33 4; -#X msg -41 177 0.7; -#X obj 120 105 outlet~; -#X obj 180 105 outlet~; -#X obj 180 145 outlet~; -#X obj 120 145 outlet~; -#X obj 351 -46 inlet; -#X connect 0 0 4 0; -#X connect 1 0 44 0; -#X connect 2 0 1 1; -#X connect 3 0 4 1; -#X connect 4 0 3 0; -#X connect 4 0 35 0; -#X connect 5 0 43 0; -#X connect 6 0 5 1; -#X connect 7 0 8 1; -#X connect 8 0 7 0; -#X connect 8 0 10 0; -#X connect 9 0 8 0; -#X connect 10 0 38 0; -#X connect 10 0 11 0; -#X connect 10 1 9 0; -#X connect 11 0 6 0; -#X connect 12 0 46 0; -#X connect 13 0 12 1; -#X connect 14 0 15 1; -#X connect 15 0 14 0; -#X connect 15 0 17 0; -#X connect 16 0 15 0; -#X connect 17 0 37 0; -#X connect 17 0 27 0; -#X connect 17 1 16 0; -#X connect 18 0 45 0; -#X connect 19 0 18 1; -#X connect 20 0 19 0; -#X connect 21 0 22 1; -#X connect 22 0 21 0; -#X connect 22 0 24 0; -#X connect 23 0 22 0; -#X connect 24 0 42 0; -#X connect 24 0 20 0; -#X connect 24 1 23 0; -#X connect 25 0 18 0; -#X connect 26 0 28 0; -#X connect 27 0 13 0; -#X connect 28 0 12 0; -#X connect 29 0 32 0; -#X connect 30 0 2 0; -#X connect 31 0 5 0; -#X connect 32 0 31 0; -#X connect 33 0 36 1; -#X connect 34 0 36 0; -#X connect 35 0 41 0; -#X connect 35 0 30 0; -#X connect 35 1 41 0; -#X connect 35 1 30 0; -#X connect 35 2 0 0; -#X connect 36 0 4 0; -#X connect 36 0 8 0; -#X connect 36 0 15 0; -#X connect 36 0 22 0; -#X connect 37 0 12 1; -#X connect 38 0 5 1; -#X connect 39 0 40 0; -#X connect 40 0 1 0; -#X connect 41 0 1 1; -#X connect 42 0 18 1; -#X connect 47 0 34 0; -#X restore 53 399 pd hoa.rhythm ---------------------------; -#X obj 53 466 hoa.2d.optim~ 3 inPhase -----------------; -#N canvas 351 42 1155 640 messages 0; -#X msg 27 106 zoom \$1; -#X text 14 55 Set the zoom; -#X obj 439 251 send map_mes; -#X obj 740 151 send map_mes; -#X obj 752 320 send map_mes; -#X msg 752 269 source 1 color 0.7 0 0.6 1; -#X obj 507 404 send map_mes; -#X text 361 277 Mute with the "mute" message".; -#X text 742 357 Remove a source or group with the "remove" message". -Note that remove will also remove coordinates \, descriptions \, color -and send a message to hoa.2D.map~ to mute the source (exept for groups). -; -#X obj 755 470 send map_mes; -#X msg 755 419 group 1 remove; -#X msg 777 442 source 3 remove; -#X msg 214 107 clear; -#X text 850 419 (create the group 1 before); -#X text 873 441 (create the source 3 before); -#X text 104 79 Bang to output; -#X obj 27 76 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 0.2 @max 1 @minmax 0.2 1 @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 109 106 c.bang @size 17 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @bacolor 0 0 0 1; -#X obj 577 324 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X obj 424 294 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X obj 501 344 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X msg 740 100 source 1 description Jimi Hendrix; -#X msg 762 123 group 1 description Band of Gypsys; -#X msg 774 292 group 1 color 0.2 0.9 0 1; -#X obj 68 221 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "map_mes" @send "(null)" -@presetname "(null)" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @view "xy" @outputmode "polar" @zoom 0.6 @mapname "(null)"; -#X text 213 82 Clear all; -#X msg 501 155 source 2 abscissa 2.5; -#X msg 577 351 group 1 mute \$1; -#X msg 424 316 source 1 mute \$1; -#X msg 501 372 source 2 mute \$1; -#X obj 29 562 send map_mes; -#X text 22 496 If the source or group messages are prepended by the -"set" symbol \, it will not producing any output; -#X msg 527 180 group 1 azimuth 1.14; -#X msg 349 155 source 1 pol 1 3.14 0; -#X msg 345 189 group 1 car 0.5 0.5 0.5; -#X msg 495 208 source 3 car 0.2 -0.7 0; -#X obj 398 556 send map_mes; -#X msg 29 536 set source 1 pol 1 3.14 0.2; -#X msg 398 530 group 1 set 1 2 3 4; -#X text 343 11 Display source or group and set coordinates with "source" -or "group" message followed by an integer for the index \, the type -of coordinates and zero \, one \, two or three floating values for -coordinates. The coordinates types accepted are "polar" (or "pol") -\, "cartesian" (or "car") \, "radius" \, "azimuth" \, "elevation" \, -"abscissa" \, "ordinate" \, "height". The polar type is followed by -the radius \, the azimuth and the elevation and the cartesian type -is followed by the abscissa \, the ordinate and the height. Exemple -: "source 1 car 1 0 0.3.".; -#X text 381 462 Create a group with the "group" message followed by -an integer for the group index \, "set" message and a list of intergers -\, the indexs of source to put in the group. Exemple : "group 1 set -1 2 3 4".; -#X text 741 12 Set descriptions with "source" or "group" message followed -by an integer for the index \, the "description" message and everything -you want for the description. Set "remove" instead of the description -to remove the description. Exemple : "source 1 description Jimi Hendrix". -; -#X text 744 188 Set colors with "source" or "group" message followed -by an integer for the index \, the "color" message and four floating -values for red \, green \, blue and alpha (ok... there's no alpha). -Exemple : "source 1 color 1 0.2 0.6 1; -#X connect 0 0 24 0; -#X connect 5 0 4 0; -#X connect 10 0 9 0; -#X connect 11 0 9 0; -#X connect 12 0 24 0; -#X connect 16 0 0 0; -#X connect 17 0 24 0; -#X connect 18 0 27 0; -#X connect 19 0 28 0; -#X connect 20 0 29 0; -#X connect 21 0 3 0; -#X connect 22 0 3 0; -#X connect 23 0 4 0; -#X connect 26 0 2 0; -#X connect 27 0 6 0; -#X connect 28 0 6 0; -#X connect 29 0 6 0; -#X connect 32 0 2 0; -#X connect 33 0 2 0; -#X connect 34 0 2 0; -#X connect 35 0 2 0; -#X connect 37 0 30 0; -#X connect 38 0 36 0; -#X restore 452 359 pd messages; -#N canvas 352 88 804 595 outputs 0; -#X obj 58 423 send map_outs_sources; -#X obj 167 396 send map_outs_groups; -#X obj 535 25 receive map_outs_sources; -#X text 257 47 Change the coordinates type; -#X obj 531 283 receive map_outs_groups; -#X obj 277 450 route list; -#X obj 58 145 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "hoamapex3" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 -0.7 1 @view "xy" @outputmode "polar" @zoom 0.35 @mapname "(null)"; -#X obj 58 100 c.bang @size 17 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @bacolor 0 0 0 1; -#X text 33 56 Outputs sources; -#X text 21 72 and groups coordinates; -#X msg 297 98 outputmode \$1; -#X obj 299 72 c.menu @size 85 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "polar" "cartesian" @states 0 -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X text 168 68 Output general; -#X text 172 83 informations; -#X msg 588 509 polar 1.01801 2.0884 0; -#X obj 531 447 route mute; -#X obj 531 509 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X text 600 321 Route group by index; -#X msg 592 247 polar 1.22229 2.08092 0; -#X obj 535 185 route mute; -#X obj 535 247 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X msg 617 157 polar 1.8561 0.595592 0; -#X obj 560 95 route mute; -#X obj 560 157 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X msg 613 408 polar 1.15395 2.72225 0; -#X obj 556 346 route mute; -#X obj 556 408 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X text 601 58 Route source by index; -#X obj 329 527 print group; -#X obj 277 502 print source; -#X obj 277 476 route source group; -#X obj 445 99 c.preset @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 10 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 -@emcolor 0.85 0.85 0.85 1 @stcolor 0.5 0.5 0.5 1 @secolor 0.15 0.15 -0.15 1 @preset [ @index 0 @hoamapex3 hoa.map sources_preset source -1 -1.06667 -0.596826 0 0 0.2 0.2 0.2 1 (null) source 2 -1.04127 1.53651 -0 0 0.2 0.2 0.2 1 (null) source 3 0.596825 1.71429 0 0 0.2 0.1 0.8 -0.6 Jimmy_Hash group 1 3 1 2 3 0.2 0.2 0.2 1 (null) group 2 2 1 2 0.2 -0.2 0.2 1 (null) ]; -#X obj 445 57 c.loadmess 1; -#X obj 445 77 pipe 200; -#X obj 535 58 route 1 2; -#X obj 531 319 route 1 2; -#X msg 180 102 getinfo; -#X obj 588 477 c.prepend set; -#X obj 592 215 c.prepend set; -#X obj 617 125 c.prepend set; -#X obj 613 376 c.prepend set; -#X connect 2 0 34 0; -#X connect 4 0 35 0; -#X connect 5 0 30 0; -#X connect 6 0 0 0; -#X connect 6 1 1 0; -#X connect 6 2 5 0; -#X connect 7 0 6 0; -#X connect 10 0 6 0; -#X connect 11 1 10 0; -#X connect 15 0 16 0; -#X connect 15 1 37 0; -#X connect 19 0 20 0; -#X connect 19 1 38 0; -#X connect 22 0 23 0; -#X connect 22 1 39 0; -#X connect 25 0 26 0; -#X connect 25 1 40 0; -#X connect 30 0 29 0; -#X connect 30 1 28 0; -#X connect 32 0 33 0; -#X connect 33 0 31 0; -#X connect 34 0 19 0; -#X connect 34 1 22 0; -#X connect 35 0 15 0; -#X connect 35 1 25 0; -#X connect 36 0 6 0; -#X connect 37 0 14 0; -#X connect 38 0 18 0; -#X connect 39 0 21 0; -#X connect 40 0 24 0; -#X restore 603 361 pd outputs; -#X obj 400 565 c.preset @size 103 41 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 -@emcolor 0.85 0.85 0.85 1 @stcolor 0.5 0.5 0.5 1 @secolor 0.15 0.15 -0.15 1 @preset [ @index 0 @hoamapexample hoa.map sources_preset source -1 -0.966667 2.06667 0 0 0.2 0.2 0.2 1 Rachelle source 2 -1.03333 0.0444445 -0 0 0.2 0.2 0.2 1 Bob source 3 1.25556 1.95556 0 0 0.2 0.2 0.2 1 Fred -source 4 1.85556 -0.466667 0 0 0.2 0.2 0.2 1 Lucy group 1 4 1 2 3 4 -0.2 0.2 0.2 1 Potos @index 1 @hoamapexample hoa.map sources_preset -source 1 -0.811111 1.32222 0 0 0.2 0.2 0.2 1 Rachelle source 2 -0.188889 -0.0333333 0 0 0.2 0.2 0.2 1 Bob source 3 1.32222 1.03333 0 0 0.2 0.2 -0.2 1 Fred source 4 1.98889 0.233333 0 0 0.2 0.2 0.2 1 Lucy group 1 -4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 2 @hoamapexample hoa.map sources_preset -source 1 -0.6 0.1 0 0 0.2 0.2 0.2 1 Rachelle source 2 0.0222222 -1.18889 -0 0 0.2 0.2 0.2 1 Bob source 3 1.53333 -0.188889 0 0 0.2 0.2 0.2 1 -Fred source 4 2.2 -0.988889 0 0 0.2 0.2 0.2 1 Lucy group 1 4 1 2 3 -4 0.2 0.2 0.2 1 Potos @index 3 @hoamapexample hoa.map sources_preset -source 1 -1.14444 -1.96667 0 0 0.2 0.2 0.2 1 Rachelle source 2 0.766667 --2.25556 0 0 0.2 0.2 0.2 1 Bob source 3 0.633333 0.122222 0 0 0.2 0.2 -0.2 1 Fred source 4 1.41111 -1.87778 0 0 0.2 0.2 0.2 1 Lucy group 1 -4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 4 @hoamapexample hoa.map sources_preset -source 1 -1.83333 0.188889 0 0 0.2 0.2 0.2 1 Rachelle source 2 0.516667 --2.66111 0 0 0.2 0.2 0.2 1 Bob source 3 -0.922222 -2.03333 0 0 0.2 -0.2 0.2 1 Fred source 4 1.12222 -1.03333 0 0 0.2 0.2 0.2 1 Lucy group -1 4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 5 @hoamapexample hoa.map sources_preset -source 1 -2.7875 0.651389 0 0 0.2 0.2 0.2 1 Rachelle source 2 -1.25556 --2.21111 0 0 0.2 0.2 0.2 1 Bob source 3 -2.21111 -2.01111 0 0 0.2 0.2 -0.2 1 Fred source 4 -1.14444 0.0777778 0 0 0.2 0.2 0.2 1 Lucy group -1 4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 6 @hoamapexample hoa.map sources_preset -source 1 -2.27778 -0.0555557 0 0 0.2 0.2 0.2 1 Rachelle source 2 -1.5 --0.9 0 0 0.2 0.2 0.2 1 Bob source 3 -1.94444 0.7 0 0 0.2 0.2 0.2 1 -Fred source 4 -0.633333 -0.0333333 0 0 0.2 0.2 0.2 1 Lucy group 1 4 -1 2 3 4 0.2 0.2 0.2 1 Potos @index 7 @hoamapexample hoa.map sources_preset -source 1 -2.27778 -2.36667 0 0 0.2 0.2 0.2 1 Rachelle source 2 2.38889 --2.38889 0 0 0.2 0.2 0.2 1 Bob source 3 -2.43333 2.23333 0 0 0.2 0.2 -0.2 1 Fred source 4 2.38889 2.41111 0 0 0.2 0.2 0.2 1 Lucy group 1 -4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 8 @hoamapexample hoa.map sources_preset -source 1 -0.3 -0.388889 0 0 0.2 0.2 0.2 1 Rachelle source 2 0.322222 --0.344445 0 0 0.2 0.2 0.2 1 Bob source 3 -0.322222 0.277778 0 0 0.2 -0.2 0.2 1 Fred source 4 0.366667 0.188889 0 0 0.2 0.2 0.2 1 Lucy group -1 4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 9 @hoamapexample hoa.map sources_preset -source 1 -0.0777778 -2.38889 0 0 0.2 0.2 0.2 1 Rachelle source 2 1.94444 --0.0555557 0 0 0.2 0.2 0.2 1 Bob source 3 -2.32222 0.0111111 0 0 0.2 -0.2 0.2 1 Fred source 4 -0.0111111 2.1 0 0 0.2 0.2 0.2 1 Lucy group -1 4 1 2 3 4 0.2 0.2 0.2 1 Potos @index 10 @hoamapexample hoa.map sources_preset -source 1 -0.966667 2.06667 0 0 0.2 0.2 0.2 1 Rachelle source 2 -1.03333 -0.0444445 0 0 0.2 0.2 0.2 1 Bob source 3 1.25556 1.95556 0 0 0.2 0.2 -0.2 1 Fred source 4 1.85556 -0.466667 0 0 0.2 0.2 0.2 1 Lucy group -1 4 1 2 3 4 0.2 0.2 0.2 1 Potos ]; -#X msg 400 540 inter \$1; -#X obj 400 512 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 529 449 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X obj 464 449 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#N canvas 65 87 450 300 preset_player 0; -#X obj 158 175 line; -#X obj 182 209 sel 11; -#X msg 180 103 1; -#X obj 131 82 t b b; -#X obj 171 57 spigot; -#X obj 130 130 pack 11 10000; -#X msg 130 103 11; -#X obj 106 25 inlet; -#X obj 248 14 inlet; -#X obj 222 57 inlet; -#X obj 185 247 outlet; -#X obj 260 126 c.loadmess 1; -#X obj 262 167 pipe 500; -#X obj 104 51 sel 0; -#X msg 91 140 stop; -#X connect 0 0 1 0; -#X connect 0 0 10 0; -#X connect 1 0 4 0; -#X connect 2 0 0 0; -#X connect 3 0 6 0; -#X connect 3 1 2 0; -#X connect 4 0 3 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 13 0; -#X connect 8 0 4 1; -#X connect 9 0 5 1; -#X connect 11 0 0 0; -#X connect 11 0 12 0; -#X connect 12 0 10 0; -#X connect 13 0 14 0; -#X connect 13 1 3 0; -#X connect 14 0 0 0; -#X restore 400 480 pd preset_player _____; -#X text 395 422 Play; -#X text 467 422 Duration; -#X text 524 422 Loop; -#X text 449 343 Control with messages; -#X text 601 342 Output informations; -#X obj 464 398 c.loadmess 10000; -#X obj 400 449 c.toggle @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 -1 @crcolor 0.5 0.5 0.5 1; -#X obj 12 21 c.patcherinfos; -#X obj 17 4 loadbang; -#X obj 2 4 hoa.help.header; -#X obj 148 649 hoa.help.pub; -#X obj 418 4 hoa.help.also; -#N canvas 373 200 893 540 3D 0; -#X obj 48 209 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "hoamapex2" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 -0.7 1 @view "xy" @outputmode "polar" @zoom 0.35 @mapname "cicm"; -#X obj 336 209 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @view "xz" @outputmode "polar" @zoom 0.35 @mapname "cicm"; -#X msg 336 499 polar 2.18354 2.9071 -0.307217; -#X obj 336 137 c.menu @size 40 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "xy" "xz" "yz" @states 0 0 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 627 206 hoa.map @size 225 225 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @bgcolor 0.76 0.76 0.76 1 @bdcolor 0.7 0.7 0.7 -1 @view "yz" @outputmode "polar" @zoom 0.35 @mapname "cicm"; -#X text 734 193 |; -#X text 734 186 ^; -#X text 734 175 z; -#X text 444 193 |; -#X text 444 186 ^; -#X text 444 175 z; -#X text 854 306 _; -#X text 861 309 >; -#X text 871 309 y; -#X text 564 309 _; -#X text 571 312 >; -#X text 581 312 x; -#X text 156 194 |; -#X text 156 187 ^; -#X text 276 310 _; -#X text 283 313 >; -#X text 293 313 x; -#X text 156 176 y; -#X obj 627 142 c.menu @size 40 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "xy" "xz" "yz" @states 0 0 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 48 138 c.menu @size 40 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @hover 0 @items "xy" "xz" "yz" @states 0 0 0 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 796 65 c.preset @size 15 15 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 10 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 -@emcolor 0.85 0.85 0.85 1 @stcolor 0.5 0.5 0.5 1 @secolor 0.15 0.15 -0.15 1 @preset [ @index 0 @hoamapex2 hoa.map sources_preset source -1 0.0380952 -0.0243387 1.70794 0 0.2 0.2 0.2 1 (null) source 2 -0.483598 --2.02434 -0.660318 0 0.2 0.2 0.2 1 (null) source 3 1.38413 -0.122751 --0.171428 0 0.2 0.2 0.2 1 (null) group 1 3 1 2 3 0.2 0.2 0.2 1 (null) -]; -#X obj 48 108 c.loadmess set 0; -#X obj 336 108 c.loadmess set 1; -#X obj 627 112 c.loadmess set 2; -#X text 22 4 These three hoa.map objects share the same "mapname" attribute -so they are linked together and react to the changes of each others. -Thus \, sources and groups position \, description and colors modifications -will affect all linked hoa.map objects., f 124; -#X obj 796 23 c.loadmess 1; -#X obj 796 43 pipe 200; -#X msg 48 499 polar 1.70854 4.14386 1.54433; -#X obj 336 446 route 2; -#X obj 48 446 route 1; -#X msg 627 499 polar 1.4001 4.62394 -0.122748; -#X obj 627 446 route 3; -#X text 16 59 Change the coordinate system to change the point of view -and interact differently with sources and groups.; -#X obj 336 471 c.prepend set; -#X obj 336 169 c.prepend view; -#X obj 627 174 c.prepend view; -#X obj 48 170 c.prepend view; -#X obj 48 471 c.prepend set; -#X obj 627 471 c.prepend set; -#X connect 0 0 34 0; -#X connect 1 0 33 0; -#X connect 3 1 39 0; -#X connect 4 0 36 0; -#X connect 23 1 40 0; -#X connect 24 1 41 0; -#X connect 26 0 24 0; -#X connect 27 0 3 0; -#X connect 28 0 23 0; -#X connect 30 0 31 0; -#X connect 31 0 25 0; -#X connect 33 0 38 0; -#X connect 34 0 42 0; -#X connect 36 0 43 0; -#X connect 38 0 2 0; -#X connect 39 0 1 0; -#X connect 40 0 4 0; -#X connect 41 0 0 0; -#X connect 42 0 32 0; -#X connect 43 0 35 0; -#X restore 367 359 pd 3D; -#X obj 53 591 hoa.dac~ 1 2 -----------------------------------; -#X obj 53 511 hoa.process~ 3 hoa.fx.freeverb~ harmonics ------; -#X text 358 99 To move source or group \, click on it and drag it. -Click and drag with alt to change the radius. Click and drag with shift -to change the angle. CLick and drag with ctrl to change the abscissa. -Click and drag with ctrl and shift to change the ordinate.; -#X text 3 48 hoa.map allows you to spatialize several sources on a -plane to control hoa.2d.map~ or hoa.3d.map. You can add and remove -sources \, change coordinates \, add description and create groups. -, f 90; -#X text 364 343 3D Multimap; -#X text 359 171 To create source \, right-click or click with cmd on -a "free" zone then select "Add source" in the popup menu. To remove -source \, idem and select "Remove source".; -#X obj 53 551 hoa.decoder~ 3 binaural ------------------------; -#X connect 1 0 10 0; -#X connect 2 0 1 0; -#X connect 6 0 5 0; -#X connect 7 0 11 0; -#X connect 10 0 12 0; -#X connect 10 1 12 1; -#X connect 10 2 12 2; -#X connect 10 3 12 3; -#X connect 10 4 12 4; -#X connect 10 5 12 5; -#X connect 10 6 12 6; -#X connect 11 0 10 0; -#X connect 11 1 10 1; -#X connect 11 2 10 2; -#X connect 11 3 10 3; -#X connect 12 0 35 0; -#X connect 12 1 35 1; -#X connect 12 2 35 2; -#X connect 12 3 35 3; -#X connect 12 4 35 4; -#X connect 12 5 35 5; -#X connect 12 6 35 6; -#X connect 16 0 15 0; -#X connect 17 0 16 0; -#X connect 18 0 20 2; -#X connect 19 0 20 1; -#X connect 20 0 17 0; -#X connect 26 0 19 0; -#X connect 27 0 20 0; -#X connect 28 0 30 0; -#X connect 29 0 28 0; -#X connect 35 0 40 0; -#X connect 35 1 40 1; -#X connect 35 2 40 2; -#X connect 35 3 40 3; -#X connect 35 4 40 4; -#X connect 35 5 40 5; -#X connect 35 6 40 6; -#X connect 40 0 34 0; -#X connect 40 1 34 1; -#X coords 0 712 1 711 85 60 0; diff --git a/Package/Hoa/helps/hoa.pi-help.pd b/Package/Hoa/helps/hoa.pi-help.pd deleted file mode 100644 index 0146068..0000000 --- a/Package/Hoa/helps/hoa.pi-help.pd +++ /dev/null @@ -1,44 +0,0 @@ -#N canvas 103 92 654 280 10; -#X obj 46 143 hoa.pi 0.25; -#X obj 150 142 hoa.pi 0.5; -#X obj 236 143 hoa.pi 1; -#X obj 150 113 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 150 173 c.number @size 71 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 46 173 c.number @size 75 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 236 173 c.number @size 73 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 236 113 c.bang @size 17 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @bacolor 0 0 0 1; -#X text 6 52 hoa.pi is for people that never remember more than 4 decimals -or want to initialize a good Pi number.; -#X obj 46 115 c.loadmess; -#X obj 31 205 hoa.help.pub; -#X obj 15 25 c.patcherinfos; -#X obj 20 8 loadbang; -#X obj 5 8 hoa.help.header; -#X obj 421 8 hoa.help.also; -#X connect 0 0 5 0; -#X connect 1 0 4 0; -#X connect 2 0 6 0; -#X connect 3 0 1 0; -#X connect 7 0 2 0; -#X connect 9 0 0 0; -#X connect 11 0 13 0; -#X connect 12 0 11 0; -#X coords 0 280 1 279 100 60 0; diff --git a/Package/Hoa/helps/hoa.pi~-help.pd b/Package/Hoa/helps/hoa.pi~-help.pd deleted file mode 100644 index a64864d..0000000 --- a/Package/Hoa/helps/hoa.pi~-help.pd +++ /dev/null @@ -1,42 +0,0 @@ -#N canvas 344 82 605 277 10; -#X obj 152 112 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 48 142 hoa.pi~ 0.25; -#X obj 48 180 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X msg 463 133 \; pd dsp 1; -#X msg 463 168 \; pd dsp 0; -#X obj 152 141 hoa.pi~ 0.5; -#X obj 152 180 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 238 180 c.number~ @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 -0.5 1 @textcolor 0 0 0 1; -#X obj 238 142 hoa.pi~ 2; -#X obj 289 110 phasor~ 0.1; -#X text 8 51 hoa.pi~ is for people that never remember more than 4 -decimals or want to initialize a good Pi number.; -#X text 374 110 Right inlet; -#X text 374 120 control the; -#X text 374 130 phase.; -#X obj 14 23 c.patcherinfos; -#X obj 19 6 loadbang; -#X obj 4 6 hoa.help.header; -#X obj 16 206 hoa.help.pub; -#X obj 413 6 hoa.help.also; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 5 0 6 0; -#X connect 8 0 7 0; -#X connect 9 0 8 1; -#X connect 14 0 16 0; -#X connect 15 0 14 0; -#X coords 0 277 1 276 100 60 0; diff --git a/Package/Hoa/helps/hoa.process~-help.pd b/Package/Hoa/helps/hoa.process~-help.pd deleted file mode 100644 index 81cde52..0000000 --- a/Package/Hoa/helps/hoa.process~-help.pd +++ /dev/null @@ -1,93 +0,0 @@ -#N canvas 414 82 901 661 10; -#X obj 594 28 hoa.connect; -#X obj 594 7 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 15 152 2nd argument is the name of the patcher to instantiate. -; -#X text 15 102 1st argument is the order if you use hoa.process~ in -the circular harmonics domain or the number of channels if you use -it in the plane waves domain.; -#X text 15 272 Extra arguments and attributes are sent to object hoa.this.process~ -if there is one inside the patcher. You should look at the help.; -#X text 15 322 The number of inlets and outlets depends on the inlet -and outlet configuration of the patcher. You should look at the help. -; -#X text 15 372 Important: If you edit the patcher \, you have recreate -hoa.process~ to reflect the changes.; -#X text 12 47 hoa.process~ helps the creation of processing in the -circular or spherical harmonics and plane waves domains by instantiating -several instances of a patcher.; -#X text 15 172 3rd argument is the domain \, harmonics (default) or -planewaves. Note that if you use hoa.process~ in the harmonics domain -\, it instantiates 2 * order + 1 times (the number of harmonics in -2D) or (order + 1) * (order + 1) (the number of harmonics in 3D) the -partcher and if you use it in the plane waves domain \, it instanctiates -the patcher as many times as the number of channels.; -#X obj 18 20 c.patcherinfos; -#X obj 23 3 loadbang; -#X obj 8 3 hoa.help.header; -#X obj 17 425 hoa.help.pub; -#X obj 421 3 hoa.help.also; -#X text 439 549 The hoa.process~ use of this patch is an example made -to show how it works. You would prefer to look at the real uses of -hoa.process~.; -#X text 435 50 Open; -#X text 435 70 Use open message to open a specific instance :; -#X msg 436 94 open 1; -#X msg 497 94 open all; -#X text 433 153 Double-click open the 1st planewave intance \, or the -harmonic 0 instance.; -#X obj 436 123 hoa.2d.process~ 4 hoa.processexample planewaves; -#X text 435 190 Target; -#X text 435 210 Use target message to route the message to a specific -instance :; -#X obj 657 245 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X msg 439 245 target 1; -#X msg 510 245 target -2; -#X msg 581 245 target all; -#X obj 439 310 print; -#X msg 591 345 target all; -#X obj 439 420 print; -#X msg 439 345 target 2 1; -#X msg 510 345 target 3 -2; -#X obj 667 345 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X msg 591 455 target all; -#X obj 439 530 print; -#X obj 667 455 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X msg 439 455 target 1; -#X msg 510 455 target 2; -#X obj 439 501 hoa.3d.process~ 3 hoa.processexample planewaves; -#X obj 439 391 hoa.3d.process~ 3 hoa.processexample harmonics; -#X obj 439 281 hoa.2d.process~ 3 hoa.processexample harmonics; -#X connect 1 0 0 0; -#X connect 9 0 11 0; -#X connect 10 0 9 0; -#X connect 17 0 20 0; -#X connect 18 0 20 0; -#X connect 23 0 40 0; -#X connect 24 0 40 0; -#X connect 25 0 40 0; -#X connect 26 0 40 0; -#X connect 28 0 39 0; -#X connect 30 0 39 0; -#X connect 31 0 39 0; -#X connect 32 0 39 0; -#X connect 33 0 38 0; -#X connect 35 0 38 0; -#X connect 36 0 38 0; -#X connect 37 0 38 0; -#X connect 38 0 34 0; -#X connect 39 0 29 0; -#X connect 40 0 27 0; diff --git a/Package/Hoa/helps/hoa.thisprocess~-help.pd b/Package/Hoa/helps/hoa.thisprocess~-help.pd deleted file mode 100644 index 8c5e576..0000000 --- a/Package/Hoa/helps/hoa.thisprocess~-help.pd +++ /dev/null @@ -1,54 +0,0 @@ -#N canvas 119 182 927 585 10; -#X text 12 140 The 2nd outlet outputs the hoa.process~ mode.; -#X msg 18 182 open all; -#X msg 18 252 open all; -#X text 83 266 Mode : 2d - planewaves; -#X text 83 196 Mode : 2d - harmonics; -#X msg 18 332 open all; -#X msg 18 402 open all; -#X text 83 346 Mode : 3d - harmonics; -#X text 83 416 Mode : 3d - planewaves; -#X text 483 140 The 4th outlet outputs the patcher attributes.; -#X msg 488 182 open 1; -#X obj 488 222 hoa.2d.process~ 1 hoa.thisprocexample2~ planewaves This -is a rock example @artist Jimi Hendrix @album Electric Ladyland @song -Voodoo Chile; -#X msg 488 322 open 1; -#X obj 488 362 hoa.2d.process~ 1 hoa.thisprocexample2~ planewaves; -#X text 543 184 After the mode \, add arguments and after arguments -\, add the attributes that are defined by a key "@attr".; -#X text 543 324 Without arguments or attributes typed in hoa.process~ -\, this.process~ use the default ones if there are defined.; -#X text 473 460 The hoa.thisprocess~ uses of this patch are examples -made to show how it works. You would prefer to look at the real uses -of hoa.process~.; -#X obj 18 442 hoa.3d.process~ 3 hoa.thisprocexample~ planewaves; -#X obj 18 372 hoa.3d.process~ 1 hoa.thisprocexample~ harmonics; -#X obj 15 21 c.patcherinfos; -#X obj 20 4 loadbang; -#X obj 5 4 hoa.help.header; -#X obj 244 516 hoa.help.pub; -#X obj 433 4 hoa.help.also; -#X text 83 184 Args : decomposition order - harmonic degree - harmonics -order, f 62; -#X text 83 334 Args : decomposition order - harmonic degree - harmonic -order, f 61; -#X text 9 47 hoa.thisprocess~ retreives the configuration used by hoa.process~ -\, the arguments and the attributes of the patcher.; -#X text 12 120 The 1st outlet outputs the hoa.process~ instance arguments. -; -#X obj 18 222 hoa.2d.process~ 1 hoa.thisprocexample~ harmonics; -#X obj 18 292 hoa.2d.process~ 3 hoa.thisprocexample~ planewaves; -#X text 83 404 Args : number of channels - channel index - channel -index; -#X text 83 254 Args : number of channels - channel index - channel -index; -#X text 483 120 The 3rd outlet outputs the patcher arguments.; -#X connect 1 0 28 0; -#X connect 2 0 29 0; -#X connect 5 0 18 0; -#X connect 6 0 17 0; -#X connect 10 0 11 0; -#X connect 12 0 13 0; -#X connect 19 0 21 0; -#X connect 20 0 19 0; diff --git a/Package/Hoa/media/Chapel.wav b/Package/Hoa/media/Chapel.wav deleted file mode 100644 index 499317e..0000000 Binary files a/Package/Hoa/media/Chapel.wav and /dev/null differ diff --git a/Package/Hoa/media/Cistern.wav b/Package/Hoa/media/Cistern.wav deleted file mode 100644 index d2623b1..0000000 Binary files a/Package/Hoa/media/Cistern.wav and /dev/null differ diff --git a/Package/Hoa/media/Makefile.am b/Package/Hoa/media/Makefile.am deleted file mode 100644 index 6a3712c..0000000 --- a/Package/Hoa/media/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.librarymediadir=$(pkglibdir)/media - -dist_hoa.librarymedia_DATA = \ -Chapel.wav\ -Cistern.wav \ -SmallRoom.wav diff --git a/Package/Hoa/media/SmallRoom.wav b/Package/Hoa/media/SmallRoom.wav deleted file mode 100644 index e2c5498..0000000 Binary files a/Package/Hoa/media/SmallRoom.wav and /dev/null differ diff --git a/Package/Hoa/misc/Makefile.am b/Package/Hoa/misc/Makefile.am deleted file mode 100644 index 977fca9..0000000 --- a/Package/Hoa/misc/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.librarymiscdir=$(pkglibdir)/misc - -dist_hoa.librarymisc_DATA = \ -hoa.pw.2d.dec~.pd \ -hoa.process.display.pd \ -hoa.processexample.pd \ -hoa.procexample~.pd \ -hoa.soundcoat.pd \ -hoa.2d.txt \ -hoa.soundgrain.pd \ -hoa.3d.txt \ -hoa.soundrone.pd \ -hoa.args.map.pd \ -hoa.thisprocexample2~.pd \ -hoa.common.txt \ -hoa.thisprocexample~.pd \ -hoa.help.also.pd \ -hoa.tri~.pd \ -hoa.help.header.pd \ -hoa.tuto.gain~.pd \ -hoa.help.pub.pd \ -hoa.tuto.header.pd \ -hoa.ioexample~.pd \ -hoa.tuto.txt \ -hoa.mode.sel.pd \ -hoa.tutos.txt \ -hoa.objects.txt \ -logo.gif \ -hoa.process.txt \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.2d.txt b/Package/Hoa/misc/hoa.2d.txt deleted file mode 100644 index fbdc7a7..0000000 --- a/Package/Hoa/misc/hoa.2d.txt +++ /dev/null @@ -1,12 +0,0 @@ -hoa.2d.decoder~-help.pd hoa.2d.decoder~ An ambisonic decoder.; -hoa.2d.encoder~-help.pd hoa.2d.encoder~ An ambisonic encoder.; -hoa.2d.map~-help.pd hoa.2d.map~ An ambisonic sources spatializer.; -hoa.2d.meter~-help.pd hoa.2d.meter~ A circular meter with sound field descriptor.; -hoa.2d.optim~-help.pd hoa.2d.optim~ An ambisonic sound field optimization.; -hoa.2d.projector~-help.pd hoa.2d.projector~ A plane waves decomposer from circular harmonics domain.; -hoa.2d.recomposer~-help.pd hoa.2d.recomposer~ A plane waves recomposer to circular harmonics domain.; -hoa.2d.rotate~-help.pd hoa.2d.rotate~ An ambisonic sound field rotation.; -hoa.2d.scope~-help.pd hoa.2d.scope~ An ambisonic harmonics visualizer.; -hoa.2d.space-help.pd hoa.2d.space A GUI to design plane waves domain.; -hoa.2d.wider~-help.pd hoa.2d.wider~ An ambisonic fractional orders simulator.; -hoa.2d.exchanger~-help.pd hoa.2d.exchanger~ An ambisonic standards exchanger.; \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.3d.txt b/Package/Hoa/misc/hoa.3d.txt deleted file mode 100644 index 2414bef..0000000 --- a/Package/Hoa/misc/hoa.3d.txt +++ /dev/null @@ -1,8 +0,0 @@ -hoa.3d.decoder~-help.pd hoa.3d.decoder~ An ambisonic decoder.; -hoa.3d.encoder~-help.pd hoa.3d.encoder~ An ambisonic encoder.; -hoa.3d.map~-help.pd hoa.3d.map~ An ambisonic sources spatializer.; -hoa.3d.meter~-help.pd hoa.3d.meter~ A multi spherical meter with sound field descriptor.; -hoa.3d.optim~-help.pd hoa.3d.optim~ An ambisonic sound field optimization.; -hoa.3d.wider~-help.pd hoa.3d.wider~ An ambisonic fractional orders simulator.; -hoa.3d.scope~-help.pd hoa.3d.scope~ An ambisonic harmonics visualizer.; -hoa.3d.exchanger~-help.pd hoa.3d.exchanger~ An ambisonic standards exchanger.; \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.args.map.pd b/Package/Hoa/misc/hoa.args.map.pd deleted file mode 100644 index 475df2c..0000000 --- a/Package/Hoa/misc/hoa.args.map.pd +++ /dev/null @@ -1,182 +0,0 @@ -#N canvas 689 223 674 323 10; -#X obj 375 85 inlet; -#X obj 76 85 inlet; -#X text 439 4 Right inlet the process mode; -#X text 77 4 Left inlet the instance arguments; -#X text 440 32 Harmonics 2d : mode 0; -#X text 440 52 Harmonics 3d : mode 1; -#X text 440 72 Planewaves 2d : mode 2; -#X text 440 93 Planewaves 3d : mode 3; -#N canvas 548 249 450 300 pw2d_map 0; -#X obj -32 37 spigot 0; -#X obj 13 -7 inlet; -#X obj -32 13 inlet; -#X obj 25 130 outlet; -#X obj 25 99 - 1; -#X text 82 80 Planewaves 2d or 3d; -#X text 82 100 Decrement the index; -#X text 82 110 by 1; -#X obj 13 13 == 2; -#X obj -32 75 unpack 0 0; -#X obj -32 130 outlet; -#X connect 0 0 9 0; -#X connect 1 0 8 0; -#X connect 2 0 0 0; -#X connect 4 0 3 0; -#X connect 8 0 0 1; -#X connect 9 0 10 0; -#X connect 9 1 4 0; -#X restore 76 188 pd pw2d_map; -#N canvas 154 83 450 300 pw3d_map 0; -#X obj -32 37 spigot 0; -#X obj 13 -7 inlet; -#X obj -32 13 inlet; -#X obj 25 130 outlet; -#X obj 25 99 - 1; -#X text 82 80 Planewaves 2d or 3d; -#X text 82 100 Decrement the index; -#X text 82 110 by 1; -#X obj -32 75 unpack 0 0; -#X obj -32 130 outlet; -#X obj 13 13 == 3; -#X connect 0 0 8 0; -#X connect 1 0 10 0; -#X connect 2 0 0 0; -#X connect 4 0 3 0; -#X connect 8 0 9 0; -#X connect 8 1 4 0; -#X connect 10 0 0 1; -#X restore 152 188 pd pw3d_map; -#N canvas 283 113 450 300 ha2d_map 1; -#X obj 65 67 spigot 0; -#X obj 110 23 inlet; -#X obj 65 23 inlet; -#X obj 110 43 == 0; -#X obj 134 232 outlet; -#X text 198 102 need to be interleaved; -#X text 199 73 Harmonics 2d; -#X obj 161 150 < 0; -#X obj 134 150 * 2; -#X obj 134 171 abs; -#X obj 134 192 - 0; -#X obj 134 122 t f f; -#X text 198 112 depending on their sign.; -#X text 198 132 0 \, -1 \, 1 \, -2 \, 2; -#X text 198 142 become; -#X text 198 152 0 \, 1 \, 2 \, 3 \, 4; -#X text 198 92 The index need; -#X text 198 172 if index < 0; -#X text 208 182 index = 2 * abs(index) - 1; -#X text 198 192 else; -#X text 208 202 index = 2 * abs(index); -#X obj 65 232 outlet; -#X obj 65 150 * 2; -#X obj 65 170 + 1; -#X obj 65 96 unpack 0 0 0; -#X connect 0 0 24 0; -#X connect 1 0 3 0; -#X connect 2 0 0 0; -#X connect 3 0 0 1; -#X connect 7 0 10 1; -#X connect 8 0 9 0; -#X connect 9 0 10 0; -#X connect 10 0 4 0; -#X connect 11 0 8 0; -#X connect 11 1 7 0; -#X connect 22 0 23 0; -#X connect 23 0 21 0; -#X connect 24 0 22 0; -#X connect 24 2 11 0; -#X restore 232 188 pd ha2d_map; -#X text 25 17 Arguments are mapped from 0 to max following the Hoa -inlet and outlet organization.; -#N canvas 0 50 485 297 ha3d_map 0; -#X obj 65 67 spigot 0; -#X obj 110 23 inlet; -#X obj 65 23 inlet; -#X obj 99 212 outlet; -#X text 248 102 need to be interleaved; -#X text 249 73 Harmonics 2d; -#X text 248 92 The arguments need; -#X text 248 112 depending on their sign.; -#X text 248 142 become; -#X obj 65 96 unpack 0 0 0; -#X text 248 132 0 0 \, 1 0 \, 1 -1 \, 1 1 \, 2 0 \, 2 -1...; -#X text 248 152 0 \, 1 \, 2 \, 3 \, 4 \, 5 \, 6...; -#N canvas 283 113 450 300 ha2d_map 0; -#X obj 122 73 inlet; -#X obj 122 232 outlet; -#X obj 149 150 < 0; -#X obj 122 150 * 2; -#X obj 122 171 abs; -#X obj 122 192 - 0; -#X obj 122 122 t f f; -#X text 198 102 need to be interleaved; -#X text 199 73 Harmonics 2d; -#X text 198 112 depending on their sign.; -#X text 198 132 0 \, -1 \, 1 \, -2 \, 2; -#X text 198 142 become; -#X text 198 152 0 \, 1 \, 2 \, 3 \, 4; -#X text 198 92 The index need; -#X text 198 172 if index < 0; -#X text 208 182 index = 2 * abs(index) - 1; -#X text 198 192 else; -#X text 208 202 index = 2 * abs(index); -#X connect 0 0 6 0; -#X connect 2 0 5 1; -#X connect 3 0 4 0; -#X connect 4 0 5 0; -#X connect 5 0 1 0; -#X connect 6 0 3 0; -#X connect 6 1 2 0; -#X restore 134 122 pd ha2d_map; -#X obj 99 189 +; -#X text 248 172 index is mapped like in 2d; -#X text 248 182 index is increment by (band - 1)^2; -#X obj 99 164 *; -#X obj 99 142 t f f; -#X obj 65 141 + 1; -#X obj 65 184 *; -#X obj 65 162 t f f; -#X obj 65 212 outlet; -#X obj 110 43 == 1; -#X connect 0 0 9 0; -#X connect 1 0 22 0; -#X connect 2 0 0 0; -#X connect 9 0 18 0; -#X connect 9 1 17 0; -#X connect 9 2 12 0; -#X connect 12 0 13 1; -#X connect 13 0 3 0; -#X connect 16 0 13 0; -#X connect 17 0 16 0; -#X connect 17 1 16 1; -#X connect 18 0 20 0; -#X connect 19 0 21 0; -#X connect 20 0 19 0; -#X connect 20 1 19 1; -#X connect 22 0 0 1; -#X restore 312 188 pd ha3d_map; -#X obj 234 293 outlet; -#X obj 234 263 f 0; -#X obj 136 288 outlet; -#X obj 134 263 t b f; -#X connect 0 0 8 1; -#X connect 0 0 10 1; -#X connect 0 0 12 1; -#X connect 0 0 9 1; -#X connect 1 0 8 0; -#X connect 1 0 10 0; -#X connect 1 0 12 0; -#X connect 1 0 9 0; -#X connect 8 0 16 0; -#X connect 8 1 14 0; -#X connect 9 0 16 0; -#X connect 9 1 14 0; -#X connect 10 0 16 0; -#X connect 10 1 14 0; -#X connect 12 0 16 0; -#X connect 12 1 14 0; -#X connect 14 0 13 0; -#X connect 16 0 14 0; -#X connect 16 1 15 0; diff --git a/Package/Hoa/misc/hoa.common.txt b/Package/Hoa/misc/hoa.common.txt deleted file mode 100644 index 7ed76f2..0000000 --- a/Package/Hoa/misc/hoa.common.txt +++ /dev/null @@ -1,8 +0,0 @@ -hoa.connect-help.pd hoa.connect A connector for hoa objects.; -hoa.dac~-help.pd hoa.dac~ A custom dac~ with matlab syntax.; -hoa.io-help.pd hoa.io A set of inlet and outlet for hoa.process.; -hoa.pi-help.pd hoa.pi A good pi number.; -hoa.pi~-help.pd hoa.pi~ A good pi number for signal.; -hoa.map-help.pd hoa.map A GUI to spatialize sources on a map.; -hoa.process~-help.pd hoa.process~ A multi-patcher for harmonics and plane waves domains.; -hoa.thisprocess~-help.pd hoa.thisprocess~ A patcher informer for hoa.process.; \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.help.also.pd b/Package/Hoa/misc/hoa.help.also.pd deleted file mode 100644 index 1294ed3..0000000 --- a/Package/Hoa/misc/hoa.help.also.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 170 395 415 271 10; -#X obj 152 74 c.patcherinfos; -#X msg 125 174 \; pd open \$1 \$2; -#X obj 47 13 s \$0-zeze; -#X obj 16 13 c.tab @size 100 18 @fontname Monaco @fontweight normal -@fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @orientation 0 @toggle 0 @items hoa.overview @bgcolor 0.75 0.75 -0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1 @hocolor 0.5 0.5 0.5 -1 @secolor 0.35 0.35 0.35 1; -#X obj 152 30 r \$0-zeze; -#X obj 1 1 cnv 15 130 40 empty \$0-hoa.header empty 3 12 0 18 -212212 --1 0; -#X obj 152 50 bang; -#X obj 118 94 t b s; -#X obj 192 115 makefilename %s/..; -#X obj 231 182 print; -#X obj 125 147 pack s s; -#X msg 82 124 hoa-help.pd; -#X connect 0 1 7 0; -#X connect 3 0 2 0; -#X connect 4 0 6 0; -#X connect 6 0 0 0; -#X connect 7 0 11 0; -#X connect 7 1 8 0; -#X connect 8 0 10 1; -#X connect 10 0 1 0; -#X connect 11 0 10 0; -#X coords 0 -1 1 1 132 42 2 0 0; diff --git a/Package/Hoa/misc/hoa.help.header.pd b/Package/Hoa/misc/hoa.help.header.pd deleted file mode 100644 index d62371f..0000000 --- a/Package/Hoa/misc/hoa.help.header.pd +++ /dev/null @@ -1,71 +0,0 @@ -#N canvas 524 257 832 494 10; -#X obj 45 1 cnv 15 354 40 empty \$0-hoa.header empty 3 12 0 18 -212212 --1 0; -#X obj 444 437 s \$0-hoa.header; -#X obj 443 7 inlet; -#X obj 284 80 namecanvas \$0-r; -#X msg 490 60 read hoa.objects.txt; -#X obj 478 388 s \$0-r; -#X msg 444 407 label \$1; -#X obj 410 310 list split 1; -#X obj 444 330 list split 1; -#X obj 3 3 c.blackboard @size 40 37 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @chalkmode -0 @bgcolor 0.802322 0.802322 0.802322 1 @bdcolor 0.802322 0.802322 -0.802322 1; -#X msg 13 133 clear \, image 2 1 logo.gif; -#X obj 478 360 c.prepend text 46 23; -#X obj 490 120 textfile; -#X obj 458 90 until; -#X obj 473 253 f 1; -#X obj 506 252 f 0; -#X obj 410 275 spigot 0; -#X obj 473 199 sel sa; -#X msg 511 90 rewind; -#X obj 410 149 list; -#X obj 506 227 bang; -#X obj 410 173 t list symbol; -#X obj 443 37 t b b b b s; -#X msg 217 79 1; -#X obj 208 151 f 0; -#X obj 240 154 + 1; -#X obj 208 115 metro 100; -#X obj 200 188 <= 1000; -#X obj 203 224 sel 1; -#X msg 216 258 0; -#X connect 2 0 22 0; -#X connect 4 0 12 0; -#X connect 6 0 1 0; -#X connect 7 1 8 0; -#X connect 7 1 6 0; -#X connect 8 1 11 0; -#X connect 10 0 9 0; -#X connect 11 0 5 0; -#X connect 12 0 19 0; -#X connect 12 1 13 1; -#X connect 13 0 12 0; -#X connect 14 0 16 1; -#X connect 15 0 16 1; -#X connect 16 0 7 0; -#X connect 17 0 14 0; -#X connect 17 1 20 0; -#X connect 18 0 12 0; -#X connect 19 0 21 0; -#X connect 20 0 15 0; -#X connect 21 0 16 0; -#X connect 21 1 17 0; -#X connect 22 0 23 0; -#X connect 22 1 13 0; -#X connect 22 2 18 0; -#X connect 22 3 4 0; -#X connect 22 4 17 1; -#X connect 23 0 26 0; -#X connect 24 0 25 0; -#X connect 24 0 27 0; -#X connect 25 0 24 1; -#X connect 26 0 24 0; -#X connect 26 0 10 0; -#X connect 27 0 28 0; -#X connect 28 0 29 0; -#X connect 29 0 26 0; -#X coords 0 -1 1 1 400 42 2 0 0; diff --git a/Package/Hoa/misc/hoa.help.pub.pd b/Package/Hoa/misc/hoa.help.pub.pd deleted file mode 100644 index da0ab3f..0000000 --- a/Package/Hoa/misc/hoa.help.pub.pd +++ /dev/null @@ -1,7 +0,0 @@ -#N canvas 65 223 442 110 10; -#X obj 1 1 cnv 15 359 40 empty \$0-hoa.header empty 3 12 0 18 -212212 --1 0; -#X text 144 0 HOA Library; -#X text 87 27 2012-2015 CICM | Universite Paris 8; -#X text 84 13 by P. Guillot \, E. Paris & T. Le Meur; -#X coords 0 -1 1 1 361 42 2 0 0; diff --git a/Package/Hoa/misc/hoa.ioexample~.pd b/Package/Hoa/misc/hoa.ioexample~.pd deleted file mode 100644 index db0485c..0000000 --- a/Package/Hoa/misc/hoa.ioexample~.pd +++ /dev/null @@ -1,62 +0,0 @@ -#N canvas 176 82 864 247 10; -#X obj 22 57 hoa.in; -#X obj 169 57 hoa.in~; -#X obj 92 57 hoa.in; -#X obj 92 156 hoa.out; -#X obj 22 156 hoa.out; -#X obj 169 157 hoa.out~; -#X obj 203 101 c.number~ @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @interval -50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 269 57 hoa.in~; -#X obj 269 157 hoa.out~; -#X obj 303 101 c.number~ @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @interval -50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 663 101 c.number~ @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @interval -50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 783 101 c.number~ @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @interval -50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 412 57 hoa.in extra 1; -#X obj 412 157 hoa.out extra 1; -#X obj 629 57 hoa.in~ extra 1; -#X obj 522 57 hoa.in extra 3; -#X obj 522 157 hoa.out extra 4; -#X obj 629 157 hoa.out~ extra 1; -#X obj 749 57 hoa.in~ extra 2; -#X obj 749 157 hoa.out~ extra 2; -#X obj 444 101 c.number @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @min (null) @max (null) @minmax (null) (null) @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 34 101 c.number @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @min (null) @max (null) @minmax (null) (null) @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X obj 104 101 c.number @size 53 14 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @presetname -(null) @min (null) @max (null) @minmax (null) (null) @decimal 6 @bgcolor -0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; -#X msg 581 106; -#X connect 0 0 4 0; -#X connect 0 0 21 0; -#X connect 1 0 6 0; -#X connect 1 0 5 0; -#X connect 2 0 3 0; -#X connect 2 0 22 0; -#X connect 7 0 9 0; -#X connect 7 0 8 0; -#X connect 12 0 20 0; -#X connect 12 0 13 0; -#X connect 14 0 10 0; -#X connect 14 0 17 0; -#X connect 15 0 16 0; -#X connect 15 0 23 0; -#X connect 18 0 11 0; -#X connect 18 0 19 0; diff --git a/Package/Hoa/misc/hoa.mode.sel.pd b/Package/Hoa/misc/hoa.mode.sel.pd deleted file mode 100644 index 80d10d7..0000000 --- a/Package/Hoa/misc/hoa.mode.sel.pd +++ /dev/null @@ -1,27 +0,0 @@ -#N canvas 558 169 450 300 10; -#X obj 85 62 unpack s s; -#X obj 185 90 sel harmonics planewaves; -#X obj 85 90 sel 2d 3d, f 14; -#X obj 125 142 f 1; -#X obj 85 178 +; -#X obj 85 21 inlet; -#X obj 85 248 outlet; -#X text 217 182 Harmonics 2d : mode 0; -#X text 217 202 Harmonics 3d : mode 1; -#X obj 185 142 f 0; -#X obj 255 142 f 2; -#X obj 85 142 f 0; -#X text 217 222 Planewaves 2d : mode 2; -#X text 217 243 Planewaves 3d : mode 3; -#X connect 0 0 2 0; -#X connect 0 1 1 0; -#X connect 1 0 9 0; -#X connect 1 1 10 0; -#X connect 2 0 11 0; -#X connect 2 1 3 0; -#X connect 3 0 4 0; -#X connect 4 0 6 0; -#X connect 5 0 0 0; -#X connect 9 0 4 1; -#X connect 10 0 4 1; -#X connect 11 0 4 0; diff --git a/Package/Hoa/misc/hoa.objects.txt b/Package/Hoa/misc/hoa.objects.txt deleted file mode 100644 index ab2a6aa..0000000 --- a/Package/Hoa/misc/hoa.objects.txt +++ /dev/null @@ -1,40 +0,0 @@ -hoa-help.pd HOA\ Library High Order Ambisonics Library.; -hoa.2d.decoder~-help.pd hoa.2d.decoder~ An ambisonic decoder.; -hoa.2d.encoder~-help.pd hoa.2d.encoder~ An ambisonic encoder.; -hoa.map-help.pd hoa.map A GUI to spatialize sources on a map.; -hoa.2d.map~-help.pd hoa.2d.map~ An ambisonic sources spatializer.; -hoa.2d.meter~-help.pd hoa.2d.meter~ A circular meter with sound field descriptor.; -hoa.2d.optim~-help.pd hoa.2d.optim~ An ambisonic sound field optimization.; -hoa.2d.projector~-help.pd hoa.2d.projector~ A plane waves decomposer from circular harmonics domain.; -hoa.2d.recomposer~-help.pd hoa.2d.recomposer~ A plane waves recomposer to circular harmonics domain.; -hoa.2d.rotate~-help.pd hoa.2d.rotate~ An ambisonic sound field rotation.; -hoa.2d.scope~-help.pd hoa.2d.scope~ An ambisonic harmonics visualizer.; -hoa.2d.space-help.pd hoa.2d.space A GUI to design plane waves domain.; -hoa.2d.wider~-help.pd hoa.2d.wider~ An ambisonic fractional orders simulator.; -hoa.2d.exchanger~-help.pd hoa.2d.exchanger~ An ambisonic standards exchanger.; -hoa.3d.decoder~-help.pd hoa.3d.decoder~ An ambisonic decoder.; -hoa.3d.encoder~-help.pd hoa.3d.encoder~ An ambisonic encoder.; -hoa.3d.map-help.pd hoa.3d.map A GUI to spatialize sources on a map.; -hoa.3d.map~-help.pd hoa.3d.map~ An ambisonic sources spatializer.; -hoa.3d.meter~-help.pd hoa.3d.meter~ A multi spherical meter with sound field descriptor.; -hoa.3d.optim~-help.pd hoa.3d.optim~ An ambisonic sound field optimization.; -hoa.3d.wider~-help.pd hoa.3d.wider~ An ambisonic fractional orders simulator.; -hoa.3d.scope~-help.pd hoa.3d.scope~ An ambisonic harmonics visualizer.; -hoa.3d.exchanger~-help.pd hoa.3d.exchanger~ An ambisonic standards exchanger.; -hoa.connect-help.pd hoa.connect A connector for hoa objects.; -hoa.dac~-help.pd hoa.dac~ A custom dac~ with matlab syntax.; -hoa.io-help.pd hoa.io A set of inlet and outlet for hoa.process.; -hoa.pi-help.pd hoa.pi A good pi number.; -hoa.pi~-help.pd hoa.pi~ A good pi number for signal.; -hoa.process~-help.pd hoa.process~ A multi-patcher for harmonics and plane waves domains.; -hoa.thisprocess~-help.pd hoa.thisprocess~ A patcher informer for hoa.process.; -hoa.fx.delay~-help.pd hoa.fx.delay~ A delay sound field diffuser.; -hoa.fx.dephaser~-help.pd hoa.fx.dephaser~ A fft dephaser processing.; -hoa.fx.convolve~-help.pd hoa.fx.convolve~ A zero latency convolution reverb' for sound fields.; -hoa.fx.freeverb~-help.pd hoa.fx.freeverb~ A freeverb reverb' for sound fields.; -hoa.fx.gain~-help.pd hoa.fx.gain~ A multigain for sound fields.; -hoa.fx.ringmod~-help.pd hoa.fx.ringmod~ A ring modulation sound field diffuser.; -hoa.fx.mirror~-help.pd hoa.fx.mirror~ A mirror for sound field.; -hoa.syn.delay~-help.pd hoa.syn.delay~ A delay sound field synthesizer.; -hoa.syn.grain~-help.pd hoa.syn.grain~ A granular sound field synthesizer.; -hoa.syn.ringmod~-help.pd hoa.syn.ringmod~ A ring modulation sound field synthesizer.; diff --git a/Package/Hoa/misc/hoa.process.display.pd b/Package/Hoa/misc/hoa.process.display.pd deleted file mode 100644 index df9317c..0000000 --- a/Package/Hoa/misc/hoa.process.display.pd +++ /dev/null @@ -1,73 +0,0 @@ -#N canvas 80 195 644 454 10; -#X obj 128 353 c.blackboard @size 295 57 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@chalkmode 1 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1; -#X obj 26 60 hoa.thisprocess~, f 86; -#N canvas 778 159 450 300 hoa.mode.sel 0; -#X obj 85 62 unpack s s; -#X obj 139 90 sel harmonics planewaves; -#X obj 39 90 sel 2d 3d, f 14; -#X obj 79 142 f 1; -#X obj 39 142 f 0; -#X obj 103 178 +; -#X obj 87 21 inlet; -#X obj 103 248 outlet; -#X text 217 192 Planewaves 2d or 3d : mode 0; -#X text 217 212 Harmonics 2d : mode 1; -#X text 217 232 Harmonics 3d : mode 2; -#X obj 209 142 f 2; -#X obj 139 142 f 0; -#X connect 0 0 2 0; -#X connect 0 1 1 0; -#X connect 1 0 12 0; -#X connect 1 1 11 0; -#X connect 2 0 4 0; -#X connect 2 1 3 0; -#X connect 3 0 5 0; -#X connect 4 0 5 0; -#X connect 5 0 7 0; -#X connect 6 0 0 0; -#X connect 11 0 5 1; -#X connect 12 0 5 1; -#X restore 197 82 pd hoa.mode.sel; -#X obj 197 105 sel 0 1 2 3; -#X msg 197 128 clear \, text 10 10 This patcher is used in the circular -harmonics domain., f 73; -#X msg 196 148 clear \, text 10 10 This patcher is used in the spherical -harmonics domain., f 73; -#X msg 197 168 clear \, text 10 10 This patcher is used in the 2d planewaves -domain., f 69; -#X msg 197 189 clear \, text 10 10 This patcher in the 3d planewaves -domain.; -#X obj 26 145 spigot 0; -#X obj 71 121 < 2; -#X obj 105 145 spigot 0; -#X obj 150 121 > 1; -#X msg 104 272 text 10 20 The number of planewaves is \$1 and the index -of the \, text 10 30 planewave is \$2; -#X msg 26 222 text 10 20 The order of decomposition is \$1 the degree -of the \, text 10 30 harmonics is \$2 and the order of the harmonics -is \$3., f 64; -#X obj 26 9 loadbang; -#X connect 1 0 8 0; -#X connect 1 0 10 0; -#X connect 1 1 2 0; -#X connect 2 0 3 0; -#X connect 2 0 9 0; -#X connect 2 0 11 0; -#X connect 3 0 4 0; -#X connect 3 1 5 0; -#X connect 3 2 6 0; -#X connect 3 3 7 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 8 0 13 0; -#X connect 9 0 8 1; -#X connect 10 0 12 0; -#X connect 11 0 10 1; -#X connect 12 0 0 0; -#X connect 13 0 0 0; -#X connect 14 0 1 0; -#X coords 0 -1 1 1 300 62 2 125 350; diff --git a/Package/Hoa/misc/hoa.process.txt b/Package/Hoa/misc/hoa.process.txt deleted file mode 100644 index 42c6786..0000000 --- a/Package/Hoa/misc/hoa.process.txt +++ /dev/null @@ -1,9 +0,0 @@ -hoa.fx.convolve~-help.pd hoa.fx.convolve~ A zero latency convolution reverb' for sound fields.; -hoa.fx.delay~-help.pd hoa.fx.delay~ A delay sound field diffuser.; -hoa.fx.freeverb~-help.pd hoa.fx.freeverb~ A freeverb reverb' for sound fields.; -hoa.fx.gain~-help.pd hoa.fx.gain~ A multigain for sound fields.; -hoa.fx.ringmod~-help.pd hoa.fx.ringmod~ A ring modulation sound field diffuser.; -hoa.fx.mirror~-help.pd hoa.fx.mirror~ A mirror for sound fields.; -hoa.syn.delay~-help.pd hoa.syn.delay~ A delay sound field synthesizer.; -hoa.syn.grain~-help.pd hoa.syn.grain~ A granular sound field synthesizer.; -hoa.syn.ringmod~-help.pd hoa.syn.ringmod~ A ring modulation sound field synthesizer.; \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.processexample.pd b/Package/Hoa/misc/hoa.processexample.pd deleted file mode 100644 index 82cd0c6..0000000 --- a/Package/Hoa/misc/hoa.processexample.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 386 267 499 330 10; -#X obj 89 47 hoa.in extra 1; -#X obj 248 58 hoa.thisprocess~; -#X obj 291 197 spigot 0; -#X obj 89 197 spigot 0; -#X obj 279 83 unpack s s; -#X obj 89 278 hoa.out extra 1; -#X obj 134 175 f 1; -#X obj 134 143 sel harmonics; -#X obj 336 143 sel planewaves; -#X obj 336 175 f 1; -#X obj 89 241 c.prepend list harmonic \$1 \$2 \$3; -#X obj 291 241 c.prepend list planewaves \$1 \$2; -#X obj 248 33 loadbang; -#X connect 0 0 2 0; -#X connect 0 0 3 0; -#X connect 1 1 4 0; -#X connect 2 0 11 0; -#X connect 3 0 10 0; -#X connect 4 1 8 0; -#X connect 4 1 7 0; -#X connect 6 0 3 1; -#X connect 7 0 6 0; -#X connect 8 0 9 0; -#X connect 9 0 2 1; -#X connect 10 0 5 0; -#X connect 11 0 5 0; -#X connect 12 0 1 0; diff --git a/Package/Hoa/misc/hoa.procexample~.pd b/Package/Hoa/misc/hoa.procexample~.pd deleted file mode 100644 index f6e9c4a..0000000 --- a/Package/Hoa/misc/hoa.procexample~.pd +++ /dev/null @@ -1,190 +0,0 @@ -#N canvas 349 177 746 467 10; -#X obj 204 327 hoa.in~; -#X obj 204 393 hoa.out~; -#X obj 254 114 hoa.in extra 1; -#X obj 219 304 line~; -#X obj 219 240 pack 1 20; -#X obj 204 357 *~; -#N canvas 0 50 450 300 hoa.mode.sel 0; -#X obj 85 62 unpack s s; -#X obj 139 90 sel harmonics planewaves; -#X obj 209 142 f 0; -#X obj 139 142 f 1; -#X obj 39 90 sel 2d 3d, f 14; -#X obj 79 142 f 1; -#X obj 39 142 f 0; -#X obj 103 178 +; -#X obj 87 21 inlet; -#X obj 103 248 outlet; -#X text 217 192 Planewaves 2d or 3d : mode 0; -#X text 217 212 Harmonics 2d : mode 1; -#X text 217 232 Harmonics 3d : mode 2; -#X connect 0 0 4 0; -#X connect 0 1 1 0; -#X connect 1 0 3 0; -#X connect 1 1 2 0; -#X connect 2 0 7 1; -#X connect 3 0 7 1; -#X connect 4 0 6 0; -#X connect 4 1 5 0; -#X connect 5 0 7 0; -#X connect 6 0 7 0; -#X connect 7 0 9 0; -#X connect 8 0 0 0; -#X restore 93 67 pd hoa.mode.sel; -#X text 250 90 Extra 1 retreive the right inlet messages.; -#X text 244 45 Default values; -#X obj 254 158 route float list db ramp; -#X text 257 327 Receive the signal; -#X text 257 395 Output the signal; -#X obj 6 34 hoa.thisprocess~ @ramp 20 @default 1; -#X text 359 293 - ramp set the ramp time in ms.; -#X text 359 263 - db have the same behavior as float or list except -that the variable are convert to rms.; -#X text 359 199 - float set all the instances ampltiudes (except if -the target is used).; -#X obj 219 67 route default ramp; -#X text 311 132 Input messages selector; -#N canvas 578 150 705 502 hoa.arg.map 0; -#X obj 333 90 inlet; -#X obj 80 231 spigot 0; -#X obj 305 230 spigot 0; -#X obj 503 230 spigot 0; -#X obj 80 90 inlet; -#X obj 333 118 sel 0 1 2; -#X obj 125 210 f 1; -#X obj 350 209 f 1; -#X obj 547 209 f 1; -#X obj 305 418 outlet; -#X text 331 32 Planewaves 2d or 3d : mode 0; -#X text 331 42 Harmonics 2d : mode 1; -#X text 331 52 Harmonics 3d : mode 2; -#X text 330 9 Right inlet the process mode; -#X text 80 9 Left inlet the instance arguments; -#X text 81 52 in the incoming list of amplitudes.; -#X text 81 42 the mode to select to right variable; -#X obj 332 277 < 0; -#X obj 305 258 t f f; -#X obj 305 277 * 2; -#X obj 305 298 abs; -#X obj 305 319 - 0; -#X obj 80 118 unpack 0 0 0; -#X obj 574 230 spigot 0; -#X obj 618 209 f 1; -#X obj 530 277 < 0; -#X obj 503 258 t f f; -#X obj 503 277 * 2; -#X obj 503 298 abs; -#X obj 503 319 - 0; -#X obj 503 365 + 0; -#X obj 574 259 * 2; -#X obj 574 287 + 1; -#X text 15 320 channels.; -#X text 15 280 Planewaves mode \,; -#X text 15 290 the arguments are; -#X text 15 300 already sorted; -#X text 15 310 from 0 to number of; -#X text 158 243 the arguments need; -#X text 158 233 Harmonics 2d mode \,; -#X text 359 303 the arguments need; -#X text 359 313 need to be interleaved.; -#X text 359 293 Harmonics 3d mode \,; -#X text 81 32 The arguments are mapped depending on; -#X text 158 263 depending on the; -#X text 158 273 the harmonic argument.; -#X text 158 253 need to be interleaved; -#X text 358 323 depending on the; -#X text 358 344 and the harmonic band.; -#X text 358 333 the harmonic argument; -#X connect 0 0 5 0; -#X connect 1 0 9 0; -#X connect 2 0 18 0; -#X connect 3 0 26 0; -#X connect 4 0 22 0; -#X connect 5 0 6 0; -#X connect 5 1 7 0; -#X connect 5 2 8 0; -#X connect 5 2 24 0; -#X connect 6 0 1 1; -#X connect 7 0 2 1; -#X connect 8 0 3 1; -#X connect 17 0 21 1; -#X connect 18 0 19 0; -#X connect 18 1 17 0; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 9 0; -#X connect 22 0 17 1; -#X connect 22 0 23 0; -#X connect 22 1 1 0; -#X connect 22 1 2 0; -#X connect 22 1 25 1; -#X connect 22 2 3 0; -#X connect 23 0 31 0; -#X connect 24 0 23 1; -#X connect 25 0 29 1; -#X connect 26 0 27 0; -#X connect 26 1 25 0; -#X connect 27 0 28 0; -#X connect 28 0 29 0; -#X connect 29 0 30 0; -#X connect 30 0 9 0; -#X connect 31 0 32 0; -#X connect 32 0 30 1; -#X restore 6 103 pd hoa.arg.map; -#X text 12 159 In the subcanvas \, the mode; -#X text 12 179 are used to split the list; -#X text 12 189 at the right index.; -#X text 12 169 anf the arguments; -#X text 359 231 - list is plit and only the right variable set the -amplitude of this instance (look at the subcanvas).; -#N canvas 0 50 626 405 hoa.route.mess- 0; -#X obj 231 80 list split; -#X obj 259 104 unpack; -#X obj 332 134 dbtorms; -#X obj 395 134 list split; -#X obj 423 158 unpack; -#X obj 131 28 inlet; -#X obj 131 234 outlet; -#X obj 231 28 inlet; -#X text 103 4 float is direct; -#X text 213 4 list is split; -#X text 343 4 db is routed; -#X obj 332 28 inlet; -#X text 392 43 db float is direct; -#X text 395 72 db list is split; -#X obj 332 103 route float list; -#X obj 61 28 inlet; -#X connect 0 1 1 0; -#X connect 1 0 6 0; -#X connect 2 0 6 0; -#X connect 3 1 4 0; -#X connect 4 0 6 0; -#X connect 5 0 6 0; -#X connect 7 0 0 0; -#X connect 11 0 14 0; -#X connect 14 0 2 0; -#X connect 14 1 3 0; -#X connect 15 0 0 1; -#X connect 15 0 3 1; -#X restore 219 180 pd hoa.route.mess-; -#X obj 6 7 loadbang; -#X connect 0 0 5 0; -#X connect 2 0 9 0; -#X connect 3 0 5 1; -#X connect 4 0 3 0; -#X connect 5 0 1 0; -#X connect 6 0 18 1; -#X connect 9 0 24 1; -#X connect 9 1 24 2; -#X connect 9 2 24 3; -#X connect 9 3 4 1; -#X connect 12 0 18 0; -#X connect 12 1 6 0; -#X connect 12 3 16 0; -#X connect 16 0 3 0; -#X connect 16 0 4 0; -#X connect 16 1 4 1; -#X connect 18 0 24 0; -#X connect 24 0 4 0; -#X connect 25 0 12 0; diff --git a/Package/Hoa/misc/hoa.pw.2d.dec~.pd b/Package/Hoa/misc/hoa.pw.2d.dec~.pd deleted file mode 100755 index ce6c1e8..0000000 --- a/Package/Hoa/misc/hoa.pw.2d.dec~.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 475 65 340 470 10; -#X obj 20 15 hoa.in~; -#X obj 20 429 hoa.out~ extra \$1; -#X obj 20 397 *~; -#X obj 35 374 sig~; -#X obj 35 173 *, f 5; -#X obj 62 142 abs; -#X obj 140 200 < 0; -#X obj 35 220 spigot 0; -#X obj 95 220 spigot 0; -#X obj 35 266 cos; -#X obj 80 200 >= 0; -#X obj 95 266 sin; -#X obj 35 71 t f b; -#X obj 62 98 f \$2; -#X obj 35 48 r \$3; -#X obj 121 244 sel 0; -#X obj 35 300 * 1; -#X obj 121 266 f 0.5; -#X obj 35 338 * \$4; -#X connect 0 0 2 0; -#X connect 2 0 1 0; -#X connect 3 0 2 1; -#X connect 4 0 7 0; -#X connect 4 0 8 0; -#X connect 5 0 4 1; -#X connect 6 0 8 1; -#X connect 7 0 9 0; -#X connect 8 0 11 0; -#X connect 9 0 16 0; -#X connect 10 0 7 1; -#X connect 11 0 16 0; -#X connect 12 0 4 0; -#X connect 12 1 13 0; -#X connect 13 0 5 0; -#X connect 13 0 10 0; -#X connect 13 0 6 0; -#X connect 13 0 15 0; -#X connect 14 0 12 0; -#X connect 15 0 17 0; -#X connect 16 0 18 0; -#X connect 17 0 16 1; -#X connect 18 0 3 0; diff --git a/Package/Hoa/misc/hoa.pw.3d.dec~.pd b/Package/Hoa/misc/hoa.pw.3d.dec~.pd deleted file mode 100755 index ce6c1e8..0000000 --- a/Package/Hoa/misc/hoa.pw.3d.dec~.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 475 65 340 470 10; -#X obj 20 15 hoa.in~; -#X obj 20 429 hoa.out~ extra \$1; -#X obj 20 397 *~; -#X obj 35 374 sig~; -#X obj 35 173 *, f 5; -#X obj 62 142 abs; -#X obj 140 200 < 0; -#X obj 35 220 spigot 0; -#X obj 95 220 spigot 0; -#X obj 35 266 cos; -#X obj 80 200 >= 0; -#X obj 95 266 sin; -#X obj 35 71 t f b; -#X obj 62 98 f \$2; -#X obj 35 48 r \$3; -#X obj 121 244 sel 0; -#X obj 35 300 * 1; -#X obj 121 266 f 0.5; -#X obj 35 338 * \$4; -#X connect 0 0 2 0; -#X connect 2 0 1 0; -#X connect 3 0 2 1; -#X connect 4 0 7 0; -#X connect 4 0 8 0; -#X connect 5 0 4 1; -#X connect 6 0 8 1; -#X connect 7 0 9 0; -#X connect 8 0 11 0; -#X connect 9 0 16 0; -#X connect 10 0 7 1; -#X connect 11 0 16 0; -#X connect 12 0 4 0; -#X connect 12 1 13 0; -#X connect 13 0 5 0; -#X connect 13 0 10 0; -#X connect 13 0 6 0; -#X connect 13 0 15 0; -#X connect 14 0 12 0; -#X connect 15 0 17 0; -#X connect 16 0 18 0; -#X connect 17 0 16 1; -#X connect 18 0 3 0; diff --git a/Package/Hoa/misc/hoa.soundcoat.pd b/Package/Hoa/misc/hoa.soundcoat.pd deleted file mode 100644 index 772f997..0000000 --- a/Package/Hoa/misc/hoa.soundcoat.pd +++ /dev/null @@ -1,724 +0,0 @@ -#N canvas 180 234 732 332 10; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 40 186 pd partializer 800 1200; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 39 218 pd partializer 1200 2000; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 40 27 pd partializer 80 120; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 40 57 pd partializer 120 220; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 40 88 pd partializer 220 360; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 42 121 pd partializer 360 660; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 43 152 pd partializer 560 800; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 200 27 pd partializer 80 120; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 200 57 pd partializer 120 220; -#N canvas 541 188 710 538 partializer 0; -#X obj 108 331 osc~ 100; -#X obj 238 256 osc~ 0.1; -#X obj 239 294 *~; -#X obj 238 112 random 1000; -#X obj 238 203 /, f 5; -#X obj 238 159 t b f; -#X obj 238 230 / 1000; -#X obj 238 136 + 500; -#X obj 108 305 + 100; -#X obj 108 371 *~; -#X obj 239 321 -~ 0.001; -#X obj 239 345 max~ 0; -#X obj 108 282 random 2000; -#X obj 239 447 sel 1; -#X obj 238 181 samplerate~; -#X obj 239 382 env~ 512 256; -#X obj 239 413 <= 0; -#X obj 101 24 c.patcherargs partializer 80 200; -#X obj 101 52 unpack s f f; -#X obj 74 -36 loadbang; -#X obj 27 73 bang; -#X obj 108 468 outlet~; -#X text 240 75 Envelope; -#X text 111 254 Partial; -#X obj 108 411 *~; -#X obj 27 282 random 9000; -#X obj 27 305 + 1000; -#X obj 27 341 / 10000; -#X text 41 254 Gain; -#X obj 74 -7 t b b; -#X obj 172 150 -; -#X obj 144 123 t b f; -#X connect 0 0 9 0; -#X connect 1 0 2 1; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 3 0 7 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 5 1 4 1; -#X connect 6 0 1 0; -#X connect 7 0 5 0; -#X connect 8 0 0 0; -#X connect 9 0 24 0; -#X connect 10 0 11 0; -#X connect 11 0 9 1; -#X connect 11 0 15 0; -#X connect 12 0 8 0; -#X connect 13 0 20 0; -#X connect 14 0 4 0; -#X connect 15 0 16 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 18 1 8 1; -#X connect 18 1 31 0; -#X connect 18 2 30 0; -#X connect 19 0 29 0; -#X connect 20 0 12 0; -#X connect 20 0 3 0; -#X connect 20 0 25 0; -#X connect 24 0 21 0; -#X connect 25 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 24 1; -#X connect 29 0 20 0; -#X connect 29 1 17 0; -#X connect 30 0 12 1; -#X connect 31 0 30 0; -#X connect 31 1 30 1; -#X restore 200 88 pd partializer 220 360; -#X obj 7 285 outlet~; -#X obj 7 255 *~ 0.1; -#X connect 0 0 11 0; -#X connect 1 0 11 0; -#X connect 2 0 11 0; -#X connect 3 0 11 0; -#X connect 4 0 11 0; -#X connect 5 0 11 0; -#X connect 6 0 11 0; -#X connect 7 0 11 0; -#X connect 8 0 11 0; -#X connect 9 0 11 0; -#X connect 11 0 10 0; diff --git a/Package/Hoa/misc/hoa.soundgrain.pd b/Package/Hoa/misc/hoa.soundgrain.pd deleted file mode 100644 index 4e35973..0000000 --- a/Package/Hoa/misc/hoa.soundgrain.pd +++ /dev/null @@ -1,750 +0,0 @@ -#N canvas 432 135 839 493 10; -#N canvas 86 221 900 507 granular 0; -#X obj 463 201 random 1000; -#X obj 463 221 / 1000; -#X obj 463 181 c.loadmess; -#X obj 33 221 clip~ 0 1; -#X obj 33 184 line~; -#X obj 33 68 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 --1 0.95 256; -#X obj 18 273 *~; -#X obj 83 361 *~; -#X obj 299 278 samphold~; -#X obj 400 244 phasor~; -#X obj 299 141 +~ 1; -#X obj 299 167 *~ 0.5; -#X obj 299 101 noise~; -#X obj 326 58 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 0.3 256; -#N canvas 0 50 450 300 >~ 0; -#X obj 67 114 max~ 0; -#X obj 67 175 -~ 0; -#X obj 130 188 /~; -#X obj 130 152 sig~ -1; -#X obj 145 114 -~; -#X obj 67 212 *~; -#X obj 67 17 inlet~; -#X obj 67 252 outlet~; -#X obj 132 15 inlet; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 4 0 2 1; -#X connect 5 0 7 0; -#X connect 6 0 0 0; -#X connect 6 0 4 1; -#X connect 8 0 4 0; -#X connect 8 0 1 1; -#X connect 8 0 0 1; -#X restore 299 196 pd >~; -#X text 317 37 Rarefaction; -#X text 427 9 Size; -#X obj 299 324 *~; -#X obj 400 278 *~ 513; -#X text 33 40 Feedback; -#X obj 400 109 sig~ 1000; -#X obj 400 183 /~ 80; -#X obj 149 243 samphold~; -#X obj 83 327 vd~ \$0-hoa_grain; -#X obj 83 271 delwrite~ \$0-hoa_grain 5500; -#X obj 164 68 nbx 5 14 1 5000 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 400 256; -#X obj 149 101 noise~; -#X obj 149 130 *~ 1; -#X obj 149 158 +~; -#X obj 149 215 +~ 1; -#X obj 149 184 abs~; -#X text 160 40 Delay; -#X obj 502 84 random; -#X obj 427 160 +; -#X obj 195 101 * 0.1; -#X obj 502 62 metro; -#X obj 427 133 t b f; -#X obj 83 432 outlet~; -#X obj 432 24 nbx 5 14 0 1e+06 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 61 256; -#X obj 71 3 inlet; -#X obj 21 20 inlet~; -#X obj 151 3 inlet; -#X obj 231 3 inlet; -#X obj 291 3 inlet; -#X obj 580 22 c.loadmess 1; -#X obj 400 307 tabread4~ \$0-hoa_hann2; -#X obj 502 137 * 0.3; -#X connect 0 0 1 0; -#X connect 1 0 9 1; -#X connect 2 0 0 0; -#X connect 3 0 6 1; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 24 0; -#X connect 7 0 6 0; -#X connect 7 0 37 0; -#X connect 8 0 17 0; -#X connect 9 0 8 1; -#X connect 9 0 18 0; -#X connect 9 0 22 1; -#X connect 10 0 11 0; -#X connect 11 0 14 0; -#X connect 12 0 10 0; -#X connect 13 0 14 1; -#X connect 14 0 8 0; -#X connect 17 0 7 1; -#X connect 18 0 45 0; -#X connect 20 0 21 0; -#X connect 21 0 9 0; -#X connect 22 0 23 0; -#X connect 23 0 7 0; -#X connect 25 0 28 1; -#X connect 25 0 34 0; -#X connect 26 0 27 0; -#X connect 27 0 28 0; -#X connect 28 0 30 0; -#X connect 29 0 22 0; -#X connect 30 0 29 0; -#X connect 32 0 46 0; -#X connect 33 0 21 1; -#X connect 34 0 27 1; -#X connect 35 0 32 0; -#X connect 36 0 33 0; -#X connect 36 1 33 1; -#X connect 38 0 33 0; -#X connect 38 0 35 1; -#X connect 38 0 32 1; -#X connect 39 0 38 0; -#X connect 40 0 24 0; -#X connect 41 0 25 0; -#X connect 42 0 5 0; -#X connect 43 0 13 0; -#X connect 44 0 35 0; -#X connect 45 0 17 1; -#X connect 46 0 36 0; -#X restore 42 368 pd granular; -#X msg 738 265 0; -#X obj 632 314 osc~; -#X obj 632 266 samplerate~; -#X obj 632 337 *~ -0.5; -#X obj 632 360 +~ 0.5; -#X obj 632 290 / 512; -#X obj 624 385 tabwrite~ \$0-hoa_hann2; -#X obj 628 448 table \$0-hoa_hann2 512; -#N canvas 86 221 900 507 granular 0; -#X obj 463 201 random 1000; -#X obj 463 221 / 1000; -#X obj 463 181 c.loadmess; -#X obj 33 221 clip~ 0 1; -#X obj 33 184 line~; -#X obj 33 68 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 --1 0.95 256; -#X obj 18 273 *~; -#X obj 83 361 *~; -#X obj 299 278 samphold~; -#X obj 400 244 phasor~; -#X obj 299 141 +~ 1; -#X obj 299 167 *~ 0.5; -#X obj 299 101 noise~; -#X obj 326 58 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 0.3 256; -#N canvas 0 50 450 300 >~ 0; -#X obj 67 114 max~ 0; -#X obj 67 175 -~ 0; -#X obj 130 188 /~; -#X obj 130 152 sig~ -1; -#X obj 145 114 -~; -#X obj 67 212 *~; -#X obj 67 17 inlet~; -#X obj 67 252 outlet~; -#X obj 132 15 inlet; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 4 0 2 1; -#X connect 5 0 7 0; -#X connect 6 0 0 0; -#X connect 6 0 4 1; -#X connect 8 0 4 0; -#X connect 8 0 1 1; -#X connect 8 0 0 1; -#X restore 299 196 pd >~; -#X text 317 37 Rarefaction; -#X text 427 9 Size; -#X obj 299 324 *~; -#X obj 400 278 *~ 513; -#X text 33 40 Feedback; -#X obj 400 109 sig~ 1000; -#X obj 149 243 samphold~; -#X obj 164 68 nbx 5 14 1 5000 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 800 256; -#X obj 149 101 noise~; -#X obj 149 130 *~ 1; -#X obj 149 158 +~; -#X obj 149 215 +~ 1; -#X obj 149 184 abs~; -#X text 160 40 Delay; -#X obj 502 84 random; -#X obj 427 160 +; -#X obj 195 101 * 0.1; -#X obj 502 62 metro; -#X obj 427 133 t b f; -#X obj 83 432 outlet~; -#X obj 432 24 nbx 5 14 0 1e+06 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 71 256; -#X obj 71 3 inlet; -#X obj 21 20 inlet~; -#X obj 151 3 inlet; -#X obj 231 3 inlet; -#X obj 291 3 inlet; -#X obj 580 22 c.loadmess 1; -#X obj 83 271 delwrite~ \$1-hoa_grain 5500; -#X obj 83 327 vd~ \$1-hoa_grain; -#X obj 400 307 tabread4~ \$0-hoa_hann2; -#X obj 502 137 * 0.3; -#X obj 559 199 line~; -#X msg 565 161 \$1 20; -#X obj 400 202 /~; -#X connect 0 0 1 0; -#X connect 1 0 9 1; -#X connect 2 0 0 0; -#X connect 3 0 6 1; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 42 0; -#X connect 7 0 6 0; -#X connect 7 0 34 0; -#X connect 8 0 17 0; -#X connect 9 0 8 1; -#X connect 9 0 18 0; -#X connect 9 0 21 1; -#X connect 10 0 11 0; -#X connect 11 0 14 0; -#X connect 12 0 10 0; -#X connect 13 0 14 1; -#X connect 14 0 8 0; -#X connect 17 0 7 1; -#X connect 18 0 44 0; -#X connect 20 0 48 0; -#X connect 21 0 43 0; -#X connect 22 0 25 1; -#X connect 22 0 31 0; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 27 0; -#X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 29 0 45 0; -#X connect 30 0 47 0; -#X connect 31 0 24 1; -#X connect 32 0 29 0; -#X connect 33 0 30 0; -#X connect 33 1 30 1; -#X connect 35 0 30 0; -#X connect 35 0 32 1; -#X connect 35 0 29 1; -#X connect 36 0 35 0; -#X connect 37 0 42 0; -#X connect 38 0 22 0; -#X connect 39 0 5 0; -#X connect 40 0 13 0; -#X connect 41 0 32 0; -#X connect 43 0 7 0; -#X connect 44 0 17 1; -#X connect 45 0 33 0; -#X connect 46 0 48 1; -#X connect 47 0 46 0; -#X connect 48 0 9 0; -#X restore 122 368 pd granular; -#N canvas 86 221 900 507 granular 0; -#X obj 463 201 random 1000; -#X obj 463 221 / 1000; -#X obj 463 181 c.loadmess; -#X obj 33 221 clip~ 0 1; -#X obj 33 184 line~; -#X obj 33 68 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 --1 0.95 256; -#X obj 18 273 *~; -#X obj 83 361 *~; -#X obj 299 278 samphold~; -#X obj 400 244 phasor~; -#X obj 299 141 +~ 1; -#X obj 299 167 *~ 0.5; -#X obj 299 101 noise~; -#X obj 326 58 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 0.3 256; -#N canvas 0 50 450 300 >~ 0; -#X obj 67 114 max~ 0; -#X obj 67 175 -~ 0; -#X obj 130 188 /~; -#X obj 130 152 sig~ -1; -#X obj 145 114 -~; -#X obj 67 212 *~; -#X obj 67 17 inlet~; -#X obj 67 252 outlet~; -#X obj 132 15 inlet; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 4 0 2 1; -#X connect 5 0 7 0; -#X connect 6 0 0 0; -#X connect 6 0 4 1; -#X connect 8 0 4 0; -#X connect 8 0 1 1; -#X connect 8 0 0 1; -#X restore 299 196 pd >~; -#X text 317 37 Rarefaction; -#X text 427 9 Size; -#X obj 299 324 *~; -#X obj 400 278 *~ 513; -#X text 33 40 Feedback; -#X obj 400 109 sig~ 1000; -#X obj 149 243 samphold~; -#X obj 164 68 nbx 5 14 1 5000 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 2800 256; -#X obj 149 101 noise~; -#X obj 149 130 *~ 1; -#X obj 149 158 +~; -#X obj 149 215 +~ 1; -#X obj 149 184 abs~; -#X text 160 40 Delay; -#X obj 502 84 random; -#X obj 427 160 +; -#X obj 195 101 * 0.1; -#X obj 502 62 metro; -#X obj 427 133 t b f; -#X obj 83 432 outlet~; -#X obj 432 24 nbx 5 14 0 1e+06 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 163 256; -#X obj 71 3 inlet; -#X obj 21 20 inlet~; -#X obj 151 3 inlet; -#X obj 231 3 inlet; -#X obj 291 3 inlet; -#X obj 580 22 c.loadmess 1; -#X obj 83 271 delwrite~ \$2-hoa_grain 5500; -#X obj 83 327 vd~ \$2-hoa_grain; -#X obj 400 307 tabread4~ \$0-hoa_hann2; -#X obj 502 137 * 0.3; -#X obj 400 183 /~; -#X obj 559 199 line~; -#X msg 565 161 \$1 20; -#X connect 0 0 1 0; -#X connect 1 0 9 1; -#X connect 2 0 0 0; -#X connect 3 0 6 1; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 42 0; -#X connect 7 0 6 0; -#X connect 7 0 34 0; -#X connect 8 0 17 0; -#X connect 9 0 8 1; -#X connect 9 0 18 0; -#X connect 9 0 21 1; -#X connect 10 0 11 0; -#X connect 11 0 14 0; -#X connect 12 0 10 0; -#X connect 13 0 14 1; -#X connect 14 0 8 0; -#X connect 17 0 7 1; -#X connect 18 0 44 0; -#X connect 20 0 46 0; -#X connect 21 0 43 0; -#X connect 22 0 25 1; -#X connect 22 0 31 0; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 27 0; -#X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 29 0 45 0; -#X connect 30 0 48 0; -#X connect 31 0 24 1; -#X connect 32 0 29 0; -#X connect 33 0 30 0; -#X connect 33 1 30 1; -#X connect 35 0 30 0; -#X connect 35 0 32 1; -#X connect 35 0 29 1; -#X connect 36 0 35 0; -#X connect 37 0 42 0; -#X connect 38 0 22 0; -#X connect 39 0 5 0; -#X connect 40 0 13 0; -#X connect 41 0 32 0; -#X connect 43 0 7 0; -#X connect 44 0 17 1; -#X connect 45 0 33 0; -#X connect 46 0 9 0; -#X connect 47 0 46 1; -#X connect 48 0 47 0; -#X restore 202 368 pd granular; -#N canvas 86 221 900 507 granular 0; -#X obj 463 201 random 1000; -#X obj 463 221 / 1000; -#X obj 463 181 c.loadmess; -#X obj 33 221 clip~ 0 1; -#X obj 33 184 line~; -#X obj 33 68 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 --1 0.95 256; -#X obj 18 273 *~; -#X obj 83 361 *~; -#X obj 299 278 samphold~; -#X obj 400 244 phasor~; -#X obj 299 141 +~ 1; -#X obj 299 167 *~ 0.5; -#X obj 299 101 noise~; -#X obj 326 58 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 0.3 256; -#N canvas 0 50 450 300 >~ 0; -#X obj 67 114 max~ 0; -#X obj 67 175 -~ 0; -#X obj 130 188 /~; -#X obj 130 152 sig~ -1; -#X obj 145 114 -~; -#X obj 67 212 *~; -#X obj 67 17 inlet~; -#X obj 67 252 outlet~; -#X obj 132 15 inlet; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 4 0 2 1; -#X connect 5 0 7 0; -#X connect 6 0 0 0; -#X connect 6 0 4 1; -#X connect 8 0 4 0; -#X connect 8 0 1 1; -#X connect 8 0 0 1; -#X restore 299 196 pd >~; -#X text 317 37 Rarefaction; -#X text 427 9 Size; -#X obj 299 324 *~; -#X obj 400 278 *~ 513; -#X text 33 40 Feedback; -#X obj 400 109 sig~ 1000; -#X obj 149 243 samphold~; -#X obj 164 68 nbx 5 14 1 5000 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 4000 256; -#X obj 149 101 noise~; -#X obj 149 130 *~ 1; -#X obj 149 158 +~; -#X obj 149 215 +~ 1; -#X obj 149 184 abs~; -#X text 160 40 Delay; -#X obj 502 84 random; -#X obj 427 160 +; -#X obj 195 101 * 0.1; -#X obj 502 62 metro; -#X obj 427 133 t b f; -#X obj 83 432 outlet~; -#X obj 432 24 nbx 5 14 0 1e+06 0 0 empty empty empty 0 -8 0 10 -262144 --1 -1 42 256; -#X obj 71 3 inlet; -#X obj 21 20 inlet~; -#X obj 151 3 inlet; -#X obj 231 3 inlet; -#X obj 291 3 inlet; -#X obj 580 22 c.loadmess 1; -#X obj 83 271 delwrite~ \$3-hoa_grain 5500; -#X obj 83 327 vd~ \$3-hoa_grain; -#X obj 400 307 tabread4~ \$0-hoa_hann2; -#X obj 502 137 * 0.3; -#X obj 559 199 line~; -#X msg 565 161 \$1 20; -#X obj 400 208 /~; -#X connect 0 0 1 0; -#X connect 1 0 9 1; -#X connect 2 0 0 0; -#X connect 3 0 6 1; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 42 0; -#X connect 7 0 6 0; -#X connect 7 0 34 0; -#X connect 8 0 17 0; -#X connect 9 0 8 1; -#X connect 9 0 18 0; -#X connect 9 0 21 1; -#X connect 10 0 11 0; -#X connect 11 0 14 0; -#X connect 12 0 10 0; -#X connect 13 0 14 1; -#X connect 14 0 8 0; -#X connect 17 0 7 1; -#X connect 18 0 44 0; -#X connect 20 0 48 0; -#X connect 21 0 43 0; -#X connect 22 0 25 1; -#X connect 22 0 31 0; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 27 0; -#X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 29 0 45 0; -#X connect 30 0 47 0; -#X connect 31 0 24 1; -#X connect 32 0 29 0; -#X connect 33 0 30 0; -#X connect 33 1 30 1; -#X connect 35 0 30 0; -#X connect 35 0 32 1; -#X connect 35 0 29 1; -#X connect 36 0 35 0; -#X connect 37 0 42 0; -#X connect 38 0 22 0; -#X connect 39 0 5 0; -#X connect 40 0 13 0; -#X connect 41 0 32 0; -#X connect 43 0 7 0; -#X connect 44 0 17 1; -#X connect 45 0 33 0; -#X connect 46 0 48 1; -#X connect 47 0 46 0; -#X connect 48 0 9 0; -#X restore 281 368 pd granular; -#X obj 299 130 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 --262144 -1 -1 400 256; -#X obj 416 255 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 --262144 -1 -1 0.95 256; -#X obj 486 255 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 --262144 -1 -1 0.3 256; -#X obj 301 224 * 2; -#X obj 159 475 outlet~; -#X obj 400 159 c.loadmess 0.95; -#X obj 440 189 c.loadmess 0.3; -#X obj 401 224 * 10; -#X obj 351 224 * 7; -#N canvas 0 50 450 300 soundlost 0; -#X msg 675 149 0; -#X obj 569 198 osc~; -#X obj 569 150 samplerate~; -#X obj 569 221 *~ -0.5; -#X obj 569 244 +~ 0.5; -#X obj 561 82 c.loadmess; -#X obj 89 254 outlet~; -#X obj 89 178 noise~; -#X obj 355 475 / 1000; -#X obj 355 505 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 --262144 -1 -1 0.739 256; -#X obj 473 487 t b f; -#X obj 473 539 list prepend; -#X obj 473 517 list prepend; -#X obj 510 650 pack 0 f; -#X obj 510 619 t b f; -#X obj 355 259 t b b; -#X obj 355 565 pack f f; -#X obj 355 226 metro 500; -#X msg 355 177 1; -#X obj 355 453 + 200; -#X obj 355 140 t b b; -#X obj 355 300 random 600; -#X obj 406 178 random 800; -#X obj 406 201 + 200; -#X obj 759 198 osc~; -#X obj 759 150 samplerate~; -#X obj 759 221 *~ -0.5; -#X obj 759 244 +~ 0.5; -#X obj 473 396 -; -#X obj 473 355 t b f; -#X msg 473 376 1; -#X obj 473 457 int; -#X obj 473 435 + 1; -#X obj 473 299 random 255; -#X obj 473 415 * 254; -#X msg 865 149 0.5; -#X obj 386 35 table \$0-hoa_filter 256; -#X obj 355 668 tabwrite \$0-hoa_filter; -#X obj 387 74 table \$0-hoa_hann 512; -#X obj 561 269 tabwrite~ \$0-hoa_hann; -#X obj 751 269 tabwrite~ \$0-hoa_prob; -#X msg 728 95 \; \$0-hoa_filter const 0; -#X obj 536 35 table \$0-hoa_prob 256; -#X obj 473 334 tabread \$0-hoa_prob; -#N canvas 0 50 427 426 spectralfilter 0; -#X obj 91 140 *~; -#X obj 91 174 rfft~; -#X obj 91 209 *~; -#X obj 124 209 *~; -#X obj 9 16 block~ 512 4; -#X obj 92 292 *~; -#X obj 91 245 rifft~; -#X obj 92 327 outlet~; -#X obj 207 163 *~; -#X obj 208 221 /~ 768; -#X obj 208 189 *~; -#X obj 206 134 tabreceive~ \$0-hoa_filter; -#X obj 113 267 tabreceive~ \$0-hoa_hann; -#X obj 141 96 tabreceive~ \$0-hoa_hann; -#X obj 91 80 inlet~; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 1 1 3 0; -#X connect 2 0 6 0; -#X connect 3 0 6 1; -#X connect 5 0 7 0; -#X connect 6 0 5 0; -#X connect 8 0 10 0; -#X connect 8 0 10 1; -#X connect 9 0 3 1; -#X connect 9 0 2 1; -#X connect 10 0 9 0; -#X connect 11 0 8 0; -#X connect 11 0 8 1; -#X connect 12 0 5 1; -#X connect 13 0 0 1; -#X connect 14 0 0 0; -#X restore 89 206 pd spectralfilter; -#X obj 569 174 / 512; -#X obj 759 174 / 700; -#X msg 522 487 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0; -#X obj 473 571 list split 25; -#X obj 473 597 list split 24; -#X obj 89 233 *~ 8; -#X connect 0 0 1 1; -#X connect 1 0 3 0; -#X connect 2 0 45 0; -#X connect 3 0 4 0; -#X connect 4 0 39 0; -#X connect 5 0 0 0; -#X connect 5 0 20 0; -#X connect 5 0 2 0; -#X connect 5 0 35 0; -#X connect 5 0 25 0; -#X connect 5 0 39 0; -#X connect 5 0 40 0; -#X connect 7 0 44 0; -#X connect 8 0 9 0; -#X connect 9 0 16 0; -#X connect 10 0 12 0; -#X connect 10 1 11 1; -#X connect 11 0 48 0; -#X connect 12 0 11 0; -#X connect 13 0 37 0; -#X connect 14 0 13 0; -#X connect 14 1 13 1; -#X connect 15 0 21 0; -#X connect 15 1 33 0; -#X connect 16 0 37 0; -#X connect 17 0 15 0; -#X connect 17 0 22 0; -#X connect 18 0 17 0; -#X connect 19 0 8 0; -#X connect 20 0 18 0; -#X connect 20 1 47 0; -#X connect 21 0 19 0; -#X connect 22 0 23 0; -#X connect 23 0 17 1; -#X connect 24 0 26 0; -#X connect 25 0 46 0; -#X connect 26 0 27 0; -#X connect 27 0 40 0; -#X connect 28 0 34 0; -#X connect 29 0 30 0; -#X connect 29 1 28 1; -#X connect 30 0 28 0; -#X connect 31 0 10 0; -#X connect 31 0 16 1; -#X connect 32 0 31 0; -#X connect 33 0 43 0; -#X connect 34 0 32 0; -#X connect 35 0 24 1; -#X connect 43 0 29 0; -#X connect 44 0 50 0; -#X connect 45 0 1 0; -#X connect 46 0 24 0; -#X connect 47 0 12 0; -#X connect 48 0 12 1; -#X connect 48 0 49 0; -#X connect 49 1 14 0; -#X connect 50 0 6 0; -#X restore 108 278 pd soundlost; -#X obj 17 234 line; -#X obj 16 136 random 80; -#X msg 17 204 \$1 50; -#X obj 16 166 + 15; -#X obj 13 104 metro 2000; -#X obj 91 234 line; -#X msg 91 204 \$1 50; -#X obj 90 166 + 15; -#X obj 87 104 metro 2000; -#X obj 171 234 line; -#X msg 171 204 \$1 50; -#X obj 170 166 + 15; -#X obj 167 104 metro 2000; -#X obj 241 234 line; -#X msg 241 204 \$1 50; -#X obj 240 166 + 15; -#X obj 237 104 metro 2000; -#X obj 370 129 c.loadmess 400; -#X obj 90 136 random 120; -#X obj 170 136 random 160; -#X obj 240 136 random 40; -#X obj 113 62 f 1; -#X obj 108 33 loadbang; -#X obj 624 198 loadbang; -#X connect 0 0 16 0; -#X connect 1 0 2 1; -#X connect 2 0 4 0; -#X connect 3 0 6 0; -#X connect 4 0 5 0; -#X connect 5 0 7 0; -#X connect 6 0 2 0; -#X connect 9 0 16 0; -#X connect 10 0 16 0; -#X connect 11 0 16 0; -#X connect 12 0 0 2; -#X connect 12 0 15 0; -#X connect 12 0 19 0; -#X connect 12 0 20 0; -#X connect 13 0 11 3; -#X connect 13 0 10 3; -#X connect 13 0 9 3; -#X connect 13 0 0 3; -#X connect 14 0 11 4; -#X connect 14 0 10 4; -#X connect 14 0 9 4; -#X connect 14 0 0 4; -#X connect 15 0 9 2; -#X connect 17 0 13 0; -#X connect 18 0 14 0; -#X connect 19 0 11 2; -#X connect 20 0 10 2; -#X connect 21 0 0 0; -#X connect 21 0 9 0; -#X connect 21 0 10 0; -#X connect 21 0 11 0; -#X connect 22 0 0 1; -#X connect 23 0 25 0; -#X connect 24 0 22 0; -#X connect 25 0 24 0; -#X connect 26 0 23 0; -#X connect 27 0 9 1; -#X connect 28 0 27 0; -#X connect 29 0 28 0; -#X connect 30 0 40 0; -#X connect 31 0 10 1; -#X connect 32 0 31 0; -#X connect 33 0 32 0; -#X connect 34 0 41 0; -#X connect 35 0 11 1; -#X connect 36 0 35 0; -#X connect 37 0 36 0; -#X connect 38 0 42 0; -#X connect 39 0 12 0; -#X connect 40 0 29 0; -#X connect 41 0 33 0; -#X connect 42 0 37 0; -#X connect 43 0 26 0; -#X connect 43 0 30 0; -#X connect 43 0 34 0; -#X connect 43 0 38 0; -#X connect 44 0 43 0; -#X connect 45 0 1 0; -#X connect 45 0 3 0; -#X connect 45 0 7 0; diff --git a/Package/Hoa/misc/hoa.soundrone.pd b/Package/Hoa/misc/hoa.soundrone.pd deleted file mode 100644 index 1de0c09..0000000 --- a/Package/Hoa/misc/hoa.soundrone.pd +++ /dev/null @@ -1,467 +0,0 @@ -#N canvas 480 151 766 493 10; -#N canvas 0 50 804 588 inst 0; -#X obj 79 291 cos~; -#X obj 79 190 -~ 0.5; -#X obj 79 245 *~; -#X obj 79 268 clip~ -0.5 0.5; -#X obj 339 182 +~ 1; -#X obj 79 314 +~ 1; -#X obj 489 296 cos~; -#X obj 79 372 *~; -#X obj 489 270 *~; -#X obj 79 337 *~ 0.5; -#X obj 339 133 osc~ 0.3; -#X obj 339 162 *~; -#X obj 507 196 *~; -#X obj 504 246 +~ 1; -#X obj 79 90 *~; -#X obj 79 43 osc~ 0.001; -#X obj 507 163 osc~ 0.015; -#X obj 79 140 +~ 100; -#X obj 504 223 *~ 1; -#X obj 79 117 *~ 2; -#X obj 507 107 random 100; -#X obj 507 137 / 10000; -#X obj 507 68 metro 500; -#X obj 575 49 random 700; -#X obj 576 69 + 200; -#X obj 339 53 metro 500; -#X obj 408 30 random 700; -#X obj 408 54 + 200; -#X obj 339 107 / 1000; -#X obj 339 87 random 700; -#X obj 79 166 phasor~ 120; -#X obj 79 407 outlet~; -#X obj 339 -13 c.loadmess 1; -#X obj 226 41 c.patcherargs; -#X obj 226 18 bang; -#X obj 226 64 unpack s 0 0; -#X obj 78 -31 metro 500; -#X obj 147 -54 random 700; -#X obj 147 -30 + 200; -#X obj 78 3 random 700; -#X obj 79 22 / 100000; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 1 0 8 0; -#X connect 2 0 3 0; -#X connect 3 0 0 0; -#X connect 4 0 2 1; -#X connect 5 0 9 0; -#X connect 6 0 7 1; -#X connect 7 0 31 0; -#X connect 8 0 6 0; -#X connect 9 0 7 0; -#X connect 10 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 4 0; -#X connect 12 0 18 0; -#X connect 13 0 8 1; -#X connect 14 0 19 0; -#X connect 15 0 14 0; -#X connect 15 0 14 1; -#X connect 16 0 12 0; -#X connect 16 0 12 1; -#X connect 17 0 30 0; -#X connect 18 0 13 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 16 0; -#X connect 22 0 20 0; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 24 0 22 1; -#X connect 25 0 26 0; -#X connect 25 0 29 0; -#X connect 26 0 27 0; -#X connect 27 0 25 1; -#X connect 28 0 10 0; -#X connect 29 0 28 0; -#X connect 30 0 1 0; -#X connect 32 0 22 0; -#X connect 32 0 25 0; -#X connect 32 0 34 0; -#X connect 32 0 36 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 1 17 1; -#X connect 35 2 19 1; -#X connect 36 0 37 0; -#X connect 36 0 39 0; -#X connect 37 0 38 0; -#X connect 38 0 36 1; -#X connect 39 0 40 0; -#X connect 40 0 15 0; -#X restore 154 109 pd inst 175 1.8; -#N canvas 0 50 804 588 inst 0; -#X obj 79 291 cos~; -#X obj 79 190 -~ 0.5; -#X obj 79 245 *~; -#X obj 79 268 clip~ -0.5 0.5; -#X obj 339 182 +~ 1; -#X obj 79 314 +~ 1; -#X obj 489 296 cos~; -#X obj 79 372 *~; -#X obj 489 270 *~; -#X obj 79 337 *~ 0.5; -#X obj 339 133 osc~ 0.3; -#X obj 339 162 *~; -#X obj 507 196 *~; -#X obj 504 246 +~ 1; -#X obj 79 90 *~; -#X obj 79 43 osc~ 0.001; -#X obj 507 163 osc~ 0.015; -#X obj 79 140 +~ 100; -#X obj 504 223 *~ 1; -#X obj 79 117 *~ 2; -#X obj 507 107 random 100; -#X obj 507 137 / 10000; -#X obj 507 68 metro 500; -#X obj 575 49 random 700; -#X obj 576 69 + 200; -#X obj 339 53 metro 500; -#X obj 408 30 random 700; -#X obj 408 54 + 200; -#X obj 339 107 / 1000; -#X obj 339 87 random 700; -#X obj 79 166 phasor~ 120; -#X obj 79 407 outlet~; -#X obj 339 -13 c.loadmess 1; -#X obj 226 41 c.patcherargs; -#X obj 226 18 bang; -#X obj 226 64 unpack s 0 0; -#X obj 78 -31 metro 500; -#X obj 147 -54 random 700; -#X obj 147 -30 + 200; -#X obj 78 3 random 700; -#X obj 79 22 / 100000; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 1 0 8 0; -#X connect 2 0 3 0; -#X connect 3 0 0 0; -#X connect 4 0 2 1; -#X connect 5 0 9 0; -#X connect 6 0 7 1; -#X connect 7 0 31 0; -#X connect 8 0 6 0; -#X connect 9 0 7 0; -#X connect 10 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 4 0; -#X connect 12 0 18 0; -#X connect 13 0 8 1; -#X connect 14 0 19 0; -#X connect 15 0 14 0; -#X connect 15 0 14 1; -#X connect 16 0 12 0; -#X connect 16 0 12 1; -#X connect 17 0 30 0; -#X connect 18 0 13 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 16 0; -#X connect 22 0 20 0; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 24 0 22 1; -#X connect 25 0 26 0; -#X connect 25 0 29 0; -#X connect 26 0 27 0; -#X connect 27 0 25 1; -#X connect 28 0 10 0; -#X connect 29 0 28 0; -#X connect 30 0 1 0; -#X connect 32 0 22 0; -#X connect 32 0 25 0; -#X connect 32 0 34 0; -#X connect 32 0 36 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 1 17 1; -#X connect 35 2 19 1; -#X connect 36 0 37 0; -#X connect 36 0 39 0; -#X connect 37 0 38 0; -#X connect 38 0 36 1; -#X connect 39 0 40 0; -#X connect 40 0 15 0; -#X restore 254 109 pd inst 300 1.3; -#X obj 62 202 *~ 0.5; -#N canvas 0 50 804 588 inst 0; -#X obj 79 291 cos~; -#X obj 79 190 -~ 0.5; -#X obj 79 245 *~; -#X obj 79 268 clip~ -0.5 0.5; -#X obj 339 182 +~ 1; -#X obj 79 314 +~ 1; -#X obj 489 296 cos~; -#X obj 79 372 *~; -#X obj 489 270 *~; -#X obj 79 337 *~ 0.5; -#X obj 339 133 osc~ 0.3; -#X obj 339 162 *~; -#X obj 507 196 *~; -#X obj 504 246 +~ 1; -#X obj 79 90 *~; -#X obj 79 43 osc~ 0.001; -#X obj 507 163 osc~ 0.015; -#X obj 79 140 +~ 100; -#X obj 504 223 *~ 1; -#X obj 79 117 *~ 2; -#X obj 507 107 random 100; -#X obj 507 137 / 10000; -#X obj 507 68 metro 500; -#X obj 575 49 random 700; -#X obj 576 69 + 200; -#X obj 339 53 metro 500; -#X obj 408 30 random 700; -#X obj 408 54 + 200; -#X obj 339 107 / 1000; -#X obj 339 87 random 700; -#X obj 79 166 phasor~ 120; -#X obj 79 407 outlet~; -#X obj 339 -13 c.loadmess 1; -#X obj 226 41 c.patcherargs; -#X obj 226 18 bang; -#X obj 226 64 unpack s 0 0; -#X obj 78 -31 metro 500; -#X obj 147 -54 random 700; -#X obj 147 -30 + 200; -#X obj 78 3 random 700; -#X obj 79 22 / 100000; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 1 0 8 0; -#X connect 2 0 3 0; -#X connect 3 0 0 0; -#X connect 4 0 2 1; -#X connect 5 0 9 0; -#X connect 6 0 7 1; -#X connect 7 0 31 0; -#X connect 8 0 6 0; -#X connect 9 0 7 0; -#X connect 10 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 4 0; -#X connect 12 0 18 0; -#X connect 13 0 8 1; -#X connect 14 0 19 0; -#X connect 15 0 14 0; -#X connect 15 0 14 1; -#X connect 16 0 12 0; -#X connect 16 0 12 1; -#X connect 17 0 30 0; -#X connect 18 0 13 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 16 0; -#X connect 22 0 20 0; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 24 0 22 1; -#X connect 25 0 26 0; -#X connect 25 0 29 0; -#X connect 26 0 27 0; -#X connect 27 0 25 1; -#X connect 28 0 10 0; -#X connect 29 0 28 0; -#X connect 30 0 1 0; -#X connect 32 0 22 0; -#X connect 32 0 25 0; -#X connect 32 0 34 0; -#X connect 32 0 36 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 1 17 1; -#X connect 35 2 19 1; -#X connect 36 0 37 0; -#X connect 36 0 39 0; -#X connect 37 0 38 0; -#X connect 38 0 36 1; -#X connect 39 0 40 0; -#X connect 40 0 15 0; -#X restore 4 89 pd inst 100 2; -#N canvas 0 50 804 588 inst 0; -#X obj 79 291 cos~; -#X obj 79 190 -~ 0.5; -#X obj 79 245 *~; -#X obj 79 268 clip~ -0.5 0.5; -#X obj 339 182 +~ 1; -#X obj 79 314 +~ 1; -#X obj 489 296 cos~; -#X obj 79 372 *~; -#X obj 489 270 *~; -#X obj 79 337 *~ 0.5; -#X obj 339 133 osc~ 0.3; -#X obj 339 162 *~; -#X obj 507 196 *~; -#X obj 504 246 +~ 1; -#X obj 79 90 *~; -#X obj 79 43 osc~ 0.001; -#X obj 507 163 osc~ 0.015; -#X obj 79 140 +~ 100; -#X obj 504 223 *~ 1; -#X obj 79 117 *~ 2; -#X obj 507 107 random 100; -#X obj 507 137 / 10000; -#X obj 507 68 metro 500; -#X obj 575 49 random 700; -#X obj 576 69 + 200; -#X obj 339 53 metro 500; -#X obj 408 30 random 700; -#X obj 408 54 + 200; -#X obj 339 107 / 1000; -#X obj 339 87 random 700; -#X obj 79 166 phasor~ 120; -#X obj 79 407 outlet~; -#X obj 339 -13 c.loadmess 1; -#X obj 226 41 c.patcherargs; -#X obj 226 18 bang; -#X obj 226 64 unpack s 0 0; -#X obj 78 -31 metro 500; -#X obj 147 -54 random 700; -#X obj 147 -30 + 200; -#X obj 78 3 random 700; -#X obj 79 22 / 100000; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 1 0 8 0; -#X connect 2 0 3 0; -#X connect 3 0 0 0; -#X connect 4 0 2 1; -#X connect 5 0 9 0; -#X connect 6 0 7 1; -#X connect 7 0 31 0; -#X connect 8 0 6 0; -#X connect 9 0 7 0; -#X connect 10 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 4 0; -#X connect 12 0 18 0; -#X connect 13 0 8 1; -#X connect 14 0 19 0; -#X connect 15 0 14 0; -#X connect 15 0 14 1; -#X connect 16 0 12 0; -#X connect 16 0 12 1; -#X connect 17 0 30 0; -#X connect 18 0 13 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 16 0; -#X connect 22 0 20 0; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 24 0 22 1; -#X connect 25 0 26 0; -#X connect 25 0 29 0; -#X connect 26 0 27 0; -#X connect 27 0 25 1; -#X connect 28 0 10 0; -#X connect 29 0 28 0; -#X connect 30 0 1 0; -#X connect 32 0 22 0; -#X connect 32 0 25 0; -#X connect 32 0 34 0; -#X connect 32 0 36 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 1 17 1; -#X connect 35 2 19 1; -#X connect 36 0 37 0; -#X connect 36 0 39 0; -#X connect 37 0 38 0; -#X connect 38 0 36 1; -#X connect 39 0 40 0; -#X connect 40 0 15 0; -#X restore 64 109 pd inst 115 2.1; -#X obj 12 202 *~ 0.35; -#X obj 366 158 osc~ 0.3; -#X obj 366 63 metro 500; -#X msg 462 3 1; -#X obj 366 199 *~; -#X obj 173 202 *~ 0.15; -#X obj 117 200 *~ 0.3; -#X obj 166 260 *~; -#X obj 373 237 *~ 0.8; -#X obj 312 241 +~ 0.2; -#X obj 366 123 / 10000; -#X obj 366 101 random 3000; -#X obj 476 158 osc~ 0.3; -#X obj 476 63 metro 500; -#X obj 476 199 *~; -#X obj 483 237 *~ 0.8; -#X obj 422 241 +~ 0.2; -#X obj 476 123 / 10000; -#X obj 476 101 random 3000; -#X obj 115 260 *~; -#X obj 66 260 *~; -#X obj 15 260 *~; -#X obj 576 158 osc~ 0.3; -#X obj 576 63 metro 500; -#X obj 576 199 *~; -#X obj 583 237 *~ 0.8; -#X obj 522 241 +~ 0.2; -#X obj 576 123 / 10000; -#X obj 576 101 random 3000; -#X obj 686 158 osc~ 0.3; -#X obj 686 63 metro 500; -#X obj 686 199 *~; -#X obj 693 237 *~ 0.8; -#X obj 632 241 +~ 0.2; -#X obj 686 123 / 10000; -#X obj 686 101 random 3000; -#X obj 54 413 hip~; -#X obj 71 445 outlet~; -#X obj 308 27 loadbang; -#X connect 0 0 11 0; -#X connect 1 0 10 0; -#X connect 2 0 25 0; -#X connect 3 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 26 0; -#X connect 6 0 9 0; -#X connect 6 0 9 1; -#X connect 7 0 16 0; -#X connect 8 0 7 0; -#X connect 8 0 18 0; -#X connect 8 0 28 0; -#X connect 8 0 35 0; -#X connect 9 0 13 0; -#X connect 10 0 12 0; -#X connect 11 0 24 0; -#X connect 12 0 41 0; -#X connect 13 0 14 0; -#X connect 14 0 12 1; -#X connect 15 0 6 0; -#X connect 16 0 15 0; -#X connect 17 0 19 0; -#X connect 17 0 19 1; -#X connect 18 0 23 0; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 24 1; -#X connect 22 0 17 0; -#X connect 23 0 22 0; -#X connect 24 0 41 0; -#X connect 25 0 41 0; -#X connect 26 0 41 0; -#X connect 27 0 29 0; -#X connect 27 0 29 1; -#X connect 28 0 33 0; -#X connect 29 0 30 0; -#X connect 30 0 31 0; -#X connect 31 0 25 1; -#X connect 32 0 27 0; -#X connect 33 0 32 0; -#X connect 34 0 36 0; -#X connect 34 0 36 1; -#X connect 35 0 40 0; -#X connect 36 0 37 0; -#X connect 37 0 38 0; -#X connect 38 0 26 1; -#X connect 39 0 34 0; -#X connect 40 0 39 0; -#X connect 41 0 42 0; -#X connect 43 0 8 0; diff --git a/Package/Hoa/misc/hoa.thisprocexample2~.pd b/Package/Hoa/misc/hoa.thisprocexample2~.pd deleted file mode 100644 index 1097966..0000000 --- a/Package/Hoa/misc/hoa.thisprocexample2~.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 314 100 755 575 10; -#X obj 286 15 hoa.in extra 1; -#X obj 15 91 hoa.thisprocess~ This is a jazz example @artist Albert -Ayler @album My name is Albert Ayler @song Summertime; -#X obj 253 155 c.prepend set; -#X msg 253 296 This is a rock example; -#X obj 372 155 route artist album song; -#X obj 372 236 c.prepend set; -#X msg 372 276 Jimi Hendrix; -#X msg 417 256 Electric Ladyland; -#X msg 462 236 Voodoo Chile; -#X obj 417 216 c.prepend set; -#X obj 462 196 c.prepend set; -#X obj 507 176 c.prepend set; -#X text 548 216 done when complete.; -#X text 386 130 Attrs output; -#X text 266 130 Args output; -#X text 35 62 hoa.thisprocess~ with defaut arguments and attributes -; -#X obj 106 405 c.prepend set; -#X obj 229 431 c.prepend set; -#X msg 229 496; -#X obj 324 431 c.prepend set; -#X text 363 466 done when complete.; -#X text 243 380 Attrs output; -#X text 119 380 Args output; -#X obj 229 405 route song; -#X obj 20 341 hoa.thisprocess~ @song; -#X text 35 322 hoa.thisprocess~ without defaut arguments and attributes -; -#X text 393 359 Note that you should add the key of the attribute to -retreive it.; -#X msg 106 526; -#X msg 324 466 done; -#X msg 507 216 done; -#X text 9 270 Send a bang to output.; -#X obj 20 297 c.bang @size 17 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @bacolor 0 0 0 1; -#X obj 15 10 loadbang; -#X connect 1 2 2 0; -#X connect 1 3 4 0; -#X connect 2 0 3 0; -#X connect 4 0 5 0; -#X connect 4 1 9 0; -#X connect 4 2 10 0; -#X connect 4 3 11 0; -#X connect 5 0 6 0; -#X connect 9 0 7 0; -#X connect 10 0 8 0; -#X connect 11 0 29 0; -#X connect 16 0 27 0; -#X connect 17 0 18 0; -#X connect 19 0 28 0; -#X connect 23 0 17 0; -#X connect 23 1 19 0; -#X connect 24 2 16 0; -#X connect 24 3 23 0; -#X connect 31 0 24 0; -#X connect 32 0 1 0; diff --git a/Package/Hoa/misc/hoa.thisprocexample~.pd b/Package/Hoa/misc/hoa.thisprocexample~.pd deleted file mode 100644 index 1339289..0000000 --- a/Package/Hoa/misc/hoa.thisprocexample~.pd +++ /dev/null @@ -1,16 +0,0 @@ -#N canvas 97 252 420 291 10; -#X obj 26 97 c.prepend set; -#X obj 137 97 c.prepend set; -#X msg 26 124 1 0 0; -#X obj 297 14 hoa.in extra 1; -#X text 154 75 Hoa mode output; -#X text 31 75 Hoa args output; -#X msg 137 124 2d harmonics; -#X obj 24 181 hoa.process.display; -#X obj 26 50 hoa.thisprocess~, f 56; -#X obj 26 9 loadbang; -#X connect 0 0 2 0; -#X connect 1 0 6 0; -#X connect 8 0 0 0; -#X connect 8 1 1 0; -#X connect 9 0 8 0; diff --git a/Package/Hoa/misc/hoa.tri~.pd b/Package/Hoa/misc/hoa.tri~.pd deleted file mode 100644 index 7b7128c..0000000 --- a/Package/Hoa/misc/hoa.tri~.pd +++ /dev/null @@ -1,44 +0,0 @@ -#N canvas 511 271 839 493 10; -#X obj 140 101 *~ 2; -#X obj 140 169 clip~ 0 1; -#X obj 231 224 sig~ 1; -#X obj 139 140 -~ 1; -#X obj 210 169 clip~ 0 1; -#X obj 276 196 *~ -1; -#X obj 237 260 +~; -#X obj 139 28 inlet; -#X obj 199 28 inlet; -#X obj 262 394 outlet~; -#X obj 138 62 phasor~; -#X obj 300 302 *~ 1; -#X obj 348 190 -; -#X obj 364 142 t b f; -#X obj 257 329 +~ 0; -#X obj 378 55 loadbang; -#X obj 377 86 route lo hi; -#X obj 300 101 unpack s f; -#X obj 254 38 c.canvasargs 0 @lo -1 @hi 1; -#X connect 0 0 3 0; -#X connect 0 0 4 0; -#X connect 1 0 11 0; -#X connect 2 0 6 0; -#X connect 3 0 1 0; -#X connect 4 0 5 0; -#X connect 5 0 6 1; -#X connect 6 0 11 0; -#X connect 7 0 10 0; -#X connect 7 0 16 0; -#X connect 8 0 10 1; -#X connect 10 0 0 0; -#X connect 11 0 14 0; -#X connect 12 0 11 1; -#X connect 13 0 12 0; -#X connect 13 1 12 1; -#X connect 14 0 9 0; -#X connect 15 0 18 0; -#X connect 16 0 13 0; -#X connect 16 0 14 1; -#X connect 16 1 12 0; -#X connect 17 1 10 0; -#X connect 18 0 17 0; -#X connect 18 1 16 0; diff --git a/Package/Hoa/misc/hoa.tuto.gain~.pd b/Package/Hoa/misc/hoa.tuto.gain~.pd deleted file mode 100644 index fb397ef..0000000 --- a/Package/Hoa/misc/hoa.tuto.gain~.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 0 22 450 300 10; -#X obj 155 89 hoa.in~ extra 1; -#X obj 167 233 hoa.out~; -#X obj 273 96 hoa.in extra 2; -#X obj 179 169 *~ 0; -#X connect 0 0 3 0; -#X connect 2 0 3 1; -#X connect 3 0 1 0; diff --git a/Package/Hoa/misc/hoa.tuto.header.pd b/Package/Hoa/misc/hoa.tuto.header.pd deleted file mode 100644 index 0b80d92..0000000 --- a/Package/Hoa/misc/hoa.tuto.header.pd +++ /dev/null @@ -1,71 +0,0 @@ -#N canvas 65 82 738 485 10; -#X obj 45 1 cnv 15 315 40 empty \$0-hoa.header Tutorial_1 3 12 0 18 --212212 -1 0; -#X obj 438 444 s \$0-hoa.header; -#X obj 437 14 inlet; -#X obj 278 87 namecanvas \$0-r; -#X obj 472 395 s \$0-r; -#X msg 438 414 label \$1; -#X obj 404 317 list split 1; -#X obj 438 337 list split 1; -#X obj 3 3 c.blackboard @size 40 37 @fontname Helvetica @fontweight -normal @fontslant roman @fontsize 11 @receive (null) @send (null) @chalkmode -0 @bgcolor 0.802322 0.802322 0.802322 1 @bdcolor 0.802322 0.802322 -0.802322 1; -#X msg 7 140 clear \, image 2 1 logo.gif; -#X obj 472 367 c.prepend text 46 23; -#X obj 484 127 textfile; -#X obj 452 97 until; -#X obj 467 260 f 1; -#X obj 500 259 f 0; -#X obj 404 282 spigot 0; -#X obj 467 206 sel sa; -#X msg 505 97 rewind; -#X obj 404 156 list; -#X obj 500 234 bang; -#X obj 404 180 t list symbol; -#X obj 437 44 t b b b b s; -#X msg 211 86 1; -#X obj 202 158 f 0; -#X obj 234 161 + 1; -#X obj 202 122 metro 100; -#X obj 194 195 <= 1000; -#X obj 197 231 sel 1; -#X msg 210 265 0; -#X msg 484 67 read hoa.tuto.txt; -#X connect 2 0 21 0; -#X connect 5 0 1 0; -#X connect 6 1 7 0; -#X connect 6 1 5 0; -#X connect 7 1 10 0; -#X connect 9 0 8 0; -#X connect 10 0 4 0; -#X connect 11 0 18 0; -#X connect 11 1 12 1; -#X connect 12 0 11 0; -#X connect 13 0 15 1; -#X connect 14 0 15 1; -#X connect 15 0 6 0; -#X connect 16 0 13 0; -#X connect 16 1 19 0; -#X connect 17 0 11 0; -#X connect 18 0 20 0; -#X connect 19 0 14 0; -#X connect 20 0 15 0; -#X connect 20 1 16 0; -#X connect 21 0 22 0; -#X connect 21 1 12 0; -#X connect 21 2 17 0; -#X connect 21 3 29 0; -#X connect 21 4 16 1; -#X connect 22 0 25 0; -#X connect 23 0 24 0; -#X connect 23 0 26 0; -#X connect 24 0 23 1; -#X connect 25 0 23 0; -#X connect 25 0 9 0; -#X connect 26 0 27 0; -#X connect 27 0 28 0; -#X connect 28 0 25 0; -#X connect 29 0 11 0; -#X coords 0 -1 1 1 361 42 2 0 0; diff --git a/Package/Hoa/misc/hoa.tuto.txt b/Package/Hoa/misc/hoa.tuto.txt deleted file mode 100644 index e3b71f7..0000000 --- a/Package/Hoa/misc/hoa.tuto.txt +++ /dev/null @@ -1,12 +0,0 @@ -Tutorial_1.pd Tutorial\ 1 Introduction; -Tutorial_2.pd Tutorial\ 2 Space Representation; -Tutorial_3.pd Tutorial\ 3 Harmonics; -Tutorial_4.pd Tutorial\ 4 Planewaves; -Tutorial_5.pd Tutorial\ 5 Spatial Resolution; -Tutorial_6.pd Tutorial\ 6 Encoding; -Tutorial_7.pd Tutorial\ 7 Decoding; -Tutorial_8.pd Tutorial\ 8 Optimization; -Tutorial_9.pd Tutorial\ 9 Rotation; -Tutorial_10.pd Tutorial\ 10 Wider; -hoa.tools.2d.pd Tools\ 2D Order degree and channels numbering for 2D.; -hoa.tools.3d.pd Tools\ 3D Order degree and channels numbering for 3D.; \ No newline at end of file diff --git a/Package/Hoa/misc/hoa.tutos.txt b/Package/Hoa/misc/hoa.tutos.txt deleted file mode 100644 index e3b71f7..0000000 --- a/Package/Hoa/misc/hoa.tutos.txt +++ /dev/null @@ -1,12 +0,0 @@ -Tutorial_1.pd Tutorial\ 1 Introduction; -Tutorial_2.pd Tutorial\ 2 Space Representation; -Tutorial_3.pd Tutorial\ 3 Harmonics; -Tutorial_4.pd Tutorial\ 4 Planewaves; -Tutorial_5.pd Tutorial\ 5 Spatial Resolution; -Tutorial_6.pd Tutorial\ 6 Encoding; -Tutorial_7.pd Tutorial\ 7 Decoding; -Tutorial_8.pd Tutorial\ 8 Optimization; -Tutorial_9.pd Tutorial\ 9 Rotation; -Tutorial_10.pd Tutorial\ 10 Wider; -hoa.tools.2d.pd Tools\ 2D Order degree and channels numbering for 2D.; -hoa.tools.3d.pd Tools\ 3D Order degree and channels numbering for 3D.; \ No newline at end of file diff --git a/Package/Hoa/misc/logo.gif b/Package/Hoa/misc/logo.gif deleted file mode 100644 index 72a7fb1..0000000 Binary files a/Package/Hoa/misc/logo.gif and /dev/null differ diff --git a/Package/Hoa/patchers/Makefile.am b/Package/Hoa/patchers/Makefile.am deleted file mode 100644 index 41a49e2..0000000 --- a/Package/Hoa/patchers/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.librarypatchersdir=$(pkglibdir)/patchers - -dist_hoa.librarypatchers_DATA = \ -hoa.fx.2d.decoder~.pd \ -hoa.fx.2d.rotate~.pd \ -hoa.fx.convolve~.pd \ -hoa.fx.delay~.pd \ -hoa.fx.delay2~.pd \ -hoa.fx.freeverb~.pd \ -hoa.fx.gain~.pd \ -hoa.fx.mirror~.pd \ -hoa.fx.optim~.pd \ -hoa.fx.ringmod~.pd \ -hoa.fx.sum~.pd \ -hoa.fx.wider~.pd \ -hoa.syn.2d.encoder~.pd \ -hoa.syn.3d.encoder~.pd \ -hoa.syn.delay~.pd \ -hoa.syn.grain~.pd \ -hoa.syn.ringmod~.pd \ No newline at end of file diff --git a/Package/Hoa/tutorials/Makefile.am b/Package/Hoa/tutorials/Makefile.am deleted file mode 100644 index 72e3771..0000000 --- a/Package/Hoa/tutorials/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUFFIXES = .pd - -hoa.librarytutorialsdir=$(pkglibdir)/tutorials - -dist_hoa.librarytutorials_DATA = \ -hoa.tools.2d.pd \ -hoa.tools.3d.pd \ -Tutorial_1.pd \ -Tutorial_2.pd \ -Tutorial_3.pd \ -Tutorial_4.pd \ -Tutorial_5.pd \ -Tutorial_6.pd \ -Tutorial_7.pd \ -Tutorial_8.pd \ -Tutorial_9.pd \ -Tutorial_10.pd diff --git a/README.md b/README.md index 0b01714..6760958 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ __Important__ : The Hoa library needs the [Cream library](https://github.com/CIC ### Documentation : Helps and tutorials are availables in the Hoa folder of the help browser. - -### Compilation : + +### Compilation : ./autogen.sh (if needed) ./configure (useful options --with-pd=) @@ -29,16 +29,21 @@ Helps and tutorials are availables in the Hoa folder of the help br XCode, CodeBlock and Visual Studio projects are also available. -### Dependencies : +### Dependencies : [Hoa Library](https://github.com/CICM/HoaLibrary-Light "Hoa Library") & the [Cicm Wrapper](https://github.com/CICM/CicmWrapper "Cicm Wrapper"). ### Authors : -Pierre Guillot -Eliott Paris -Thomas Le Meur +##### HOA Libary : +- 2012: Pierre Guillot, Eliott Paris & Julien Colafrancesco +- 2012-2015: Pierre Guillot & Eliott Paris +- 2015: Pierre Guillot & Eliott Paris & Thomas Le Meur (Light version) +- 2016: Pierre Guillot & Eliott Paris (Light version) + +##### Pure Data implementation : +- 2013-2015: Pierre Guillot & Eliott Paris & Thomas Le Meur -### Licence : +### Licence : The HOA Library in under the GNU Public License. If you'd like to avoid the restrictions of the GPL and use Hoa Library for a closed-source product, you contact the CICM. diff --git a/Sources/Makefile.am b/Sources/Makefile.am deleted file mode 100644 index 4b8d48a..0000000 --- a/Sources/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -AUTOMAKE_OPTIONS = foreign -noinst_LTLIBRARIES = libHoapd.la - -libHoapd_la_CXXFLAGS = @PD_CPPFLAGS@ -O3 -fPIC -fpermissive -std=c++11 -pedantic -funroll-loops -libHoapd_la_LDFLAGS = -module -avoid-version -shared -shrext .@EXTENSION@ @PD_LDFLAGS@ -fPIC -libHoapd_la_LIBADD = - -libHoapd_la_SOURCES = hoa.decoder_tilde.cpp \ -hoa.encoder_tilde.cpp \ -hoa.exchanger_tilde.cpp \ -hoa.io.cpp \ -hoa.map_tilde.cpp \ -hoa.meter_gui_tilde.cpp \ -hoa.optim_tilde.cpp \ -hoa.process_tilde.cpp \ -hoa.projector_tilde.cpp \ -hoa.recomposer_tilde.cpp \ -hoa.rotate_tilde.cpp \ -hoa.scope_gui_tilde.cpp \ -hoa.space_gui.cpp \ -hoa.tools.cpp \ -hoa.wider_tilde.cpp \ -hoa.map_gui.cpp \ No newline at end of file diff --git a/Sources/hoa.decoder_tilde.cpp b/Sources/hoa.decoder_tilde.cpp deleted file mode 100644 index 9d251e0..0000000 --- a/Sources/hoa.decoder_tilde.cpp +++ /dev/null @@ -1,524 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_decoder -{ - t_edspobj f_obj; - Decoder* f_decoder; - t_sample* f_ins; - t_sample* f_outs; - t_symbol* f_mode; - void* f_attrs; -} t_hoa_decoder; - -static t_eclass *hoa_decoder_class; - -typedef struct _hoa_decoder_3d -{ - t_edspobj f_obj; - Decoder* f_decoder; - t_sample* f_ins; - t_sample* f_outs; - t_symbol* f_mode; - void* f_attrs; -} t_hoa_decoder_3d; - -static t_eclass *hoa_decoder_3d_class; - -static void *hoa_decoder_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - ulong arg = 4; - t_symbol* mode = gensym("regular"); - t_hoa_decoder *x = (t_hoa_decoder *)eobj_new(hoa_decoder_class); - t_binbuf *d = binbuf_via_atoms(argc,argv); - - if(x && d) - { - if(argc && argv && atom_gettype(argv) == A_LONG) - { - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - } - if(argc > 1 && argv+1 && atom_gettype(argv+1) == A_SYM) - mode = atom_getsym(argv+1); - - if(mode == gensym("irregular")) - { - arg = order * 2 + 1; - if(argc > 2 && argv+2 && atom_gettype(argv+2) == A_LONG) - { - arg = ulong(pd_clip_min(atom_getlong(argv+2), 1)); - } - x->f_decoder = new Decoder::Irregular(order, arg); - x->f_mode = mode; - } - else if(mode == gensym("binaural")) - { - x->f_decoder = new Decoder::Binaural(order); - x->f_mode = mode; - } - else - { - arg = order * 2 + 1; - if(argc > 2 && argv+2 && atom_gettype(argv+2) == A_LONG) - { - arg = pd_clip_min(atom_getlong(argv+2), 1); - } - x->f_decoder = new Decoder::Regular(order, arg); - x->f_mode = gensym("regular"); - } - - eobj_dspsetup(x, long(x->f_decoder->getNumberOfHarmonics()), long(x->f_decoder->getNumberOfPlanewaves())); - x->f_ins = Signal::alloc(x->f_decoder->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs= Signal::alloc(x->f_decoder->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - ebox_attrprocess_viabinbuf(x, d); - - return x; - } - - return NULL; -} - -static void hoa_decoder_perform_regular(t_hoa_decoder *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::Regular*>(x->f_decoder))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_decoder_perform_irregular(t_hoa_decoder *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::Irregular*>(x->f_decoder))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_decoder_perform_binaural(t_hoa_decoder *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - (static_cast::Binaural*>(x->f_decoder))->processBlock((const t_sample**)ins, outs); -} - -static void hoa_decoder_dsp(t_hoa_decoder *x, t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) -{ - x->f_decoder->computeRendering(ulong(maxvectorsize)); - if(x->f_mode == gensym("binaural")) - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_decoder_perform_binaural, 0, NULL); - } - else if(x->f_mode == gensym("irregular")) - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_decoder_perform_irregular, 0, NULL); - } - else - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_decoder_perform_regular, 0, NULL); - } -} - -static t_pd_err hoa_decoder_angles_set(t_hoa_decoder *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv) - { - int dspState = canvas_suspend_dsp(); - for(long i = 0; i < argc && i < (long)x->f_decoder->getNumberOfPlanewaves(); i++) - { - if(atom_gettype(argv+i) == A_FLOAT) - x->f_decoder->setPlanewaveAzimuth(ulong(i), atom_getfloat(argv+i) / 360. * HOA_2PI); - } - canvas_resume_dsp(dspState); - } - - return 0; -} - -static t_pd_err hoa_decoder_angles_get(t_hoa_decoder *x, void *attr, int* argc, t_atom **argv) -{ - *argc = long(x->f_decoder->getNumberOfPlanewaves()); - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - for(int i = 0; i < *argc; i++) - { - atom_setfloat(*argv+i, x->f_decoder->getPlanewaveAzimuth(ulong(i)) * 360. / HOA_2PI); - } - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static t_pd_err hoa_decoder_offset_set(t_hoa_decoder *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv && atom_gettype(argv) == A_FLOAT) - { - int dspState = canvas_suspend_dsp(); - x->f_decoder->setPlanewavesRotation(0., 0., atom_getfloat(argv) / 360. * HOA_2PI); - canvas_resume_dsp(dspState); - } - return 0; -} - -static t_pd_err hoa_decoder_offset_get(t_hoa_decoder *x, void *attr, int* argc, t_atom **argv) -{ - *argc = 1; - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - atom_setfloat(*argv, x->f_decoder->getPlanewavesRotationZ() * 360. / HOA_2PI); - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static t_pd_err hoa_decoder_crop_set(t_hoa_decoder *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv && atom_gettype(argv) == A_FLOAT) - { - if(x->f_mode == gensym("binaural")) - { - int dspState = canvas_suspend_dsp(); - (static_cast::Binaural*>(x->f_decoder))->setCropSize(atom_getfloat(argv)); - canvas_resume_dsp(dspState); - } - } - return 0; -} - -static t_pd_err hoa_decoder_crop_get(t_hoa_decoder *x, void *attr, int* argc, t_atom **argv) -{ - *argc = 1; - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - if(x->f_mode == gensym("binaural")) - { - atom_setfloat(*argv, (static_cast::Binaural*>(x->f_decoder))->getCropSize()); - } - else - { - atom_setfloat(*argv, 0); - } - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static void hoa_decoder_free(t_hoa_decoder *x) -{ - eobj_dspfree(x); - delete x->f_decoder; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e2d0x2edecoder_tilde(void) -{ - t_eclass* c; - - c = eclass_new("hoa.2d.decoder~", (method)hoa_decoder_new, (method)hoa_decoder_free, (short)sizeof(t_hoa_decoder), 0L, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_decoder_new, gensym("hoa.decoder~"), A_GIMME, 0); - eclass_dspinit(c); - eclass_addmethod(c, (method)hoa_decoder_dsp, "dsp", A_CANT, 0); - - CLASS_ATTR_DOUBLE_VARSIZE (c, "angles",0, t_hoa_decoder, f_attrs, f_attrs, HOA_MAX_PLANEWAVES); - CLASS_ATTR_ACCESSORS (c, "angles", hoa_decoder_angles_get, hoa_decoder_angles_set); - CLASS_ATTR_CATEGORY (c, "angles", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "angles", 0, "Angles of Loudspeakers"); - CLASS_ATTR_SAVE (c, "angles", 0); - - CLASS_ATTR_DOUBLE (c, "offset", 0, t_hoa_decoder, f_attrs); - CLASS_ATTR_ACCESSORS (c, "offset", hoa_decoder_offset_get, hoa_decoder_offset_set); - CLASS_ATTR_CATEGORY (c, "offset", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "offset", 0, "Offset of Channels"); - CLASS_ATTR_SAVE (c, "offset", 0); - - CLASS_ATTR_LONG (c, "crop", 0, t_hoa_decoder, f_attrs); - CLASS_ATTR_ACCESSORS (c, "crop", hoa_decoder_crop_get, hoa_decoder_crop_set); - CLASS_ATTR_CATEGORY (c, "crop", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "crop", 0, "Crop of the Responses"); - CLASS_ATTR_SAVE (c, "crop", 0); - - eclass_register(CLASS_OBJ, c); - hoa_decoder_class = c; -} - -static void *hoa_decoder_3d_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_symbol* mode = gensym("regular"); - ulong number_of_channels = 4; - t_hoa_decoder_3d *x = (t_hoa_decoder_3d *)eobj_new(hoa_decoder_3d_class); - t_binbuf *d = binbuf_via_atoms(argc,argv); - - if(x && d) - { - if(argc && argv && atom_gettype(argv) == A_LONG) - { - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 10)); - number_of_channels = (order+1)*(order+1); - } - if(argc > 1 && argv+1 && atom_gettype(argv+1) == A_SYM) - mode = atom_getsym(argv+1); - if(argc > 2 && argv+2 && atom_gettype(argv+2) == A_LONG) - number_of_channels = ulong(pd_clip_min(atom_getlong(argv+2), 1)); - - if(mode == gensym("irregular")) - { - x->f_decoder = new Decoder::Regular(order, number_of_channels); - x->f_mode = mode; - } - else if(mode == gensym("binaural")) - { - x->f_decoder = new Decoder::Binaural(order); - x->f_mode = mode; - } - else - { - x->f_decoder = new Decoder::Regular(order, number_of_channels); - x->f_mode = mode; - } - - eobj_dspsetup(x, long(x->f_decoder->getNumberOfHarmonics()), long(x->f_decoder->getNumberOfPlanewaves())); - x->f_ins = Signal::alloc(x->f_decoder->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs= Signal::alloc(x->f_decoder->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - ebox_attrprocess_viabinbuf(x, d); - - return x; - } - - return NULL; -} - -static void hoa_decoder_3d_perform_regular(t_hoa_decoder_3d *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::Regular*>(x->f_decoder))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_decoder_3d_perform_binaural(t_hoa_decoder_3d *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - (static_cast::Binaural*>(x->f_decoder))->processBlock((const t_sample**)ins, outs); -} - -static void hoa_decoder_3d_dsp(t_hoa_decoder_3d *x, t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) -{ - x->f_decoder->computeRendering(ulong(maxvectorsize)); - if(x->f_mode == gensym("binaural")) - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_decoder_3d_perform_binaural, 0, NULL); - } - else - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_decoder_3d_perform_regular, 0, NULL); - } -} - -static t_pd_err hoa_decoder_3d_angles_set(t_hoa_decoder_3d *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv) - { - int dspState = canvas_suspend_dsp(); - for(long i = 0, j = 0; j < argc && i < (long)x->f_decoder->getNumberOfPlanewaves() * 2; j++) - { - if(atom_gettype(argv+j) == A_FLOAT) - { - if(j%2) - { - x->f_decoder->setPlanewaveElevation(ulong(i), atom_getfloat(argv+j) / 360. * HOA_2PI); - i++; - } - else - { - x->f_decoder->setPlanewaveAzimuth(ulong(i), atom_getfloat(argv+j) / 360. * HOA_2PI); - } - - } - } - canvas_resume_dsp(dspState); - } - - return 0; -} - -static t_pd_err hoa_decoder_3d_angles_get(t_hoa_decoder_3d *x, void *attr, int* argc, t_atom **argv) -{ - *argc = int(x->f_decoder->getNumberOfPlanewaves() * 2); - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - for(ulong i = 0; i < x->f_decoder->getNumberOfPlanewaves(); i++) - { - atom_setfloat(*argv+i*2, x->f_decoder->getPlanewaveAzimuth(i) * 360. / HOA_2PI); - atom_setfloat(*argv+i*2+1, x->f_decoder->getPlanewaveElevation(i) * 360. / HOA_2PI); - } - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static t_pd_err hoa_decoder_3d_offset_set(t_hoa_decoder_3d *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv) - { - double ax, ay, az; - int dspState = canvas_suspend_dsp(); - if(atom_gettype(argv) == A_FLOAT) - ax = atom_getfloat(argv) / 360. * HOA_2PI; - else - ax = x->f_decoder->getPlanewavesRotationX(); - if(argc > 1 && atom_gettype(argv+1) == A_FLOAT) - ay = atom_getfloat(argv+1) / 360. * HOA_2PI; - else - ay = x->f_decoder->getPlanewavesRotationY(); - if(argc > 2 && atom_gettype(argv+2) == A_FLOAT) - az = atom_getfloat(argv+2) / 360. * HOA_2PI; - else - az = x->f_decoder->getPlanewavesRotationZ(); - x->f_decoder->setPlanewavesRotation(ax, ay, az); - canvas_resume_dsp(dspState); - } - return 0; -} - -static t_pd_err hoa_decoder_3d_offset_get(t_hoa_decoder_3d *x, void *attr, int* argc, t_atom **argv) -{ - *argc = 3; - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - atom_setfloat(*argv, x->f_decoder->getPlanewavesRotationX() / 360. * HOA_2PI); - atom_setfloat(*argv+1, x->f_decoder->getPlanewavesRotationY() / 360. * HOA_2PI); - atom_setfloat(*argv+2, x->f_decoder->getPlanewavesRotationZ() / 360. * HOA_2PI); - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static t_pd_err hoa_decoder_3d_crop_set(t_hoa_decoder_3d *x, void *attr, int argc, t_atom *argv) -{ - if(argc && argv && atom_gettype(argv) == A_FLOAT) - { - if(x->f_mode == gensym("binaural")) - { - int dspState = canvas_suspend_dsp(); - (static_cast::Binaural*>(x->f_decoder))->setCropSize(atom_getfloat(argv)); - canvas_resume_dsp(dspState); - } - } - return 0; -} - -static t_pd_err hoa_decoder_3d_crop_get(t_hoa_decoder_3d *x, void *attr, int* argc, t_atom **argv) -{ - *argc = 1; - *argv = (t_atom *)malloc(size_t(*argc) * sizeof(t_atom)); - if(*argc && *argv) - { - if(x->f_mode == gensym("binaural")) - { - atom_setfloat(*argv, (static_cast::Binaural*>(x->f_decoder))->getCropSize()); - } - else - { - atom_setfloat(*argv, 0); - } - } - else - { - *argc = 0; - *argv = NULL; - } - return 0; -} - -static void hoa_decoder_3d_free(t_hoa_decoder_3d *x) -{ - eobj_dspfree(x); - delete x->f_decoder; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e3d0x2edecoder_tilde(void) -{ - t_eclass* c = eclass_new("hoa.3d.decoder~", (method)hoa_decoder_3d_new, (method)hoa_decoder_3d_free, (short)sizeof(t_hoa_decoder_3d), 0L, A_GIMME, 0); - - eclass_dspinit(c); - eclass_addmethod(c, (method)hoa_decoder_3d_dsp, "dsp", A_CANT, 0); - - CLASS_ATTR_DOUBLE_VARSIZE (c, "angles",0, t_hoa_decoder_3d, f_attrs, f_attrs, HOA_MAX_PLANEWAVES*2); - CLASS_ATTR_ACCESSORS (c, "angles", hoa_decoder_3d_angles_get, hoa_decoder_3d_angles_set); - CLASS_ATTR_CATEGORY (c, "offset", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "angles", 0, "Angles of Loudspeakers"); - CLASS_ATTR_SAVE (c, "angles", 0); - - CLASS_ATTR_DOUBLE_ARRAY (c, "offset", 0, t_hoa_decoder_3d, f_attrs, 3); - CLASS_ATTR_ACCESSORS (c, "offset", hoa_decoder_3d_offset_get, hoa_decoder_3d_offset_set); - CLASS_ATTR_CATEGORY (c, "offset", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "offset", 0, "Offset of Channels"); - CLASS_ATTR_SAVE (c, "offset", 0); - - CLASS_ATTR_LONG (c, "crop", 0, t_hoa_decoder, f_attrs); - CLASS_ATTR_ACCESSORS (c, "crop", hoa_decoder_3d_crop_get, hoa_decoder_3d_crop_set); - CLASS_ATTR_CATEGORY (c, "crop", 0, "Planewaves"); - CLASS_ATTR_LABEL (c, "crop", 0, "Crop of the Responses"); - CLASS_ATTR_SAVE (c, "crop", 0); - - eclass_register(CLASS_OBJ, c); - hoa_decoder_3d_class = c; -} - diff --git a/Sources/hoa.encoder_tilde.cpp b/Sources/hoa.encoder_tilde.cpp deleted file mode 100644 index 5ba4633..0000000 --- a/Sources/hoa.encoder_tilde.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_encoder -{ - t_edspobj f_obj; - t_sample* f_signals; - Encoder::Basic* f_encoder; -} t_hoa_encoder; - -static t_eclass *hoa_encoder_class; - -typedef struct _hoa_encoder_3d -{ - t_edspobj f_obj; - t_sample* f_signals; - Encoder::Basic* f_encoder; -} t_hoa_encoder_3d; - -static t_eclass *hoa_encoder_3d_class; - -static void *hoa_encoder_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_encoder *x = (t_hoa_encoder *)eobj_new(hoa_encoder_class); - if (x) - { - if(atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - - x->f_encoder = new Encoder::Basic(order); - eobj_dspsetup(x, 2, long(x->f_encoder->getNumberOfHarmonics())); - - x->f_signals = Signal::alloc(x->f_encoder->getNumberOfHarmonics() * 8192); - return x; - } - return NULL; -} - -static void hoa_encoder_float(t_hoa_encoder *x, float f) -{ - x->f_encoder->setAzimuth(f); -} - -static void hoa_encoder_perform(t_hoa_encoder *x, t_object *dsp, t_sample **ins, long nins, t_sample **outs, long nouts, long sampleframes, long flag,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->setAzimuth(ins[1][i]); - x->f_encoder->process(ins[0]+i, x->f_signals + nouts * i); - } - for(long i = 0; i < nouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(nouts), outs[i], 1); - } -} - -static void hoa_encoder_perform_offset(t_hoa_encoder *x, t_object *dsp, t_sample **ins, long nins, t_sample **outs, long nouts, long sampleframes, long flag,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->process(ins[0]+i, x->f_signals + nouts * i); - } - for(long i = 0; i < nouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(nouts), outs[i], 1); - } -} - -static void hoa_encoder_dsp(t_hoa_encoder *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[1]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_perform, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_perform_offset, 0, NULL); -} - - -static void hoa_encoder_free(t_hoa_encoder *x) -{ - eobj_dspfree(x); - delete x->f_encoder; - Signal::free(x->f_signals); -} - -extern "C" void setup_hoa0x2e2d0x2eencoder_tilde(void) -{ - t_eclass *c; - c = eclass_new("hoa.2d.encoder~",(method)hoa_encoder_new,(method)hoa_encoder_free,sizeof(t_hoa_encoder), 0L, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_encoder_new, gensym("hoa.encoder~"), A_GIMME, 0); - - eclass_dspinit(c); - eclass_addmethod(c, (method)hoa_encoder_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_encoder_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_encoder_class = c; -} - -static void *hoa_encoder_3d_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_encoder_3d *x = (t_hoa_encoder_3d *)eobj_new(hoa_encoder_3d_class); - if(x) - { - if(atom_gettype(argv) == A_LONG) - order = pd_clip_minmax(atom_getlong(argv), 1, 10); - - x->f_encoder = new Encoder::Basic(order); - eobj_dspsetup(x, 3, long(x->f_encoder->getNumberOfHarmonics())); - - x->f_signals = Signal::alloc(x->f_encoder->getNumberOfHarmonics() * 8192); - } - return x; -} - -static void hoa_encoder_3d_float(t_hoa_encoder_3d *x, float f) -{ - if(eobj_getproxy(x) == 1) - x->f_encoder->setAzimuth(f); - else if(eobj_getproxy(x) == 2) - x->f_encoder->setElevation(f); -} - -static void hoa_encoder_3d_perform(t_hoa_encoder_3d *x, t_object *dsp, float **ins, long nins, float **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->setAzimuth(ins[1][i]); - x->f_encoder->setElevation(ins[2][i]); - x->f_encoder->process(ins[0]+i, x->f_signals + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_encoder_3d_perform_azimuth(t_hoa_encoder_3d *x, t_object *dsp, t_sample **ins, long nins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->setAzimuth(ins[1][i]); - x->f_encoder->process(ins[0]+i, x->f_signals + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_encoder_3d_perform_elevation(t_hoa_encoder_3d *x, t_object *dsp, t_sample **ins, long nins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->setElevation(ins[2][i]); - x->f_encoder->process(ins[0]+i, x->f_signals + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_encoder_3d_perform_offset(t_hoa_encoder_3d *x, t_object *dsp, t_sample **ins, long nins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < sampleframes; i++) - { - x->f_encoder->process(ins[0]+i, x->f_signals + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_signals+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_encoder_3d_dsp(t_hoa_encoder_3d *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[1] && count[2]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_3d_perform, 0, NULL); - else if(count[1] && !count[2]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_3d_perform_azimuth, 0, NULL); - else if(!count[1] && count[2]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_3d_perform_elevation, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_encoder_3d_perform_offset, 0, NULL); -} - - -static void hoa_encoder_3d_free(t_hoa_encoder_3d *x) -{ - eobj_dspfree(x); - delete x->f_encoder; - Signal::free(x->f_signals); -} - -extern "C" void setup_hoa0x2e3d0x2eencoder_tilde(void) -{ - t_eclass *c; - c = eclass_new("hoa.3d.encoder~",(method)hoa_encoder_3d_new,(method)hoa_encoder_3d_free,sizeof(t_hoa_encoder_3d), CLASS_NOINLET, A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_encoder_3d_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_encoder_3d_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_encoder_3d_class = c; -} diff --git a/Sources/hoa.io.cpp b/Sources/hoa.io.cpp deleted file mode 100644 index 566c82d..0000000 --- a/Sources/hoa.io.cpp +++ /dev/null @@ -1,358 +0,0 @@ -/* - // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. - // For information on usage and redistribution, and for a DISCLAIMER OF ALL - // WARRANTIES, see the file, "LICENSE.txt," in this distribution. - */ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -static t_eclass *hoa_in_class; -static t_eclass *hoa_out_class; -static t_eclass *hoa_intilde_class; -static t_eclass *hoa_outtilde_class; -static t_eclass *hoa_thisprocess_class; - -static void *hoa_out_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_out *x = NULL; - - x = (t_hoa_out *)eobj_new(hoa_out_class); - if(x) - { - inlet_new(&x->f_obj.o_obj, &x->f_obj.o_obj.ob_pd, 0, 0); - x->f_outlet = NULL; - x->f_extra = 0; - if(argc > 1 && argv && atom_gettype(argv) == A_SYM && atom_gettype(argv+1) == A_FLOAT && atom_getsym(argv) == gensym("extra") && atom_getfloat(argv+1) > 0) - { - x->f_extra = atom_getfloat(argv+1); - } - else if(argc && argv) - { - pd_error(x, "wrong argument."); - eobj_free(x); - return NULL; - } - } - - return x; -} - -static void hoa_out_bang(t_hoa_out *x) -{ - if(x->f_outlet) - outlet_bang(x->f_outlet); -} - -static void hoa_out_float(t_hoa_out *x, float f) -{ - if(x->f_outlet) - outlet_float(x->f_outlet, f); -} - -static void hoa_out_symbol(t_hoa_out *x, t_symbol* s) -{ - if(x->f_outlet) - outlet_symbol(x->f_outlet, s); -} - -static void hoa_out_list(t_hoa_out *x, t_symbol* s, int argc, t_atom* argv) -{ - if(x->f_outlet) - outlet_list(x->f_outlet, s, argc, argv); -} - -static void hoa_out_anything(t_hoa_out *x, t_symbol* s, int argc, t_atom* argv) -{ - if(x->f_outlet) - outlet_anything(x->f_outlet, s, argc, argv); -} - -extern "C" void setup_hoa0x2eout(void) -{ - t_eclass* c; - c = eclass_new("hoa.out", (method)hoa_out_new, (method)eobj_free, (short)sizeof(t_hoa_out), CLASS_NOINLET, A_GIMME, 0); - - - eclass_addmethod(c, (method)hoa_out_bang, "bang", A_CANT, 0); - eclass_addmethod(c, (method)hoa_out_float, "float", A_FLOAT, 0); - eclass_addmethod(c, (method)hoa_out_symbol, "symbol", A_SYMBOL,0); - eclass_addmethod(c, (method)hoa_out_list, "list", A_GIMME, 0); - eclass_addmethod(c, (method)hoa_out_anything, "anything", A_GIMME, 0); - - eclass_register(CLASS_OBJ, c); - hoa_out_class = c; -} - -static void *hoa_in_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_in *x = NULL; - - x = (t_hoa_in *)eobj_new(hoa_in_class); - if(x) - { - outlet_new(&x->f_obj.o_obj, 0); - x->f_extra = 0; - if(argc > 1 && argv && atom_gettype(argv) == A_SYM && atom_gettype(argv+1) == A_FLOAT && atom_getsym(argv) == gensym("extra") && atom_getfloat(argv+1) > 0) - { - x->f_extra = atom_getfloat(argv+1); - } - else if(argc && argv) - { - pd_error(x, "wrong argument."); - eobj_free(x); - return NULL; - } - } - - return x; -} - -static void hoa_in_free(t_hoa_in *x) -{ - eobj_free(x); -} - -static void hoa_in_bang(t_hoa_in *x) -{ - outlet_bang(x->f_obj.o_obj.ob_outlet); -} - -static void hoa_in_float(t_hoa_in *x, float f) -{ - outlet_float(x->f_obj.o_obj.ob_outlet, f); -} - -static void hoa_in_symbol(t_hoa_in *x, t_symbol* s) -{ - outlet_symbol(x->f_obj.o_obj.ob_outlet, s); -} - -static void hoa_in_list(t_hoa_in *x, t_symbol* s, int argc, t_atom* argv) -{ - outlet_list(x->f_obj.o_obj.ob_outlet, s, argc, argv); -} - -static void hoa_in_anything(t_hoa_in *x, t_symbol* s, int argc, t_atom* argv) -{ - outlet_anything(x->f_obj.o_obj.ob_outlet, s, argc, argv); -} - -extern "C" void setup_hoa0x2ein(void) -{ - t_eclass* c; - c = eclass_new("hoa.in", (method)hoa_in_new, (method)hoa_in_free, (short)sizeof(t_hoa_in), CLASS_NOINLET, A_GIMME, 0); - - - class_sethelpsymbol((t_class *)c, gensym("help/hoa.io")); - eclass_addmethod(c, (method)hoa_in_bang, "bang", A_CANT, 0); - eclass_addmethod(c, (method)hoa_in_float, "float", A_FLOAT, 0); - eclass_addmethod(c, (method)hoa_in_symbol, "symbol", A_SYMBOL,0); - eclass_addmethod(c, (method)hoa_in_list, "list", A_GIMME, 0); - eclass_addmethod(c, (method)hoa_in_anything, "anything", A_GIMME, 0); - - eclass_register(CLASS_OBJ, c); - hoa_in_class = c; -} - -static void *hoa_out_tilde_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_out_tilde *x = NULL; - - x = (t_hoa_out_tilde *)eobj_new(hoa_outtilde_class); - if(x) - { - eobj_dspsetup(x, 0, 0); - x->f_extra = 0; - x->f_signal = NULL; - if(argc > 1 && argv && atom_gettype(argv) == A_SYM && atom_gettype(argv+1) == A_FLOAT && atom_getsym(argv) == gensym("extra") && atom_getfloat(argv+1) > 0) - { - x->f_extra = atom_getfloat(argv+1); - } - else if(argc && argv) - { - pd_error(x, "wrong argument."); - eobj_free(x); - return NULL; - } - } - - return x; -} - -static void hoa_out_tilde_perform(t_hoa_out_tilde *x, t_object *dsp, float **inps, long ni, float **outs, long no, long sf, long f,void *up) -{ - Signal::add(ulong(sf), inps[0], x->f_signal); -} - -static void hoa_out_tilde_dsp(t_hoa_out_tilde *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(x->f_signal && count[0]) - { - object_method(dsp, gensym("dsp_add"), x, (method)hoa_out_tilde_perform, 0, NULL); - } -} - -extern "C" void setup_hoa0x2eout_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.out~", (method)hoa_out_tilde_new, (method)eobj_dspfree, (short)sizeof(t_hoa_out_tilde), 0, A_GIMME, 0); - - - eclass_dspinit(c); - eclass_addmethod(c, (method)hoa_out_tilde_dsp, "dsp", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_outtilde_class = c; - -} - -static void *hoa_intilde_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_in_tilde *x = NULL; - - x = (t_hoa_in_tilde *)eobj_new(hoa_intilde_class); - if(x) - { - eobj_dspsetup(x, 0, 1); - x->f_extra = 0; - x->f_signal = NULL; - if(argc > 1 && argv && atom_gettype(argv) == A_SYM && atom_gettype(argv+1) == A_FLOAT && atom_getsym(argv) == gensym("extra") && atom_getfloat(argv+1) > 0) - { - x->f_extra = atom_getfloat(argv+1); - } - else if(argc && argv) - { - pd_error(x, "wrong argument."); - eobj_free(x); - return NULL; - } - } - - return x; -} - -static void hoa_intilde_perform(t_hoa_in_tilde *x, t_object *dsp, float **ins, long ni, float **outs, long no, long sf, long f,void *up) -{ - memcpy(outs[0], x->f_signal, size_t(sf) * sizeof(t_sample)); -} - -static void hoa_intilde_perform_zero(t_hoa_in_tilde *x, t_object *dsp, float **ins, long ni, float **outs, long no, long sf, long f,void *up) -{ - memset(outs[0], 0, size_t(sf) * sizeof(t_sample)); -} - - -static void hoa_intilde_dsp(t_hoa_in_tilde *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(x->f_signal) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_intilde_perform, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_intilde_perform_zero, 0, NULL); -} - -extern "C" void setup_hoa0x2ein_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.in~", (method)hoa_intilde_new, (method)eobj_dspfree, (short)sizeof(t_hoa_in_tilde), CLASS_NOINLET, A_GIMME, 0); - - - eclass_dspinit(c); - eclass_addmethod(c, (method)hoa_intilde_dsp, "dsp", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_intilde_class = c; - -} - -static void *hoa_thisprocess_new(t_symbol *s, int argc, t_atom *argv) -{ - int i; - t_hoa_thisprocess *x = (t_hoa_thisprocess *)eobj_new(hoa_thisprocess_class); - if(x) - { - x->f_nit = 0; - x->f_argc = atoms_get_attributes_offset(argc, argv); - x->f_args = (t_atom *)calloc(size_t(x->f_argc), sizeof(t_atom)); - for(i = 0; i < x->f_argc; i++) - { - x->f_args[i] = argv[i]; - } - - x->f_n_attrs = atoms_get_keys(argc-x->f_argc, argv+x->f_argc, &x->f_attr_name); - for(i = 0; i < x->f_n_attrs; i++) - { - atoms_get_attribute(argc-x->f_argc, argv+x->f_argc, x->f_attr_name[i], &x->f_attr_size[i], &x->f_attr_vals[i]); - } - - x->f_out_hoa_args = listout(x); - x->f_out_hoa_mode = anythingout(x); - x->f_out_args = anythingout(x); - x->f_out_attrs = anythingout(x); - - x->f_time = clock_getsystime(); - } - - return (x); -} - -static void hoa_thisprocess_bang(t_hoa_thisprocess *x) -{ - char attr_char[MAXPDSTRING]; - for(int i = 0; i < x->f_n_attrs; i++) - { - sprintf(attr_char, "%s", x->f_attr_name[i]->s_name+1); - outlet_anything(x->f_out_attrs, gensym(attr_char), int(x->f_attr_size[i]), x->f_attr_vals[i]); - } - - if(x->f_argc && x->f_args) - outlet_list(x->f_out_args, &s_list, int(x->f_argc), x->f_args); - if(x->f_nit) - { - outlet_list(x->f_out_hoa_mode, &s_list, 2, x->f_hoa_mode); - outlet_list(x->f_out_hoa_args, &s_list, 3, x->f_hoa_args); - } - outlet_symbol(x->f_out_attrs, gensym("done")); -} - -static void hoa_thisprocess_click(t_hoa_thisprocess *x) -{ - if(clock_gettimesince(x->f_time) < 250.) - hoa_thisprocess_bang(x); - x->f_time = clock_getsystime(); -} - -static void hoa_thisprocess_free(t_hoa_thisprocess *x) -{ - int i; - if(x->f_argc && x->f_args) - { - free(x->f_args); - } - if(x->f_n_attrs) - { - for(i = 0; i < x->f_n_attrs; i++) - { - if(x->f_attr_size[i]) - free(x->f_attr_vals[i]); - } - } - free(x->f_attr_name); - eobj_free(x); -} - -extern "C" void setup_hoa0x2ethisprocess_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.thisprocess~", (method)hoa_thisprocess_new, (method)hoa_thisprocess_free, (short)sizeof(t_hoa_thisprocess), 0, A_GIMME, 0); - - - eclass_addmethod(c, (method)hoa_thisprocess_bang, "bang", A_CANT, 0); - eclass_addmethod(c, (method)hoa_thisprocess_click, "click", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_thisprocess_class = c; -} - - diff --git a/Sources/hoa.optim_tilde.cpp b/Sources/hoa.optim_tilde.cpp deleted file mode 100644 index 480947c..0000000 --- a/Sources/hoa.optim_tilde.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_optim -{ - t_edspobj f_obj; - Optim* f_optim; - t_sample* f_ins; - t_sample* f_outs; - t_symbol* f_mode; -} t_hoa_optim; - -static t_eclass *hoa_optim_class; - -typedef struct _hoa_optim_3d -{ - t_edspobj f_obj; - Optim* f_optim; - t_sample* f_ins; - t_sample* f_outs; - t_symbol* f_mode; -} t_hoa_optim_3d; - -static t_eclass *hoa_optim_3d_class; - -static void hoa_optim_perform_basic(t_hoa_optim *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_ins+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_perform_maxRe(t_hoa_optim *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::MaxRe *>(x->f_optim))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_perform_inPhase(t_hoa_optim *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::InPhase *>(x->f_optim))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_dsp(t_hoa_optim *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(x->f_mode == hoa_sym_basic) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_perform_basic, 0, NULL); - else if(x->f_mode == hoa_sym_maxRe) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_perform_maxRe, 0, NULL); - else if(x->f_mode == hoa_sym_inPhase) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_perform_inPhase, 0, NULL); -} - -static void hoa_optim_symbol(t_hoa_optim *x, t_symbol* s) -{ - if(s != x->f_mode && (s == hoa_sym_basic || s == hoa_sym_maxRe || s == hoa_sym_inPhase)) - { - int state = canvas_suspend_dsp(); - ulong order = x->f_optim->getDecompositionOrder(); - x->f_mode = s; - delete x->f_optim; - if(x->f_mode == hoa_sym_basic) - { - x->f_optim = new Optim::Basic(order); - } - else if(x->f_mode == hoa_sym_maxRe) - { - x->f_optim = new Optim::MaxRe(order); - } - else - { - x->f_optim = new Optim::InPhase(order); - } - canvas_resume_dsp(state); - } -} - -static void *hoa_optim_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_optim *x = (t_hoa_optim *)eobj_new(hoa_optim_class); - if(x) - { - x->f_mode = hoa_sym_inPhase; - if(atom_gettype(argv) == A_LONG) - { - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - } - if(argc > 1 && atom_gettype(argv+1) == A_SYM && atom_getsymbol(argv+1) == hoa_sym_maxRe) - { - x->f_mode = hoa_sym_maxRe; - x->f_optim = new Optim::MaxRe(order); - } - else if(argc > 1 && atom_gettype(argv+1) == A_SYM && atom_getsymbol(argv+1) == hoa_sym_basic) - { - x->f_mode = hoa_sym_basic; - x->f_optim = new Optim::Basic(order); - } - else - { - x->f_optim = new Optim::InPhase(order); - } - - eobj_dspsetup(x, long(x->f_optim->getNumberOfHarmonics()), long(x->f_optim->getNumberOfHarmonics())); - x->f_ins = Signal::alloc(x->f_optim->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_optim->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - - return x; - } - - return NULL; -} - -static void hoa_optim_free(t_hoa_optim *x) -{ - eobj_dspfree(x); - delete x->f_optim; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e2d0x2eoptim_tilde(void) -{ - t_eclass* c; - - c = eclass_new("hoa.2d.optim~", (method)hoa_optim_new, (method)hoa_optim_free, (short)sizeof(t_hoa_optim), 0L, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_optim_new, gensym("hoa.optim~"), A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_optim_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_optim_symbol, "symbol", A_SYM, 0); - - eclass_register(CLASS_OBJ, c); - hoa_optim_class = c; -} - -static void hoa_optim_3d_perform_basic(t_hoa_optim_3d *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_ins+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_3d_perform_maxRe(t_hoa_optim_3d *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::MaxRe *>(x->f_optim))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_3d_perform_inPhase(t_hoa_optim_3d *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - (static_cast::InPhase *>(x->f_optim))->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_optim_3d_dsp(t_hoa_optim_3d *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(x->f_mode == hoa_sym_basic) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_3d_perform_basic, 0, NULL); - else if(x->f_mode == hoa_sym_maxRe) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_3d_perform_maxRe, 0, NULL); - else if(x->f_mode == hoa_sym_inPhase) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_optim_3d_perform_inPhase, 0, NULL); -} - -static void hoa_optim_3d_symbol(t_hoa_optim_3d *x, t_symbol* s) -{ - if(s != x->f_mode && (s == hoa_sym_basic || s == hoa_sym_maxRe || s == hoa_sym_inPhase)) - { - int state = canvas_suspend_dsp(); - ulong order = x->f_optim->getDecompositionOrder(); - x->f_mode = s; - delete x->f_optim; - if(x->f_mode == hoa_sym_basic) - { - x->f_optim = new Optim::Basic(order); - } - else if(x->f_mode == hoa_sym_maxRe) - { - x->f_optim = new Optim::MaxRe(order); - } - else - { - x->f_optim = new Optim::InPhase(order); - } - canvas_resume_dsp(state); - } -} - -static void *hoa_optim_3d_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_optim_3d *x = (t_hoa_optim_3d *)eobj_new(hoa_optim_3d_class); - t_binbuf *d = binbuf_via_atoms(argc,argv); - - if(x && d) - { - x->f_mode = hoa_sym_inPhase; - if(atom_gettype(argv) == A_LONG) - { - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 10)); - } - if(argc > 1 && atom_gettype(argv+1) == A_SYM && atom_getsymbol(argv+1) == hoa_sym_maxRe) - { - x->f_mode = hoa_sym_maxRe; - x->f_optim = new Optim::MaxRe(order); - } - else if(argc > 1 && atom_gettype(argv+1) == A_SYM && atom_getsymbol(argv+1) == hoa_sym_basic) - { - x->f_mode = hoa_sym_basic; - x->f_optim = new Optim::Basic(order); - } - else - { - x->f_optim = new Optim::InPhase(order); - } - - eobj_dspsetup(x, long(x->f_optim->getNumberOfHarmonics()), long(x->f_optim->getNumberOfHarmonics())); - x->f_ins = Signal::alloc(x->f_optim->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_optim->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - - return x; - } - - return NULL; -} - -static void hoa_optim_3d_free(t_hoa_optim_3d *x) -{ - eobj_dspfree(x); - delete x->f_optim; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e3d0x2eoptim_tilde(void) -{ - t_eclass *c; - c = eclass_new("hoa.3d.optim~",(method)hoa_optim_3d_new,(method)hoa_optim_3d_free,sizeof(t_hoa_optim_3d), 0L, A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_optim_3d_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_optim_3d_symbol, "symbol", A_SYM, 0); - - eclass_register(CLASS_OBJ, c); - hoa_optim_3d_class = c; -} - diff --git a/Sources/hoa.process_tilde.cpp b/Sources/hoa.process_tilde.cpp deleted file mode 100644 index 7cc44fd..0000000 --- a/Sources/hoa.process_tilde.cpp +++ /dev/null @@ -1,998 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -class ProcessInstance -{ - t_canvas* m_canvas; - vector m_thisprocesses; - vector m_ins; - vector m_ins_extra; - vector m_ins_sig; - vector m_ins_extra_sig; - vector m_outs; - vector m_outs_extra; - vector m_outs_sig; - vector m_outs_extra_sig; - -private: - - void getThisProcess(t_canvas* canvas) - { - for(t_gobj *y = canvas->gl_list; y; y = y->g_next) - { - if(eobj_getclassname(y) == hoa_sym_canvas) - { - getThisProcess((t_canvas *)y); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_thisprocess) - { - m_thisprocesses.push_back((t_hoa_thisprocess*)y); - } - } - } - - void getIos(t_canvas* canvas) - { - for(t_gobj *y = canvas->gl_list; y; y = y->g_next) - { - if(eobj_getclassname(y) == hoa_sym_canvas) - { - getIos((t_canvas *)y); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_thisprocess) - { - m_thisprocesses.push_back((t_hoa_thisprocess*)y); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_in) - { - t_hoa_in* inlet = (t_hoa_in *)y; - if(inlet->f_extra) - m_ins_extra.push_back(inlet); - else - m_ins.push_back(inlet); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_out) - { - t_hoa_out* outlet = (t_hoa_out *)y; - if(outlet->f_extra) - m_outs_extra.push_back(outlet); - else - m_outs.push_back(outlet); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_in_tilde) - { - t_hoa_in_tilde* inlet_sig = (t_hoa_in_tilde *)y; - if(inlet_sig->f_extra) - m_ins_extra_sig.push_back(inlet_sig); - else - m_ins_sig.push_back(inlet_sig); - } - else if(eobj_getclassname(y) == hoa_sym_hoa_out_tilde) - { - t_hoa_out_tilde* outlet_sig = (t_hoa_out_tilde *)y; - if(outlet_sig->f_extra) - m_outs_extra_sig.push_back(outlet_sig); - else - m_outs_sig.push_back(outlet_sig); - } - } - } - - static void thisprocess_init(t_hoa_thisprocess* thisprocess, int argc, t_atom* argv, int nattrs, t_atom* attrs) - { - if(thisprocess) - { - if(argc > 0 && argv) - { - if(thisprocess->f_argc < argc) - { - if(!thisprocess->f_argc && !thisprocess->f_args) - { - free(thisprocess->f_args); - } - thisprocess->f_argc = argc; - thisprocess->f_args = (t_atom *)malloc((size_t)argc * sizeof(t_atom)); - } - memcpy(thisprocess->f_args, argv, (size_t)argc * sizeof(t_atom)); - } - if(nattrs && attrs) - { - for(int i = 0; i < thisprocess->f_n_attrs; i++) - { - if(atoms_has_attribute(nattrs, attrs, thisprocess->f_attr_name[i])) - { - free(thisprocess->f_attr_vals[i]); - thisprocess->f_attr_size[i] = 0; - atoms_get_attribute(nattrs, attrs, thisprocess->f_attr_name[i], - &thisprocess->f_attr_size[i], - &thisprocess->f_attr_vals[i]); - } - } - } - thisprocess->f_nit = 1; - } - } - -public: - ProcessInstance(t_canvas* parent, - t_symbol* name, - t_symbol* domain, - t_symbol* dimension, - long ac1, long ac2, long ac3, - long argc, - t_atom* argv, - long nattr, - t_atom* attrs) - { - m_canvas = NULL; - t_atom av[6]; - atom_setlong(av, 1); - atom_setlong(av+1, 1); - atom_setsym(av+2, name); - atom_setfloat(av+3, ac1); - atom_setfloat(av+4, ac2); - atom_setfloat(av+5, ac3); - pd_typedmess((t_pd *)parent, hoa_sym_obj, domain == hoa_sym_harmonics ? 6 : 5, av); - for(t_gobj* z = parent->gl_list; z; z = z->g_next) - { - if(eobj_getclassname(z) == hoa_sym_canvas) - { - t_binbuf* b = ((t_canvas *)z)->gl_obj.te_binbuf; - if(b) - { - int natom = binbuf_getnatom(b); - t_atom* vec = binbuf_getvec(b); - if(natom > (domain == hoa_sym_harmonics ? 3 : 2) && vec) - { - if(atom_getsym(vec) == name && - atom_getlong(vec+1) == ac1 && - atom_getlong(vec+2) == ac2 && - (domain == hoa_sym_planewaves || atom_getlong(vec+3) == ac3)) - { - m_canvas = (t_canvas *)z; - } - } - } - } - } - if(m_canvas) - { - getThisProcess(m_canvas); - for(size_t i = 0; i < m_thisprocesses.size(); i++) - { - atom_setsym(m_thisprocesses[i]->f_hoa_mode, dimension); - atom_setsym(m_thisprocesses[i]->f_hoa_mode+1, domain); - atom_setfloat(m_thisprocesses[i]->f_hoa_args, ac1); - atom_setfloat(m_thisprocesses[i]->f_hoa_args+1, ac2); - atom_setfloat(m_thisprocesses[i]->f_hoa_args+2, ac3); - thisprocess_init(m_thisprocesses[i], argc, argv, nattr, attrs); - } - canvas_loadbang(m_canvas); - getIos(m_canvas); - } - } - - ~ProcessInstance() - { - m_thisprocesses.clear(); - m_ins.clear(); - m_ins_extra.clear(); - m_ins_sig.clear(); - m_ins_extra_sig.clear(); - m_outs.clear(); - m_outs_extra.clear(); - m_outs_sig.clear(); - m_outs_extra_sig.clear(); - } - - inline void show() const noexcept - { - if(m_canvas) - canvas_vis(m_canvas, 1); - } - - inline void sendBang() const noexcept - { - for(ulong i = 0; i < m_ins.size(); i++) - { - pd_bang((t_pd *)m_ins[i]); - } - } - - inline void sendBang(ulong extra) const noexcept - { - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) == extra) - { - pd_bang((t_pd *)m_ins_extra[i]); - } - } - } - - inline void sendFloat(const float f) const noexcept - { - for(ulong i = 0; i < m_ins.size(); i++) - { - pd_float((t_pd *)m_ins[i], f); - } - } - - inline void sendFloat(ulong extra, const float f) const noexcept - { - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) == extra) - { - pd_float((t_pd *)m_ins_extra[i], f); - } - } - } - - inline void sendSymbol(t_symbol* s) const noexcept - { - for(ulong i = 0; i < m_ins.size(); i++) - { - pd_symbol((t_pd *)m_ins[i], s); - } - } - - inline void sendSymbol(ulong extra, t_symbol* s) const noexcept - { - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) == extra) - { - pd_symbol((t_pd *)m_ins_extra[i], s); - } - } - } - - inline void sendList(t_symbol* s, int argc, t_atom* argv) const noexcept - { - for(ulong i = 0; i < m_ins.size(); i++) - { - pd_list((t_pd *)m_ins[i], s, argc, argv); - } - } - - inline void sendList(ulong extra, t_symbol* s, int argc, t_atom* argv) const noexcept - { - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) == extra) - { - pd_list((t_pd *)m_ins_extra[i], s, argc, argv); - } - } - } - - inline void sendAnything(t_symbol* s, int argc, t_atom* argv) const noexcept - { - for(ulong i = 0; i < m_ins.size(); i++) - { - pd_typedmess((t_pd *)m_ins[i], s, argc, argv); - } - } - - inline void sendAnything(ulong extra, t_symbol* s, int argc, t_atom* argv) const noexcept - { - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) == extra) - { - pd_typedmess((t_pd *)m_ins_extra[i], s, argc, argv); - } - } - } - - inline bool hasNormalInputs() const - { - return !m_ins.empty(); - } - - inline bool hasNormalSignalInputs() const - { - return !m_ins_sig.empty(); - } - - inline ulong getMaximumInputExtraIndex() const - { - ulong n = 0ul; - for(ulong i = 0; i < m_ins_extra.size(); i++) - { - if(ulong(m_ins_extra[i]->f_extra) > n) - n = ulong(m_ins_extra[i]->f_extra); - } - return n; - } - - inline ulong getMaximumSignalInputExtraIndex() const - { - ulong n = 0ul; - for(ulong i = 0; i < m_ins_extra_sig.size(); i++) - { - if(ulong(m_ins_extra_sig[i]->f_extra) > n) - n = ulong(m_ins_extra_sig[i]->f_extra); - } - return n; - } - - inline bool hasNormalOutputs() const - { - return !m_outs.empty(); - } - - inline bool hasNormalSignalOutputs() const - { - return !m_outs_sig.empty(); - } - - inline ulong getMaximumOutputExtraIndex() const - { - ulong n = 0ul; - for(ulong i = 0; i < m_outs_extra.size(); i++) - { - if(ulong(m_outs_extra[i]->f_extra) > n) - n = ulong(m_outs_extra[i]->f_extra); - } - return n; - } - - inline ulong getMaximumSignalOutputExtraIndex() const - { - ulong n = 0ul; - for(ulong i = 0; i < m_outs_extra_sig.size(); i++) - { - if(ulong(m_outs_extra_sig[i]->f_extra) > n) - n = ulong(m_outs_extra_sig[i]->f_extra); - } - return n; - } - - inline void setNomalOutlet(t_outlet* outlet) - { - for(ulong i = 0; i < m_outs.size(); i++) - { - m_outs[i]->f_outlet = outlet; - } - } - - inline void setExtraOutlet(t_outlet* outlet, ulong index) - { - for(ulong i = 0; i < m_outs_extra.size(); i++) - { - if(ulong(m_outs_extra[i]->f_extra) == index) - { - m_outs_extra[i]->f_outlet = outlet; - } - } - } - - bool prepareDsp(t_sample* in, vector& ixtra, t_sample* out, vector& oxtra) - { - if(hasNormalSignalInputs()) - { - if(!in) - { - bug("process don't have input signal."); - return true; - } - for(size_t i = 0; i < m_ins_sig.size(); i++) - { - m_ins_sig[i]->f_signal = in; - } - } - for(size_t i = 0; i < m_ins_extra_sig.size(); i++) - { - if(ulong(m_ins_extra_sig[i]->f_extra) > ixtra.size() || !ixtra[size_t(m_ins_extra_sig[i]->f_extra-1)]) - { - bug("process don't have input signal extra %i.", m_ins_extra_sig[i]->f_extra); - return true; - } - m_ins_extra_sig[i]->f_signal = ixtra[size_t(m_ins_extra_sig[i]->f_extra-1)]; - } - if(hasNormalSignalOutputs()) - { - if(!out) - { - bug("process don't have output signal."); - return true; - } - for(size_t i = 0; i < m_outs_sig.size(); i++) - { - m_outs_sig[i]->f_signal = out; - } - } - for(size_t i = 0; i < m_outs_extra_sig.size(); i++) - { - if(ulong(m_outs_extra_sig[i]->f_extra) > oxtra.size() || !oxtra[size_t(m_outs_extra_sig[i]->f_extra-1)]) - { - bug("process don't have output signal extra %i.", m_outs_extra_sig[i]->f_extra); - return true; - } - m_outs_extra_sig[i]->f_signal = oxtra[size_t(m_outs_extra_sig[i]->f_extra-1)]; - } - return false; - } -}; - -typedef struct _hoa_process -{ - t_edspobj f_obj; - t_canvas* f_global; - t_object* f_switch; - t_symbol* f_domain; - t_symbol* f_dimension; - vectorf_instances; - long f_target; - vector f_outlets_signals; - bool f_have_ins; - - static const long target_all = -1; - -} t_hoa_process; - -static t_eclass *hoa_process_class; - -static void hoa_process_perform(t_hoa_process *x, t_object *dsp, float **inps, long ni, float **outs, long nouts, long sampleframe, long f,void *up) -{ - pd_bang((t_pd *)x->f_switch); - for(int i = 0; i < nouts; i++) - { - memcpy(outs[i], x->f_outlets_signals[size_t(i)], size_t(sampleframe) * sizeof(t_sample)); - memset(x->f_outlets_signals[size_t(i)], 0, size_t(sampleframe) * sizeof(t_sample)); - } -} - - -static void hoa_process_dsp(t_hoa_process *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(!x->f_global && !x->f_switch) - { - pd_error(x, "process~ not initialized can't compile DSP chain."); - return; - } - vector ins; - vector ixtra; - vector outs; - vector oxtra; - bool have_sig_ins = false; - bool have_sig_outs = false; - ulong max_sig_ins_extra = 0ul; - ulong max_sig_outs_extra = 0ul; - - for(ulong i = 0; i < x->f_outlets_signals.size(); i++) - { - memset(x->f_outlets_signals[i], 0, HOA_MAXBLKSIZE * sizeof(t_sample)); - } - for(ulong i = 0; i < x->f_instances.size(); i++) - { - have_sig_ins = max(have_sig_ins, x->f_instances[i]->hasNormalSignalInputs()); - have_sig_outs = max(have_sig_outs, x->f_instances[i]->hasNormalSignalOutputs()); - max_sig_ins_extra = max(max_sig_ins_extra, x->f_instances[i]->getMaximumSignalInputExtraIndex()); - max_sig_outs_extra = max(max_sig_outs_extra, x->f_instances[i]->getMaximumSignalOutputExtraIndex()); - } - if(have_sig_ins) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - ins.push_back(eobj_getsignalinput(x, long(i))); - } - for(ulong i = 0; i < max_sig_ins_extra; i++) - { - ixtra.push_back(eobj_getsignalinput(x, long(i+x->f_instances.size()))); - } - } - else - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - ins.push_back(NULL); - } - for(ulong i = 0; i < max_sig_ins_extra; i++) - { - ixtra.push_back(eobj_getsignalinput(x, long(i))); - } - } - if(have_sig_outs) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - outs.push_back(x->f_outlets_signals[i]); - } - for(ulong i = 0; i < max_sig_outs_extra; i++) - { - oxtra.push_back(x->f_outlets_signals[i+x->f_instances.size()]); - } - } - else - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - outs.push_back(NULL); - } - for(ulong i = 0; i < max_sig_outs_extra; i++) - { - oxtra.push_back(x->f_outlets_signals[i]); - } - } - for(ulong i = 0; i < x->f_instances.size(); i++) - { - if(!x->f_instances[i] || x->f_instances[i]->prepareDsp(ins[i], ixtra, outs[i], oxtra)) - { - pd_error(x, "hoa.process~ : Error while compiling the dsp chain."); - return; - } - } - mess0((t_pd *)x->f_global, gensym("dsp")); - object_method(dsp, gensym("dsp_add"), x, (method)hoa_process_perform, 0, NULL); -} - -static void hoa_process_click(t_hoa_process *x) -{ - if(!x->f_instances.empty()) - x->f_instances[0]->show(); -} - -static void hoa_process_open(t_hoa_process *x, t_symbol* s, int argc, t_atom* argv) -{ - if(argc && argv) - { - if(atom_gettype(argv) == A_SYM && atom_getsym(argv) == hoa_sym_all) - { - for(size_t i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->show(); - } - } - else if(x->f_dimension == hoa_sym_2d && x->f_domain == hoa_sym_harmonics) - { - if(argc > 1 && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT) - { - x->f_instances[ulong(pd_clip_minmax(Harmonic::getIndex(atom_getfloat(argv), atom_getfloat(argv+1)), 0, x->f_instances.size() - 1))]->show(); - } - else if(atom_gettype(argv) == A_FLOAT) - { - x->f_instances[ulong(pd_clip_minmax(Harmonic::getIndex(abs(atom_getfloat(argv)), atom_getfloat(argv)), 0, x->f_instances.size() - 1))]->show(); - } - } - else if(x->f_dimension == hoa_sym_3d && x->f_domain == hoa_sym_harmonics) - { - if(argc > 1 && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT) - { - x->f_instances[ulong(pd_clip_minmax(Harmonic::getIndex(atom_getfloat(argv), atom_getfloat(argv+1)), 0, x->f_instances.size() - 1))]->show(); - } - } - else if(x->f_domain == hoa_sym_planewaves && atom_gettype(argv) == A_FLOAT) - { - x->f_instances[ulong(pd_clip_minmax(atom_getfloat(argv) - 1, 0, x->f_instances.size() - 1))]->show(); - } - } -} - -static void hoa_process_target(t_hoa_process *x, t_symbol* s, int argc, t_atom* argv) -{ - if(argc && argv) - { - if(atom_gettype(argv) == A_SYM && atom_getsym(argv) == hoa_sym_all) - { - x->f_target = _hoa_process::target_all; - } - else if(x->f_dimension == hoa_sym_2d && x->f_domain == hoa_sym_harmonics) - { - if(argc > 1 && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT) - { - x->f_target = long(pd_clip_minmax(Harmonic::getIndex(atom_getfloat(argv), atom_getfloat(argv+1)), 0, x->f_instances.size() - 1)); - } - else if(atom_gettype(argv) == A_FLOAT) - { - x->f_target = long(pd_clip_minmax(Harmonic::getIndex(abs(atom_getfloat(argv)), atom_getfloat(argv)), 0, x->f_instances.size() - 1)); - } - } - else if(x->f_dimension == hoa_sym_3d && x->f_domain == hoa_sym_harmonics) - { - if(argc > 1 && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT) - { - x->f_target = long(pd_clip_minmax(Harmonic::getIndex(atom_getfloat(argv), atom_getfloat(argv+1)), 0, x->f_instances.size() - 1)); - } - } - else if(x->f_domain == hoa_sym_planewaves && atom_gettype(argv) == A_FLOAT) - { - x->f_target = long(pd_clip_minmax(atom_getfloat(argv) - 1, 0, x->f_instances.size() - 1)); - } - } -} - -static void hoa_process_bang(t_hoa_process *x) -{ - ulong index = ulong(eobj_getproxy(x)); - if(x->f_have_ins && ulong(index) < x->f_instances.size()) - { - x->f_instances[index]->sendBang(); - } - else - { - ulong extra = x->f_have_ins ? index - x->f_instances.size() + 1 : index + 1; - if(x->f_target == _hoa_process::target_all) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->sendBang(extra); - } - } - else - { - x->f_instances[ulong(x->f_target)]->sendBang(extra); - } - } -} - -static void hoa_process_float(t_hoa_process *x, float f) -{ - ulong index = ulong(eobj_getproxy(x)); - if(x->f_have_ins && ulong(index) < x->f_instances.size()) - { - x->f_instances[index]->sendFloat(f); - } - else - { - ulong extra = x->f_have_ins ? index - x->f_instances.size() + 1 : index + 1; - if(x->f_target == _hoa_process::target_all) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->sendFloat(extra, f); - } - } - else - { - x->f_instances[ulong(x->f_target)]->sendFloat(extra, f); - } - } -} - -static void hoa_process_symbol(t_hoa_process *x, t_symbol* s) -{ - ulong index = ulong(eobj_getproxy(x)); - if(x->f_have_ins && ulong(index) < x->f_instances.size()) - { - x->f_instances[index]->sendSymbol(s); - } - else - { - ulong extra = x->f_have_ins ? index - x->f_instances.size() + 1 : index + 1; - if(x->f_target == _hoa_process::target_all) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->sendSymbol(extra, s); - } - } - else - { - x->f_instances[ulong(x->f_target)]->sendSymbol(extra, s); - } - } -} - -static void hoa_process_list(t_hoa_process *x, t_symbol* s, int argc, t_atom* argv) -{ - ulong index = ulong(eobj_getproxy(x)); - if(x->f_have_ins && ulong(index) < x->f_instances.size()) - { - x->f_instances[index]->sendList(s, argc, argv); - } - else - { - ulong extra = x->f_have_ins ? index - x->f_instances.size() + 1 : index + 1; - if(x->f_target == _hoa_process::target_all) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->sendList(extra, s, argc, argv); - } - } - else - { - x->f_instances[ulong(x->f_target)]->sendList(extra, s, argc, argv); - } - } -} - -static void hoa_process_anything(t_hoa_process *x, t_symbol* s, int argc, t_atom* argv) -{ - ulong index = ulong(eobj_getproxy(x)); - if(x->f_have_ins && ulong(index) < x->f_instances.size()) - { - x->f_instances[index]->sendAnything(s, argc, argv); - } - else - { - ulong extra = x->f_have_ins ? index - x->f_instances.size() + 1 : index + 1; - if(x->f_target == _hoa_process::target_all) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i]->sendAnything(extra, s, argc, argv); - } - } - else - { - x->f_instances[ulong(x->f_target)]->sendAnything(extra, s, argc, argv); - } - } -} - -static void hoa_process_free(t_hoa_process *x) -{ - int state = canvas_suspend_dsp(); - for(ulong i = 0 ; i < x->f_outlets_signals.size(); i++) - { - if(x->f_outlets_signals[i]) - { - Signal::free(x->f_outlets_signals[i]); - } - } - x->f_outlets_signals.clear(); - for(ulong i = 0; i < x->f_instances.size(); i++) - { - if(x->f_instances[i]) - { - delete x->f_instances[i]; - } - } - if(x->f_global && x->f_switch) - { - canvas_free(x->f_global); - } - x->f_instances.clear(); - eobj_dspfree(x); - canvas_resume_dsp(state); -} - -static void *hoa_process_new(t_symbol *s, int argc, t_atom *argv) -{ - if(argc < 2 || atom_gettype(argv) != A_LONG || atom_gettype(argv+1) != A_SYM) - { - error("%s needs at least 2 arguments : 1 integer for the order of decomposition or number of planewaves, 1 symbol for the patch.", s->s_name); - return NULL; - } - t_hoa_process *x = (t_hoa_process *)eobj_new(hoa_process_class); - if(x) - { - x->f_global = NULL; - x->f_switch = NULL; - x->f_target = _hoa_process::target_all; - x->f_global = canvas_new(NULL, gensym(""), 0, NULL); - if(x->f_global) - { - pd_popsym((t_pd *)x->f_global); - canvas_vis(x->f_global, 0); - t_atom av[3]; - atom_setlong(av, 10); atom_setlong(av+1, 10);atom_setsym(av+2, gensym("switch~")); - pd_typedmess((t_pd *)x->f_global, gensym("obj"), 3, av); - if(x->f_global->gl_list->g_pd->c_name == gensym("block~")) - { - x->f_switch = (t_object *)x->f_global->gl_list; - } - if(x->f_switch) - { - long narg = pd_clip_min(atoms_get_attributes_offset(argc - 3, argv + 3), 0); - t_atom* args = argv + 3; - long natr = pd_clip_min(argc - narg - 3, 0); - t_atom* atrs = argv + 3 + narg; - if((s == hoa_sym_hoa_2d_process || s == hoa_sym_hoa_process) && atom_getsym(argv+2) != hoa_sym_planewaves) - { - x->f_domain = hoa_sym_harmonics; - x->f_dimension = hoa_sym_2d; - ulong order = pd_clip_minmax(atom_getlong(argv), 1, 63); - x->f_instances.resize(Harmonic::getNumberOfHarmonics(order)); - - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i] = new (std::nothrow) ProcessInstance(x->f_global, - atom_getsym(argv+1), - hoa_sym_harmonics, - hoa_sym_2d, - long(order), - long(Harmonic::getDegree(i)), - Harmonic::getOrder(i), - narg, args, natr, atrs); - if(!x->f_instances[i]) - { - pd_error(x, "%s : Error while loading canvas.", s->s_name); - hoa_process_free(x); - return NULL; - } - } - } - else if(s == hoa_sym_hoa_3d_process && atom_getsym(argv+2) != hoa_sym_planewaves) - { - x->f_domain = hoa_sym_harmonics; - x->f_dimension = hoa_sym_3d; - ulong order = pd_clip_minmax(atom_getlong(argv), 1, 10); - x->f_instances.resize(Harmonic::getNumberOfHarmonics(order)); - - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i] = new (std::nothrow) ProcessInstance(x->f_global, - atom_getsym(argv+1), - hoa_sym_harmonics, - hoa_sym_3d, - long(order), - long(Harmonic::getDegree(i)), - Harmonic::getOrder(i), - narg, args, natr, atrs); - if(!x->f_instances[i]) - { - pd_error(x, "%s : Error while loading canvas.", s->s_name); - hoa_process_free(x); - return NULL; - } - } - } - else if((s == hoa_sym_hoa_2d_process || s == hoa_sym_hoa_process) && atom_getsym(argv+2) == hoa_sym_planewaves) - { - x->f_domain = hoa_sym_planewaves; - x->f_dimension = hoa_sym_2d; - ulong argument = pd_clip_minmax(atom_getlong(argv), 1, HOA_MAX_PLANEWAVES); - x->f_instances.resize(argument); - - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i] = new (std::nothrow) ProcessInstance(x->f_global, - atom_getsym(argv+1), - hoa_sym_planewaves, - hoa_sym_2d, - long(argument), - long(i+1), - long(i+1), - narg, args, natr, atrs); - if(!x->f_instances[i]) - { - pd_error(x, "%s : Error while loading canvas.", s->s_name); - hoa_process_free(x); - return NULL; - } - } - } - else if(s == hoa_sym_hoa_3d_process && atom_getsym(argv+2) == hoa_sym_planewaves) - { - x->f_domain = hoa_sym_planewaves; - x->f_dimension = hoa_sym_3d; - ulong argument = pd_clip_minmax(atom_getlong(argv), 1, HOA_MAX_PLANEWAVES); - x->f_instances.resize(argument); - - for(ulong i = 0; i < x->f_instances.size(); i++) - { - x->f_instances[i] = new (std::nothrow) ProcessInstance(x->f_global, - atom_getsym(argv+1), - hoa_sym_planewaves, - hoa_sym_3d, - long(argument), - long(i+1), - long(i+1), - narg, args, natr, atrs); - if(!x->f_instances[i]) - { - pd_error(x, "%s : Error while loading canvas.", s->s_name); - hoa_process_free(x); - return NULL; - } - } - } - else - { - pd_error(x, "hoa.process~ : 3rd argument must \"harmonics\" or \"planewaves\"."); - } - - bool have_ctl_ins = false; - bool have_sig_ins = false; - bool have_ctl_outs = false; - bool have_sig_outs = false; - ulong max_ctl_ins_extra = 0ul; - ulong max_sig_ins_extra = 0ul; - ulong max_ctl_outs_extra = 0ul; - ulong max_sig_outs_extra = 0ul; - - for(ulong i = 0; i < x->f_instances.size(); i++) - { - if(x->f_instances[i]) - { - have_ctl_ins = max(have_ctl_ins, x->f_instances[i]->hasNormalInputs()); - have_sig_ins = max(have_sig_ins, x->f_instances[i]->hasNormalSignalInputs()); - have_ctl_outs = max(have_ctl_outs, x->f_instances[i]->hasNormalOutputs()); - have_sig_outs = max(have_sig_outs, x->f_instances[i]->hasNormalSignalOutputs()); - max_ctl_ins_extra = max(max_ctl_ins_extra, x->f_instances[i]->getMaximumInputExtraIndex()); - max_sig_ins_extra = max(max_sig_ins_extra, x->f_instances[i]->getMaximumSignalInputExtraIndex()); - max_ctl_outs_extra = max(max_ctl_outs_extra, x->f_instances[i]->getMaximumOutputExtraIndex()); - max_sig_outs_extra = max(max_sig_outs_extra, x->f_instances[i]->getMaximumSignalOutputExtraIndex()); - } - } - - eobj_dspsetup(x, - long(have_sig_ins * x->f_instances.size() + max_sig_ins_extra), - long(have_sig_outs * x->f_instances.size() + max_sig_outs_extra)); - for(ulong i = 0; i < have_sig_outs * x->f_instances.size() + max_sig_outs_extra; i++) - { - x->f_outlets_signals.push_back(Signal::alloc(HOA_MAXBLKSIZE)); - } - - if(have_ctl_ins && !have_sig_ins) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - eobj_proxynew(x); - } - } - for(ulong i = max_sig_ins_extra; i < max_ctl_ins_extra; i++) - { - eobj_proxynew(x); - } - - if(have_ctl_outs) - { - for(ulong i = 0; i < x->f_instances.size(); i++) - { - if(x->f_instances[i]) - { - x->f_instances[i]->setNomalOutlet(outlet_new((t_object *)x, &s_anything)); - } - } - } - - for(ulong i = 0; i < max_ctl_outs_extra; i++) - { - t_outlet* outlet = outlet_new((t_object *)x, &s_anything); - for(ulong j = 0; j < x->f_instances.size(); j++) - { - if(x->f_instances[j]) - { - x->f_instances[j]->setExtraOutlet(outlet, i+1); - } - } - } - x->f_have_ins = have_ctl_ins || have_sig_ins; - } - } - else - { - x->f_global = NULL; - x->f_switch = NULL; - } - } - return x; -} - -extern "C" void setup_hoa0x2eprocess_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.process~", (method)hoa_process_new, (method)hoa_process_free, (short)sizeof(t_hoa_process), CLASS_NOINLET, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_process_new, gensym("hoa.2d.process~"), A_GIMME, 0); - class_addcreator((t_newmethod)hoa_process_new, gensym("hoa.3d.process~"), A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_process_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_process_click, "click", A_NULL, 0); - eclass_addmethod(c, (method)hoa_process_open, "open", A_GIMME, 0); - eclass_addmethod(c, (method)hoa_process_target, "target", A_GIMME, 0); - - eclass_addmethod(c, (method)hoa_process_bang, "bang", A_CANT, 0); - eclass_addmethod(c, (method)hoa_process_float, "float", A_FLOAT, 0); - eclass_addmethod(c, (method)hoa_process_symbol, "symbol", A_SYMBOL,0); - eclass_addmethod(c, (method)hoa_process_list, "list", A_GIMME, 0); - eclass_addmethod(c, (method)hoa_process_anything, "anything", A_GIMME, 0); - - eclass_register(CLASS_OBJ, c); - hoa_process_class = c; -} - diff --git a/Sources/hoa.projector_tilde.cpp b/Sources/hoa.projector_tilde.cpp deleted file mode 100644 index 3e662ea..0000000 --- a/Sources/hoa.projector_tilde.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_projector -{ - t_edspobj f_obj; - Projector* f_projector; - t_sample* f_ins; - t_sample* f_outs; -} t_hoa_projector; - -static t_eclass *hoa_projector_class; - -static void *hoa_projector_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - ulong numberOfPlanewaves = 4; - t_hoa_projector *x = NULL; - x = (t_hoa_projector *)eobj_new(hoa_projector_class); - if (x) - { - if(atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - if(atom_gettype(argv+1) == A_LONG) - numberOfPlanewaves = ulong(pd_clip_min(atom_getlong(argv+1), order * 2 + 1)); - - x->f_projector = new Projector(order, numberOfPlanewaves); - - eobj_dspsetup(x, long(x->f_projector->getNumberOfHarmonics()), long(x->f_projector->getNumberOfPlanewaves())); - - x->f_ins = Signal::alloc(x->f_projector->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_projector->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - } - - return (x); -} - -static void hoa_projector_perform(t_hoa_projector *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_projector->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_projector_dsp(t_hoa_projector *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - object_method(dsp, gensym("dsp_add"), x, (method)hoa_projector_perform, 0, NULL); -} - -static void hoa_projector_free(t_hoa_projector *x) -{ - eobj_dspfree(x); - delete x->f_projector; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - - -extern "C" void setup_hoa0x2e2d0x2eprojector_tilde(void) -{ - t_eclass* c; - - c = eclass_new("hoa.2d.projector~", (method)hoa_projector_new, (method)hoa_projector_free, (short)sizeof(t_hoa_projector), 0L, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_projector_new, gensym("hoa.projector~"), A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_projector_dsp, "dsp", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_projector_class = c; -} diff --git a/Sources/hoa.recomposer_tilde.cpp b/Sources/hoa.recomposer_tilde.cpp deleted file mode 100644 index fad2fb2..0000000 --- a/Sources/hoa.recomposer_tilde.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_recomposer -{ - t_edspobj f_obj; - - Recomposer* f_fixe; - Recomposer* f_fisheye; - Line f_line; - Recomposer* f_free; - PolarLines* f_lines; - t_sample* f_lines_vector; - - t_sample* f_ins; - t_sample* f_outs; - t_symbol* f_mode; - t_sample f_ramp; - -} t_hoa_recomposer; - -static t_eclass *hoa_recomposer_class; - -static void *hoa_recomposer_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - ulong numberOfPlanewaves = 4; - t_hoa_recomposer *x = (t_hoa_recomposer *)eobj_new(hoa_recomposer_class); - t_binbuf *d = binbuf_via_atoms(argc,argv); - - if(x && d) - { - x->f_mode = hoa_sym_fixe; - x->f_ramp = 100; - if(argc && argv && atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - if(argc > 1 && argv && atom_gettype(argv+1) == A_LONG) - numberOfPlanewaves = ulong(pd_clip_min(atom_getlong(argv+1), order * 2 + 1)); - if(argc > 2 && argv && atom_gettype(argv+2) == A_SYM) - { - if(atom_getsym(argv+2) == hoa_sym_free) - x->f_mode = hoa_sym_free; - else if(atom_getsym(argv+2) == hoa_sym_fisheye) - x->f_mode = hoa_sym_fisheye; - } - - if(x->f_mode == hoa_sym_fixe) - { - x->f_fixe = new Recomposer(order, numberOfPlanewaves); - x->f_ins = Signal::alloc(x->f_fixe->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_fixe->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - eobj_dspsetup(x, long(x->f_fixe->getNumberOfPlanewaves()), long(x->f_fixe->getNumberOfHarmonics())); - } - else if(x->f_mode == hoa_sym_fisheye) - { - x->f_fisheye = new Recomposer(order, numberOfPlanewaves); - x->f_ins = Signal::alloc(x->f_fisheye->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_fisheye->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_line.setRamp(0.1 * sys_getsr()); - x->f_line.setValue(0.f); - eobj_dspsetup(x, long(x->f_fisheye->getNumberOfPlanewaves() + 1), long(x->f_fisheye->getNumberOfHarmonics())); - } - else if(x->f_mode == hoa_sym_free) - { - x->f_free = new Recomposer(order, numberOfPlanewaves); - x->f_lines = new PolarLines(x->f_free->getNumberOfPlanewaves()); - x->f_ins = Signal::alloc(x->f_free->getNumberOfPlanewaves() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_free->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_lines->setRamp(0.1 * sys_getsr()); - for(ulong i = 0; i < x->f_free->getNumberOfPlanewaves(); i++) - { - x->f_lines->setRadiusDirect(i, x->f_free->getWidening(i)); - x->f_lines->setAzimuthDirect(i, x->f_free->getAzimuth(i)); - } - eobj_dspsetup(x, long(x->f_free->getNumberOfPlanewaves()), long(x->f_free->getNumberOfHarmonics())); - x->f_lines_vector = Signal::alloc(x->f_free->getNumberOfPlanewaves() * 2); - } - - ebox_attrprocess_viabinbuf(x, d); - - return x; - } - - return NULL; -} - -static void hoa_recomposer_float(t_hoa_recomposer *x, float f) -{ - if(x->f_mode == hoa_sym_fisheye) - { - x->f_line.setValue(pd_clip_minmax(f, 0., 1.)); - } -} - -static void hoa_recomposer_angle(t_hoa_recomposer *x, t_symbol *s, int ac, t_atom *av) -{ - if(ac && av && x->f_mode == hoa_sym_free) - { - for(ulong i = 0; i < x->f_free->getNumberOfPlanewaves() && i < ulong(ac); i++) - { - if(atom_gettype(av+i) == A_FLOAT) - { - x->f_lines->setAzimuth(i, atom_getfloat(av+i)); - } - } - } -} - -static void hoa_recomposer_wide(t_hoa_recomposer *x, t_symbol *s, int ac, t_atom *av) -{ - if(ac && av && x->f_mode == hoa_sym_free) - { - for(ulong i = 0; i < x->f_free->getNumberOfPlanewaves() && i < ulong(ac); i++) - { - if(atom_gettype(av+i) == A_FLOAT) - { - x->f_lines->setRadius(i, atom_getfloat(av+i)); - } - } - } -} - -static void hoa_recomposer_perform_fixe(t_hoa_recomposer *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(int i = 0; i < numins; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(int i = 0; i < sampleframes; i++) - { - x->f_fixe->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(int i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_recomposer_perform_fisheye(t_hoa_recomposer *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - const ulong numberOfPlanewaves = x->f_fisheye->getNumberOfPlanewaves(); - for(ulong i = 0; i < numberOfPlanewaves; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, numberOfPlanewaves); - } - for(ulong i = 0; i < ulong(sampleframes); i++) - { - x->f_fisheye->setFisheye(ins[numberOfPlanewaves][i]); - x->f_fisheye->process(x->f_ins + numberOfPlanewaves * i, x->f_outs + ulong(numouts) * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_recomposer_perform_fisheye_offset(t_hoa_recomposer *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - const ulong numberOfPlanewaves = x->f_fisheye->getNumberOfPlanewaves(); - for(ulong i = 0; i < numberOfPlanewaves; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, numberOfPlanewaves); - } - for(ulong i = 0; i < ulong(sampleframes); i++) - { - x->f_fisheye->setFisheye(x->f_line.process()); - x->f_fisheye->process(x->f_ins + numberOfPlanewaves * i, x->f_outs + ulong(numouts) * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_recomposer_perform_free(t_hoa_recomposer *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - const ulong numberOfPlanewaves = x->f_free->getNumberOfPlanewaves(); - for(ulong i = 0; i < numberOfPlanewaves && i < ulong(numins); i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, numberOfPlanewaves); - } - for(ulong i = 0; i < ulong(sampleframes); i++) - { - x->f_lines->process(x->f_lines_vector); - for(ulong j = 0; j < numberOfPlanewaves; j++) - x->f_free->setWidening(j, x->f_lines_vector[j]); - for(ulong j = 0; j < numberOfPlanewaves; j++) - x->f_free->setAzimuth(j, x->f_lines_vector[j + numberOfPlanewaves]); - x->f_free->process(x->f_ins + numberOfPlanewaves * i, x->f_outs + ulong(numouts) * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_recomposer_dsp(t_hoa_recomposer *x, t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(x->f_mode == hoa_sym_fixe) - { - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_recomposer_perform_fixe, 0, NULL); - } - else if(x->f_mode == hoa_sym_fisheye) - { - x->f_line.setRamp(x->f_ramp / 1000. * samplerate); - if(count[x->f_fisheye->getNumberOfPlanewaves()]) - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_recomposer_perform_fisheye, 0, NULL); - else - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_recomposer_perform_fisheye_offset, 0, NULL); - } - else if(x->f_mode == hoa_sym_free) - { - x->f_lines->setRamp(x->f_ramp / 1000. * samplerate); - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_recomposer_perform_free, 0, NULL); - } -} - -static void hoa_recomposer_free(t_hoa_recomposer *x) -{ - eobj_dspfree(x); - if(x->f_mode == hoa_sym_fixe) - { - delete x->f_fixe; - } - else if(x->f_mode == hoa_sym_fisheye) - { - delete x->f_fisheye; - } - else if(x->f_mode == hoa_sym_free) - { - delete x->f_free; - delete x->f_lines; - Signal::free(x->f_lines_vector); - } - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -static t_pd_err ramp_set(t_hoa_recomposer *x, t_object *attr, int argc, t_atom *argv) -{ - if(argc && argv) - { - if(atom_gettype(argv) == A_LONG || atom_gettype(argv) == A_FLOAT) - { - x->f_ramp = pd_clip_min(atom_getfloat(argv), 0); - x->f_lines->setRamp(x->f_ramp / 1000. * sys_getsr()); - } - } - - return 0; -} - -extern "C" void setup_hoa0x2e2d0x2erecomposer_tilde(void) -{ - t_eclass* c; - - c = eclass_new("hoa.2d.recomposer~", (method)hoa_recomposer_new, (method)hoa_recomposer_free, (short)sizeof(t_hoa_recomposer), CLASS_NOINLET, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_recomposer_new, gensym("hoa.recomposer~"), A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_recomposer_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_recomposer_angle, "angle", A_GIMME,0); - eclass_addmethod(c, (method)hoa_recomposer_wide, "wide", A_GIMME,0); - eclass_addmethod(c, (method)hoa_recomposer_float, "float", A_FLOAT,0); - - CLASS_ATTR_DOUBLE (c,"ramp", 0, t_hoa_recomposer, f_ramp); - CLASS_ATTR_LABEL (c,"ramp", 0, "Ramp Time in milliseconds"); - CLASS_ATTR_CATEGORY (c,"ramp", 0, "Behavior"); - CLASS_ATTR_ACCESSORS (c,"ramp", NULL, ramp_set); - CLASS_ATTR_ORDER (c,"ramp", 0, "2"); - CLASS_ATTR_DEFAULT (c,"ramp", 0, "20"); - CLASS_ATTR_SAVE (c,"ramp", 1); - - eclass_register(CLASS_OBJ, c); - hoa_recomposer_class = c; -} - - - diff --git a/Sources/hoa.rotate_tilde.cpp b/Sources/hoa.rotate_tilde.cpp deleted file mode 100644 index 07a9240..0000000 --- a/Sources/hoa.rotate_tilde.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_rotate -{ - t_edspobj f_obj; - Rotate*f_rotate; - t_sample* f_ins; - t_sample* f_outs; - -} t_hoa_rotate; - -static t_eclass *hoa_rotate_class; - -static void *hoa_rotate_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_rotate *x = (t_hoa_rotate *)eobj_new(hoa_rotate_class); - - if (x) - { - if(atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - - x->f_rotate = new Rotate(order); - - eobj_dspsetup(x, long(x->f_rotate->getNumberOfHarmonics() + 1), long(x->f_rotate->getNumberOfHarmonics())); - - x->f_ins = Signal::alloc(x->f_rotate->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_rotate->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - } - - return (x); -} - -static void hoa_rotate_float(t_hoa_rotate *x, float f) -{ - x->f_rotate->setYaw(f); -} - -static void hoa_rotate_perform(t_hoa_rotate *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_rotate->setYaw(ins[numouts][i]); - x->f_rotate->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_rotate_perform_offset(t_hoa_rotate *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_rotate->process(x->f_ins + numins * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_rotate_dsp(t_hoa_rotate *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[x->f_rotate->getNumberOfHarmonics()]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_rotate_perform, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_rotate_perform_offset, 0, NULL); -} - -static void hoa_rotate_free(t_hoa_rotate *x) -{ - eobj_dspfree(x); - delete x->f_rotate; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e2d0x2erotate_tilde(void) -{ - t_eclass* c; - - c = eclass_new("hoa.2d.rotate~",(method)hoa_rotate_new,(method)hoa_rotate_free, (short)sizeof(t_hoa_rotate), CLASS_NOINLET, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_rotate_new, gensym("hoa.rotate~"), A_GIMME, 0); - - eclass_dspinit(c); - - eclass_addmethod(c, (method)hoa_rotate_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_rotate_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_rotate_class = c; -} diff --git a/Sources/hoa.tools.cpp b/Sources/hoa.tools.cpp deleted file mode 100644 index b4ac65c..0000000 --- a/Sources/hoa.tools.cpp +++ /dev/null @@ -1,379 +0,0 @@ -/* - // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. - // For information on usage and redistribution, and for a DISCLAIMER OF ALL - // WARRANTIES, see the file, "LICENSE.txt," in this distribution. - */ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -using namespace hoa; - -#define DEFDACBLKSIZE 64 -extern "C" -{ - EXTERN t_sample* sys_soundout; -} - -typedef struct _hoa_pi -{ - t_eobj p_ob; - double p_value; - t_outlet *p_outlet; -} t_hoa_pi; - -t_eclass *pi_class; - -typedef struct _hoa_pi_tilde -{ - t_edspobj p_ob; - double p_value; - double p_phase; -} t_hoa_pi_tilde; - -static t_eclass *hoa_pi_tilde_class; - -typedef struct _hoa_dac -{ - t_object x_obj; - t_int x_n; - t_int* x_vec; - t_float x_f; -} t_hoa_dac; - -t_class *hoa_dac_class; - -typedef struct _hoa_connect -{ - t_eobj f_obj; -} t_hoa_connect; - -static t_eclass *hoa_connect_class; - -static void *pi_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_pi *x = (t_hoa_pi *)eobj_new(pi_class); - x->p_value = 1.; - x->p_value = atom_getfloat(argv); - x->p_outlet = floatout(x); - - return(x); -} - -static void pi_bang(t_hoa_pi *x) -{ - outlet_float(x->p_outlet, (float)HOA_PI * x->p_value); -} - -static void pi_float(t_hoa_pi *x, float n) -{ - x->p_value = n; - pi_bang(x); -} - -extern "C" void setup_hoa0x2epi(void) -{ - t_eclass* c; - c = eclass_new("hoa.pi", (method)pi_new,(method)NULL, sizeof(t_hoa_pi), 0L, A_GIMME, 0); - - - eclass_addmethod(c, (method)pi_bang, "bang", A_CANT, 0); - eclass_addmethod(c, (method)pi_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - pi_class = c; -} - -static void *hoa_pi_tilde_new(t_symbol *s, int argc, t_atom *argv) -{ - t_hoa_pi_tilde *x = (t_hoa_pi_tilde *)eobj_new(hoa_pi_tilde_class); - x->p_value = 1.; - x->p_phase = 1; - x->p_value = atom_getfloat(argv); - eobj_dspsetup(x, 2, 1); - - return(x); -} - -static void hoa_pi_tilde_float(t_hoa_pi_tilde *x, float n) -{ - if(eobj_getproxy(x)) - { - x->p_phase = n; - } - else - { - x->p_value = n; - x->p_phase = 1; - } -} - -static void hoa_pi_tilde_perform(t_hoa_pi_tilde *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(int i = 0; i < sampleframes; i++) - { - x->p_value = ins[0][i]; - outs[0][i] = HOA_PI * ins[0][i]; - } -} - -static void hoa_pi_tilde_perform_phase(t_hoa_pi_tilde *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(int i = 0; i < sampleframes; i++) - outs[0][i] = HOA_PI * x->p_value * ins[1][i]; -} - -static void hoa_pi_tilde_perform_offset(t_hoa_pi_tilde *x, t_object *dsp64, float **ins, long numins, float **outs, long numouts, long sampleframes, long flags, void *userparam) -{ - for(int i = 0; i < sampleframes; i++) - outs[0][i] = HOA_PI * x->p_value * x->p_phase; -} - -static void hoa_pi_tilde_dsp(t_hoa_pi_tilde *x, t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[0]) - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_pi_tilde_perform, 0, NULL); - else if(count[1]) - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_pi_tilde_perform_phase, 0, NULL); - else - object_method(dsp64, gensym("dsp_add64"), x, (method)hoa_pi_tilde_perform_offset, 0, NULL); - -} - -extern "C" void setup_hoa0x2epi_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.pi~", (method)hoa_pi_tilde_new, (method)NULL, sizeof(t_hoa_pi_tilde), CLASS_NOINLET, A_GIMME, 0); - - eclass_dspinit(c); - - - eclass_addmethod(c, (method)hoa_pi_tilde_float, "float", A_FLOAT, 0); - eclass_addmethod(c, (method)hoa_pi_tilde_dsp, "dsp", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_pi_tilde_class = c; -} - -static void *hoa_dac_new(t_symbol *s, int argc, t_atom *argv) -{ - int i, j; - int min, max; - t_atom channels[512]; - t_hoa_dac *x = (t_hoa_dac *)pd_new(hoa_dac_class); - - if(!argc) - { - x->x_n = 2; - x->x_vec = (t_int *)malloc(2 * sizeof(*x->x_vec)); - x->x_vec[0] = 1; - x->x_vec[1] = 2; - } - else - { - x->x_n = 0; - for(i = 0; i < argc; i++) - { - if(atom_gettype(argv+i) == A_FLOAT) - { - atom_setfloat(channels + x->x_n, (int)atom_getfloat(argv+i)); - x->x_n++; - } - else if(atom_gettype(argv+i) == A_SYM) - { - min = atoi(atom_getsym(argv+i)->s_name); - if(min > 0 && min <= 512) - { - if (min < 10) - max = atoi(atom_getsym(argv+i)->s_name+2); - else if (min < 100) - max = atoi(atom_getsym(argv+i)->s_name+3); - else if (min < 1000) - max = atoi(atom_getsym(argv+i)->s_name+4); - else - max = atoi(atom_getsym(argv+i)->s_name+5); - if(max > 0 && max <= 512) - { - if(max > min) - { - for(j = min; j <= max; j++) - { - atom_setlong(channels + x->x_n, j); - x->x_n++; - } - } - else - { - for(j = min; j >= max; j--) - { - atom_setlong(channels + x->x_n, j); - x->x_n++; - } - } - } - } - } - } - x->x_vec = (t_int *)malloc(size_t(x->x_n ? x->x_n : 1) * sizeof(*x->x_vec)); - for (i = 0; i < x->x_n; i++) - { - x->x_vec[i] = atom_getintarg(i, int(x->x_n), channels); - } - } - - for (i = 1; i < x->x_n; i++) - inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); - x->x_f = 0; - return (x); -} - -static void hoa_dac_dsp(t_hoa_dac *x, t_signal **sp) -{ - t_int i, *ip; - t_signal **sp2; - for (i = x->x_n, ip = x->x_vec, sp2 = sp; i--; ip++, sp2++) - { - int ch = int(*ip - 1); - if ((*sp2)->s_n != DEFDACBLKSIZE) - error("hoa.dac~: bad vector size"); - else if (ch >= 0 && ch < sys_get_outchannels()) - dsp_add(plus_perform, 4, sys_soundout + DEFDACBLKSIZE*ch, - (*sp2)->s_vec, sys_soundout + DEFDACBLKSIZE*ch, DEFDACBLKSIZE); - } -} - -static void hoa_dac_free(t_hoa_dac *x) -{ - free(x->x_vec); -} - -extern "C" void setup_hoa0x2edac_tilde(void) -{ - t_class* c; - c = class_new(gensym("hoa.dac~"), (t_newmethod)hoa_dac_new, (t_method)hoa_dac_free, (short)sizeof(t_hoa_dac), 0, A_GIMME, 0); - - class_sethelpsymbol((t_class *)c, gensym("helps/hoa.dac~")); - CLASS_MAINSIGNALIN(c, t_hoa_dac, x_f); - class_addmethod(c, (t_method)hoa_dac_dsp, gensym("dsp"), A_CANT, 0); - hoa_dac_class = c; -} - -static void *hoa_connect_new(t_symbol *s, int argc, t_atom *argv) -{ - return (t_hoa_connect *)eobj_new(hoa_connect_class); -} - -static void hoa_connect_bang(t_hoa_connect *x) -{ - int i, j, index = 0; - int x1 = 0, x2 = 0, y1 = 0, y2 = 0; - int nx1, nx2, ny1, ny2; - t_gobj *y = NULL; - t_gobj *list[512]; - t_outconnect *oc; - t_glist *cnv; - t_symbol* name; - for(i = 0; i < 512; i++) - { - list[i] = NULL; - } - for(y = eobj_getcanvas(x)->gl_list; y; y = y->g_next) - { - if(strncmp(eobj_getclassname(y)->s_name, "hoa.", 4) == 0 && glist_isselected(eobj_getcanvas(x), y)) - { - gobj_getrect(y, eobj_getcanvas(x), &nx1, &ny1, &nx2, &ny2); - for(i = 0; i < index; i++) - { - gobj_getrect(list[i], eobj_getcanvas(x), &x1, &y1, &x2, &y2); - if(ny1 < y1 || (ny1 == y1 && nx1 < x1)) - { - for(j = index; j > i; j--) - { - list[j] = list[j-1]; - } - list[i] = y; - index = pd_clip_max(index+1, 255); - break; - } - } - if(i == index) - { - list[index] = y; - index = pd_clip_max(index+1, 255); - } - } - else if(eobj_getclassname(y) == gensym("canvas")) - { - cnv = (t_glist *)y; - if(cnv->gl_obj.te_binbuf && binbuf_getnatom(cnv->gl_obj.te_binbuf) && binbuf_getvec(cnv->gl_obj.te_binbuf)) - { - if(atom_gettype(binbuf_getvec(cnv->gl_obj.te_binbuf)) == A_SYM) - name = atom_getsym(binbuf_getvec(cnv->gl_obj.te_binbuf)); - else - name = NULL; - - if(name && strncmp(name->s_name, "hoa.", 4) == 0 && glist_isselected(eobj_getcanvas(x), y)) - { - gobj_getrect(y, eobj_getcanvas(x), &nx1, &ny1, &nx2, &ny2); - for(i = 0; i < index; i++) - { - gobj_getrect(list[i], eobj_getcanvas(x), &x1, &y1, &x2, &y2); - if(ny1 < y1 || (ny1 == y1 && nx1 < x1)) - { - for(j = index; j > i; j--) - { - list[j] = list[j-1]; - } - list[i] = y; - index = pd_clip_max(index+1, 255); - break; - } - } - if(i == index) - { - list[index] = y; - index = pd_clip_max(index+1, 255); - } - } - - } - } - } - for(i = 0; i < index-1; i++) - { - for(j = 0; j < obj_noutlets((t_object *)list[i]) && j < obj_ninlets((t_object *)list[i+1]); j++) - { - obj_disconnect((t_object *)list[i], j, (t_object *)list[i+1], j); - oc = obj_connect((t_object *)list[i], j, (t_object *)list[i+1], j); - if(glist_isvisible(eobj_getcanvas(x))) - { - sys_vgui((char *)".x%lx.c create line %d %d %d %d -width %d -fill black -tags [list l%lx cord]\n", - glist_getcanvas(eobj_getcanvas(x)), 0, 0, 0, 0, - (obj_issignaloutlet((t_object *)list[i], j) ? 2 : 1), - oc); - } - - } - canvas_fixlinesfor(eobj_getcanvas(x), (t_text *)list[i]); - } - canvas_dirty(eobj_getcanvas(x), 1); -} - -static void hoa_connect_free(t_hoa_connect *x) -{ - eobj_free(x); -} - -extern "C" void setup_hoa0x2econnect(void) -{ - t_eclass* c; - - c = eclass_new("hoa.connect", (method)hoa_connect_new, (method)hoa_connect_free, (short)sizeof(t_hoa_connect), 0, A_GIMME, 0); - - - eclass_addmethod(c, (method)hoa_connect_bang, "bang", A_CANT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_connect_class = c; -} - diff --git a/Sources/hoa.wider_tilde.cpp b/Sources/hoa.wider_tilde.cpp deleted file mode 100644 index c0a8af8..0000000 --- a/Sources/hoa.wider_tilde.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/* - // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. - // For information on usage and redistribution, and for a DISCLAIMER OF ALL - // WARRANTIES, see the file, "LICENSE.txt," in this distribution. - */ - -#include "../hoa.library.hpp" -#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" -using namespace hoa; - -typedef struct _hoa_wider -{ - t_edspobj f_obj; - Wider* f_wider; - t_sample* f_ins; - t_sample* f_outs; -} t_hoa_wider; - -static t_eclass *hoa_wider_class; - -typedef struct _hoa_wider_3d -{ - t_edspobj f_obj; - Wider* f_wider; - t_sample* f_ins; - t_sample* f_outs; -} t_hoa_wider_3d; - -static t_eclass *hoa_wider_3d_class; - -static void *hoa_wider_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_wider *x = (t_hoa_wider *)eobj_new(hoa_wider_class); - if(x) - { - if(atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 63)); - - x->f_wider = new Wider(order); - eobj_dspsetup(x, long(x->f_wider->getNumberOfHarmonics() + 1), long(x->f_wider->getNumberOfHarmonics())); - - x->f_ins = Signal::alloc(x->f_wider->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_wider->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - } - - return (x); -} - -static void *hoa_wider_3d_new(t_symbol *s, int argc, t_atom *argv) -{ - ulong order = 1; - t_hoa_wider_3d *x = (t_hoa_wider_3d *)eobj_new(hoa_wider_3d_class); - if(x) - { - if(atom_gettype(argv) == A_LONG) - order = ulong(pd_clip_minmax(atom_getlong(argv), 1, 10)); - - x->f_wider = new Wider(order); - eobj_dspsetup(x, long(x->f_wider->getNumberOfHarmonics() + 1), long(x->f_wider->getNumberOfHarmonics())); - - x->f_ins = Signal::alloc(x->f_wider->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - x->f_outs = Signal::alloc(x->f_wider->getNumberOfHarmonics() * HOA_MAXBLKSIZE); - } - - return (x); -} - -static void hoa_wider_float(t_hoa_wider *x, float f) -{ - x->f_wider->setWidening(f); -} - -static void hoa_wider_3d_float(t_hoa_wider_3d *x, float f) -{ - x->f_wider->setWidening(f); -} - -static void hoa_wider_perform(t_hoa_wider *x, t_object *dsp, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < numins - 1; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins - 1)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_wider->setWidening(ins[numins-1][i]); - x->f_wider->process(x->f_ins + (numins - 1) * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_wider_3d_perform(t_hoa_wider_3d *x, t_object *dsp, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < numins - 1; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins - 1)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_wider->setWidening(ins[numins-1][i]); - x->f_wider->process(x->f_ins + (numins - 1) * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_wider_perform_offset(t_hoa_wider *x, t_object *dsp, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < numins - 1; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins - 1)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_wider->process(x->f_ins + (numins - 1) * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_wider_3d_perform_offset(t_hoa_wider_3d *x, t_object *dsp, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long f,void *up) -{ - for(long i = 0; i < numins - 1; i++) - { - Signal::copy(ulong(sampleframes), ins[i], 1, x->f_ins+i, ulong(numins - 1)); - } - for(long i = 0; i < sampleframes; i++) - { - x->f_wider->process(x->f_ins + (numins - 1) * i, x->f_outs + numouts * i); - } - for(long i = 0; i < numouts; i++) - { - Signal::copy(ulong(sampleframes), x->f_outs+i, ulong(numouts), outs[i], 1); - } -} - -static void hoa_wider_dsp(t_hoa_wider *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[x->f_wider->getNumberOfHarmonics()]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_wider_perform, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_wider_perform_offset, 0, NULL); -} - -static void hoa_wider_3d_dsp(t_hoa_wider_3d *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) -{ - if(count[x->f_wider->getNumberOfHarmonics()]) - object_method(dsp, gensym("dsp_add"), x, (method)hoa_wider_3d_perform, 0, NULL); - else - object_method(dsp, gensym("dsp_add"), x, (method)hoa_wider_3d_perform_offset, 0, NULL); -} - -static void hoa_wider_free(t_hoa_wider *x) -{ - eobj_dspfree(x); - delete x->f_wider; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -static void hoa_wider_3d_free(t_hoa_wider_3d *x) -{ - eobj_dspfree(x); - delete x->f_wider; - Signal::free(x->f_ins); - Signal::free(x->f_outs); -} - -extern "C" void setup_hoa0x2e2d0x2ewider_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.2d.wider~", (method)hoa_wider_new, (method)hoa_wider_free, (short)sizeof(t_hoa_wider), 0, A_GIMME, 0); - class_addcreator((t_newmethod)hoa_wider_new, gensym("hoa.wider~"), A_GIMME, 0); - - eclass_dspinit(c); - ; - eclass_addmethod(c, (method)hoa_wider_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_wider_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_wider_class = c; -} - -extern "C" void setup_hoa0x2e3d0x2ewider_tilde(void) -{ - t_eclass* c; - c = eclass_new("hoa.3d.wider~", (method)hoa_wider_3d_new, (method)hoa_wider_3d_free, (short)sizeof(t_hoa_wider_3d), 0, A_GIMME, 0); - - eclass_dspinit(c); - ; - eclass_addmethod(c, (method)hoa_wider_3d_dsp, "dsp", A_CANT, 0); - eclass_addmethod(c, (method)hoa_wider_3d_float, "float", A_FLOAT, 0); - - eclass_register(CLASS_OBJ, c); - hoa_wider_3d_class = c; -} - diff --git a/ThirdParty/CicmWrapper b/ThirdParty/CicmWrapper deleted file mode 160000 index 38bfc67..0000000 --- a/ThirdParty/CicmWrapper +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 38bfc67e673f2605767d19dc71b3668d83901941 diff --git a/ThirdParty/HoaLibrary b/ThirdParty/HoaLibrary deleted file mode 160000 index 610641e..0000000 --- a/ThirdParty/HoaLibrary +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 610641e7e93d10d640ea7ba96f8df9675edd2db2 diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..794ac1a --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,38 @@ + +configuration: Release +os: Visual Studio 2015 +platform: x86 + +install: + - git submodule update --init --recursive + +build_script: + - mkdir build + - cd build + - cmake .. -G "Visual Studio 14 2015" + - cmake --build . -- /verbosity:minimal /p:Configuration=Release + - cd ..\ + +after_build: + - del /F /S /Q /A %APPVEYOR_BUILD_FOLDER%\*.pdb + - del /F /S /Q /A %APPVEYOR_BUILD_FOLDER%\*.ilk + - xcopy %APPVEYOR_BUILD_FOLDER%\sources %APPVEYOR_BUILD_FOLDER%\hoa\sources /i + - copy %APPVEYOR_BUILD_FOLDER%\README.md %APPVEYOR_BUILD_FOLDER%\hoa\readme.txt + - copy %APPVEYOR_BUILD_FOLDER%\LICENSE %APPVEYOR_BUILD_FOLDER%\hoa\license.txt + - 7z a %APPVEYOR_BUILD_FOLDER%\hoa-%APPVEYOR_REPO_TAG_NAME%-(Windows-i386-32)(Sources)-externals.zip %APPVEYOR_BUILD_FOLDER%\hoa\ + +artifacts: + - path: '*.zip' + +deploy: + provider: GitHub + auth_token: + secure: hFOC0oRou0A7cFLF/0b5hyXE/lXyb1oa2dg6LdSyT5Je70m0DQAJ5cKa4cUbvfWe + artifacts: /.*\.zip/ + on: + appveyor_repo_tag: true + +notifications: + + - provider: Email + on_build_status_changed: false diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index fd0be89..0000000 --- a/autogen.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -autoreconf --force --install -I config -I m4 diff --git a/Package/Hoa/changelog.txt b/changelog.txt similarity index 85% rename from Package/Hoa/changelog.txt rename to changelog.txt index db90d53..ea220d1 100644 --- a/Package/Hoa/changelog.txt +++ b/changelog.txt @@ -2,10 +2,10 @@ HoaLibrary for MaxMSP, Pure Data, Faust and VST ------------------------ ------------------------ - PD Version + PD Version ------------------------ ------------------------ -Pd : For an overview of hoa.library, please refer to the hoa.library-help.pd patch. +Pd : For an overview of hoa.library, please refer to the �hoa.library-help.pd� patch. ------------------------ version beta 2.0.0 @@ -16,14 +16,14 @@ The 3D part of the library ------------------------ version beta 2.0.0 ------------------------ -Systems : +Systems : - Mac OsX (Pd 32 bit) - Windows (Pd 32 bit) - Linux 64 bits ### Global Changes : -# 3D +# 3D # hoa.process @@ -31,11 +31,11 @@ Systems : # You can use the c.preset object of Chocolate library with the GUIs. -# The GUIs have all the new options of the CICM Wrapper. Attributes syntax : @key [ values... ] becomes @key values (you still can use the old syntax but it's deprecated). Float to signal : The float values in signal inlet are not converted to signal, thus some processing are now optimized with float (for example, hoa.rotate~ doesn't need to compute the rotation every sample). See chocolate and coffee from CICM Wrapper for all the changes. +# The GUIs have all the new options of the CICM Wrapper. Attributes syntax : @key [ values... ] becomes @key values� (you still can use the old syntax but it's deprecated). Float to signal : The float values in signal inlet are not converted to signal, thus some processing are now optimized with float (for example, hoa.rotate~ doesn't need to compute the rotation every sample). See chocolate and coffee from CICM Wrapper for all the changes. # Tutorials -# easy installer +# easy installer ### New objects : @@ -67,7 +67,7 @@ Systems : # hoa.delay~ : -### Modified objects : +### Modified objects : # hoa.decoder~ : The attribute "restitution" for irregular decoding mode has been removed (the projection mode is now automatic for a stereo decoding). The attribute "pinnae" becomes "pinna" (you still can use the old syntax but it's deprecated).The ambisonic decoding and the irregular decoding have the new attribute "offset" that allows to apply an angular offset to all the channels. @@ -86,9 +86,9 @@ Systems : # hoa.space :The boundaries values of the list can be changed. The color attributes keys have changed (you still can use the olds ones but it's deprecated). If you save a patcher the old key will be replaced by the ones. -Dependencies : +Dependencies : -Cblas (http://www.netlib.org/clapack/cblas/) +Cblas (http://www.netlib.org/clapack/cblas/) You can use Accelerate for Mac Os and Blas, Ipp or GSL for all platforms CICM Wrapper (https://github.com/CICM/CicmWrapper) @@ -97,7 +97,7 @@ CICM Wrapper (https://github.com/CICM/CicmWrapper) version beta 1.0.0 ------------------------ -Systems : +Systems : - Mac OsX (Pd 32 bit) - Windows (Pd 32 bit) @@ -121,8 +121,8 @@ Objects : - hoa.space~ : A spatial filter. - hoa.wider~ : A fractional ambisonic orders simulator. -Dependencies : +Dependencies : -Cblas (http://www.netlib.org/clapack/cblas/) +Cblas (http://www.netlib.org/clapack/cblas/) You can use Accelerate for Mac Os and Ipp or GSL for all platforms. -PdEnhanced (https://github.com/pierreguillot/PdEnhanced) \ No newline at end of file +PdEnhanced (https://github.com/pierreguillot/PdEnhanced) diff --git a/config/.gitignore b/config/.gitignore deleted file mode 100644 index 72e8ffc..0000000 --- a/config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 3bbc36b..0000000 --- a/configure.ac +++ /dev/null @@ -1,94 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -## replace the email below with authors' emails -AC_INIT([Hoa], 2.2-git, musique@univ-paris8.fr,[Hoa],[https://github.com/CICM/HoaLibrary-PD]) - -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_AUX_DIR(config) -AC_CONFIG_FILES([Sources/Makefile]) -AC_CONFIG_FILES([ThirdParty/CicmWrapper/Makefile ThirdParty/CicmWrapper/Sources/Makefile]) -AC_CONFIG_FILES([Package/Hoa/Makefile Package/Hoa/helps/Makefile Package/Hoa/media/Makefile Package/Hoa/misc/Makefile Package/Hoa/patchers/Makefile Package/Hoa/tutorials/Makefile]) - -AX_FAT_BINARY() - -AC_SUBST(PD_CPPFLAGS) -AC_SUBST(PD_LDFLAGS) - -AC_SUBST(EXTENSION) - -AM_INIT_AUTOMAKE([1.10 foreign]) - -AC_ARG_WITH([pd], [ --with-pd= where to look for pd-headers and and -libs]) -AC_ARG_WITH([extension],[ --with-extension= enforce a certain extension for the dynamic library (e.g. dll)]) - -ARCH=$(uname -m) -KERN=$(uname -s) - -AC_PROG_CXX -AC_PROG_LIBTOOL - -if test "x${libdir}" = "x\${exec_prefix}/lib"; then - libdir='${exec_prefix}/lib/pd/extra' -fi - -if test "x$with_pd" != "x"; then - if test -d "${with_pd}"; then - PDPATH=${with_pd} - fi - if test -d "${PDPATH}/src"; then - AC_MSG_RESULT([adding ${PDPATH}/src to INCLUDES]) - PD_CPPFLAGS="-I${PDPATH}/src ${CPPFLAGS}" - - AC_MSG_RESULT([adding ${PDPATH}/src to LDFLAGS]) - PD_LDFLAGS="-L${PDPATH}/src ${LDFLAGS}" - else - if test -d "${PDPATH}"; then - AC_MSG_RESULT([adding ${PDPATH} to INCLUDES]) - PD_CPPFLAGS="-I${PDPATH} ${CPPFLAGS}" - fi - fi - if test -d "${PDPATH}/bin"; then - AC_MSG_RESULT([adding ${PDPATH}/bin to LDFLAGS]) - PD_LDFLAGS="-L${PDPATH}/bin ${LDFLAGS}" - else - if test -d "${PDPATH}"; then - AC_MSG_RESULT([adding ${PDPATH} to LDFLAGS]) - PD_LDFLAGS="-L${PDPATH} ${LDFLAGS}" - fi - fi -else - AC_MSG_RESULT([no pd path given, trying with pkg-config data]) - PD_CPPFLAGS=`pkg-config --cflags pd` - PD_LDFLAGS=`pkg-config --libs pd` -fi - -AC_MSG_CHECKING([extension]) -if test "x$with_extension" != "x" -then - EXTENSION=$with_extension -else - case "$KERN" in - Darwin) - EXTENSION=pd_darwin - ;; - Linux) - if test "$ARCH" == x86_64 - then - EXTENSION=l_ia64 - else - EXTENSION=l_i386 - fi - ;; - *CYGWIN*) - EXTENSION=dll - ;; - *MINGW*) - EXTENSION=dll - ;; - *) - EXTENSION=pd_linux - ;; - esac -fi -AC_MSG_RESULT([$EXTENSION]) - -AC_OUTPUT(Makefile) diff --git a/hoa.library b/hoa.library new file mode 160000 index 0000000..d27c224 --- /dev/null +++ b/hoa.library @@ -0,0 +1 @@ +Subproject commit d27c2249063f1130f09feba6c518dd2d88c967eb diff --git a/hoa.library.cbp b/hoa.library.cbp deleted file mode 100644 index f12fb70..0000000 --- a/hoa.library.cbp +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - diff --git a/hoa.library.cpp b/hoa.library.cpp deleted file mode 100644 index 7b8607f..0000000 --- a/hoa.library.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#include "hoa.library.hpp" - -char hoaversion[] = "Beta 2.2"; - -static t_eclass *cream_class; - -static void *hoa_new(t_symbol *s) -{ - t_eobj *x = (t_eobj *)eobj_new(cream_class); - if(x) - { - logpost(x, 3, "HOA Library by Pierre Guillot, Eliott Paris & Thomas Le Meur\n© 2013 - 2015 CICM | Paris 8 University\nVersion %s (%s) for Pure Data %i.%i\n",hoaversion, __DATE__, PD_MAJOR_VERSION, PD_MINOR_VERSION); - } - return (x); -} - - -extern "C" void hoa_setup(void) -{ - cream_class = eclass_new("hoa", (method)hoa_new, (method)eobj_free, (short)sizeof(t_eobj), CLASS_PD, A_NULL, 0); - cream_class = eclass_new("Hoa", (method)hoa_new, (method)eobj_free, (short)sizeof(t_eobj), CLASS_PD, A_NULL, 0); - t_eobj* obj = (t_eobj *)hoa_new(NULL); - if(!obj) - { - verbose(3, "HOA Library by Pierre Guillot, Eliott Paris & Thomas Le Meur\n© 2013 - 2015 CICM | Paris 8 University\nVersion %s (%s) for Pure Data %i.%i\n",hoaversion, __DATE__, PD_MAJOR_VERSION, PD_MINOR_VERSION); - eobj_free(obj); - } - - // HOA COMMON // - setup_hoa0x2econnect(); - setup_hoa0x2edac_tilde(); - setup_hoa0x2ein(); - setup_hoa0x2ein_tilde(); - setup_hoa0x2eout(); - setup_hoa0x2eout_tilde(); - setup_hoa0x2epi(); - setup_hoa0x2epi_tilde(); - setup_hoa0x2eprocess_tilde(); - setup_hoa0x2ethisprocess_tilde(); - setup_hoa0x2emap(); - - // HOA 2D // - setup_hoa0x2e2d0x2edecoder_tilde(); - setup_hoa0x2e2d0x2eencoder_tilde(); - setup_hoa0x2e2d0x2emap_tilde(); - setup_hoa0x2e2d0x2emeter_tilde(); - setup_hoa0x2e2d0x2eoptim_tilde(); - setup_hoa0x2e2d0x2eprojector_tilde(); - setup_hoa0x2e2d0x2erecomposer_tilde(); - setup_hoa0x2e2d0x2erotate_tilde(); - setup_hoa0x2e2d0x2escope_tilde(); - setup_hoa0x2e2d0x2espace(); - setup_hoa0x2e2d0x2ewider_tilde(); - setup_hoa0x2e2d0x2eexchanger_tilde(); - - // HOA 3D // - setup_hoa0x2e3d0x2edecoder_tilde(); - setup_hoa0x2e3d0x2eencoder_tilde(); - setup_hoa0x2e3d0x2eoptim_tilde(); - setup_hoa0x2e3d0x2ewider_tilde(); - setup_hoa0x2e3d0x2emap_tilde(); - setup_hoa0x2e3d0x2emeter_tilde(); - setup_hoa0x2e3d0x2escope_tilde(); - setup_hoa0x2e3d0x2eexchanger_tilde(); - - epd_add_folder("Hoa", "patchers"); - epd_add_folder("Hoa", "clippings"); - epd_add_folder("Hoa", "dependencies"); - epd_add_folder("Hoa", "media"); - epd_add_folder("Hoa", "misc"); -} - -extern "C" void Hoa_setup(void) -{ - hoa_setup(); -} - diff --git a/hoa.library.depend b/hoa.library.depend deleted file mode 100644 index 9d7846b..0000000 --- a/hoa.library.depend +++ /dev/null @@ -1,1339 +0,0 @@ -# depslib dependency file v1.0 -1397749542 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Ambisonic.cpp - "Ambisonic.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Ambisonic.h - "../Hoa.h" - -1399363326 /home/pierre/Git/HoaLibrary/Sources/Hoa.h - "HoaDefs.h" - "HoaMath.h" - "HoaUtils.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaDefs.h - - - - - - - - - - - - - - - "../ThirdParty/PureData/Sources/cicm_wrapper.h" - - - - - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaMath.h - - - - - - - - - - - - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaUtils.h - - - - - - - - - - - -1394725310 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/BinauralMatrix2D.cpp - "Ambisonic.h" - -1396597674 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/ChannelManager.cpp - "ChannelManager.h" - -1396597674 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/ChannelManager.h - "../Hoa.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Decoder.cpp - "Decoder.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Decoder.h - "Ambisonic.h" - "Planewaves.h" - "Encoder.h" - "Rotate.h" - -1396453490 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Planewaves.h - "../Hoa.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Encoder.h - "Ambisonic.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Rotate.h - "Ambisonic.h" - -1394725310 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Encoder.cpp - "Encoder.h" - -1397748870 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Kits.cpp - "Kits.h" - -1397748866 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Kits.h - "Ambisonic.h" - "Planewaves.h" - "Map.h" - "Optim.h" - "Decoder.h" - "Meter.h" - "SourcesManager.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Map.h - "Ambisonic.h" - "Encoder.h" - "Wider.h" - -1399363326 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Wider.h - "Ambisonic.h" - -1394808524 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Optim.h - "Ambisonic.h" - -1396790520 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Meter.h - "Planewaves.h" - "Vector.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Vector.h - "Planewaves.h" - -1396622550 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesManager.h - "../Hoa.h" - "Source.h" - "SourcesGroup.h" - -1394869916 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Source.h - "../Hoa.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesGroup.h - "Source.h" - "SourcesManager.h" - -1400081414 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Map.cpp - "Map.h" - -1394829224 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Meter.cpp - "Meter.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Optim.cpp - "Optim.h" - -1394725310 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Planewaves.cpp - "Planewaves.h" - -1394793038 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Projector.cpp - "Projector.h" - -1394792248 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Projector.h - "Ambisonic.h" - "Planewaves.h" - "Encoder.h" - -1394794966 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Recomposer.cpp - "Recomposer.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Recomposer.h - "Ambisonic.h" - "Planewaves.h" - "Encoder.h" - "Wider.h" - -1394791324 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Rotate.cpp - "Rotate.h" - -1394725310 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Scope.cpp - "Scope.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Scope.h - "Ambisonic.h" - "Decoder.h" - -1394869944 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Source.cpp - "Source.h" - -1394725310 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesGroup.cpp - "SourcesGroup.h" - -1399363326 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesManager.cpp - "SourcesManager.h" - -1396648678 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesPreset.cpp - "SourcesPreset.h" - -1394725310 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesPreset.h - "../Hoa.h" - "SourcesManager.h" - -1396972274 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesTrajectory.cpp - "SourcesTrajectory.h" - -1396970844 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/SourcesTrajectory.h - "SourcesPreset.h" - -1399363326 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Vector.cpp - "Vector.h" - -1399363326 source:/home/pierre/Git/HoaLibrary/Sources/Hoa2D/Wider.cpp - "Wider.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Ambisonic_3D.cpp - "Ambisonic_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Ambisonic_3D.h - "../Hoa.h" - -1400081414 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Tools_3D.h - - - - - - - - - - - - - -1398104268 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/BinauralMatrix_3D.cpp - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Decoder_3D.cpp - "Decoder_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Decoder_3D.h - "Ambisonic_3D.h" - "Planewaves_3D.h" - "Encoder_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Encoder_3D.h - "Ambisonic_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Encoder_3D.cpp - "Encoder_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Map_3D.cpp - "Map_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Map_3D.h - "Ambisonic_3D.h" - "Encoder_3D.h" - "Wider_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Wider_3D.h - "Ambisonic_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Meter_3D.cpp - "Meter_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Meter_3D.h - "Planewaves_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Planewaves_3D.h - "../Hoa.h" - -1398104268 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Optim_3D.cpp - "Optim_3D.h" - -1398104268 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Optim_3D.h - "Ambisonic_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Planewaves_3D.cpp - "Planewaves_3D.h" - -1398104268 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Rotate_3D.cpp - "Rotate_3D.h" - -1398104268 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Rotate_3D.h - "Ambisonic_3D.h" - "Encoder_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Scope_3D.cpp - "Scope_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Scope_3D.h - "Ambisonic_3D.h" - "Decoder_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Vector_3D.cpp - "Vector_3D.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Vector_3D.h - "Planewaves_3D.h" - -1398104268 source:/home/pierre/Git/HoaLibrary/Sources/Hoa3D/Wider_3D.cpp - "Wider_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.decoder_tilde.cpp - "Hoa2D.pd.h" - -1405693161 /home/pierre/Git/HoaLibrary/PureData/PD2D/Hoa2D.pd.h - "../hoa.pd.h" - "../../Sources/Hoa2D/Hoa2D.h" - -1398007440 /home/pierre/Git/HoaLibrary/PureData/hoa.pd.h - "../ThirdParty/PureData/Sources/cicm_wrapper.h" - "hoa.pd_commonsyms.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/cicm_wrapper.h - "epd.h" - "epd_max.h" - -1398085658 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/epd.h - "eclass/eclass.h" - -1394735284 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass.h - "../estruct.h" - "../ebox/ebox.h" - "../epopup/epopup.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/estruct.h - "ecommon/ecommon.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/ecommon.h - - - "pd-extented/m_pd.h" - "pd-extented/m_imp.h" - "pd-extented/g_canvas.h" - "pd-extented/s_stuff.h" - "m_pd.h" - "m_imp.h" - "g_canvas.h" - "s_stuff.h" - - - - - - - - - "eboxflag.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/m_pd.h - - - - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/m_imp.h - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/g_canvas.h - -1394735284 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/eboxflag.h - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox.h - "../estruct.h" - "../egraphics/egraphics.h" - "../eobj/eobj.h" - -1394735284 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics.h - "../estruct.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj.h - "../estruct.h" - "../egraphics/egraphics.h" - "../ecommon/ecommon.h" - -1394735284 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/epopup/epopup.h - "../estruct.h" - "../ebox/ebox.h" - -1405693161 /home/pierre/Git/HoaLibrary/PureData/hoa.pd_commonsyms.h - "../ThirdParty/PureData/Sources/cicm_wrapper.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/Hoa2D/Hoa2D.h - "../Hoa.h" - "Encoder.h" - "Rotate.h" - "Optim.h" - "Decoder.h" - "Wider.h" - "Map.h" - "Projector.h" - "Vector.h" - "Scope.h" - "Meter.h" - "Recomposer.h" - "ChannelManager.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.encoder_tilde.cpp - "Hoa2D.pd.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.map_gui.cpp - "Hoa2D.pd.h" - -1399363326 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.map_tilde.cpp - "Hoa2D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.meter_gui_tilde.cpp - "Hoa2D.pd.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.optim_tilde.cpp - "Hoa2D.pd.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.projector_tilde.cpp - "Hoa2D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.recomposer_tilde.cpp - "Hoa2D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.rotate_tilde.cpp - "Hoa2D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.scope_gui_tilde.cpp - "Hoa2D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.space_gui.cpp - "Hoa2D.pd.h" - -1398104266 source:/home/pierre/Git/HoaLibrary/PureData/PD2D/hoa.2d.wider_tilde.cpp - "Hoa2D.pd.h" - -1397765770 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.connect.cpp - "HoaCommon.pd.h" - -1405693161 /home/pierre/Git/HoaLibrary/PureData/PDCommon/HoaCommon.pd.h - "../hoa.pd.h" - "../../Sources/Hoa2D/Hoa2D.h" - "../../Sources/Hoa3D/Hoa3D.h" - "../../Sources/HoaCommon/HoaCommon.h" - -1400081414 /home/pierre/Git/HoaLibrary/Sources/Hoa3D/Hoa3D.h - "../Hoa.h" - "Encoder_3D.h" - "Decoder_3D.h" - "Wider_3D.h" - "Optim_3D.h" - "Rotate_3D.h" - "Meter_3D.h" - "Map_3D.h" - "Scope_3D.h" - "Vector_3D.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.dac_tilde.cpp - "HoaCommon.pd.h" - -1397765494 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.in.cpp - "HoaCommon.pd.h" - -1397765606 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.in_tilde.cpp - "HoaCommon.pd.h" - -1397765492 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.out.cpp - "HoaCommon.pd.h" - -1397765644 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.out_tilde.cpp - "HoaCommon.pd.h" - -1397765494 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.pi.cpp - "HoaCommon.pd.h" - -1397765672 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.pi_tilde.cpp - "HoaCommon.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.process_tilde.cpp - "HoaCommon.pd.h" - "../../ThirdParty/PureData/Sources/ecommon/d_ugen.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/d_ugen.h - "pd-extented/m_pd.h" - "pd-extented/m_imp.h" - "pd-extented/g_canvas.h" - "m_pd.h" - "m_imp.h" - "g_canvas.h" - - - -1397765762 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.thisprocess_tilde.cpp - "HoaCommon.pd.h" - -1381553388 /usr/include//stdio.h - - - - - - - - - - - - -1381553367 /usr/include//features.h - - - - -1381553367 /usr/include//stdc-predef.h - - -1381553367 /usr/include//bits/predefs.h - -1381553393 /usr/include//sys/cdefs.h - - - -1381553387 /usr/include//bits/wordsize.h - -1381553367 /usr/include//gnu/stubs.h - - - - -1381553491 /usr/include//gnu/stubs-32.h - -1381553413 /usr/include//gnu/stubs-64.h - -1381553565 /usr/include//gnu/stubs-x32.h - -1381553392 /usr/include//bits/types.h - - - - -1381553392 /usr/include//bits/typesizes.h - -1381553388 /usr/include//libio.h - <_G_config.h> - - - - - - -1381553388 /usr/include//_G_config.h - - - - - -1381553390 /usr/include//wchar.h - - - - - - - - - - - - - -1381553390 /usr/include//bits/wchar.h - -1381553395 /usr/include//wctype.h - - - - - - -1381553389 /usr/include//endian.h - - - - -1381553389 /usr/include//bits/endian.h - -1381553389 /usr/include//bits/byteswap.h - - - - - -1381553389 /usr/include//bits/byteswap-16.h - -1381553368 /usr/include//xlocale.h - -1381553390 /usr/include//bits/wchar2.h - -1381553390 /usr/include//bits/wchar-ldbl.h - -1381553367 /usr/include//gconv.h - - - - -1381553388 /usr/include//bits/stdio-lock.h - - - -1381553367 /usr/include//bits/libc-lock.h - - - - - - - - "libc-lockP.h" - -1381553399 /usr/include//pthread.h - - - - - - - - -1381553392 /usr/include//sched.h - - - - - - -1381553390 /usr/include//time.h - - - - - - - - - - -1381553390 /usr/include//bits/time.h - - - - -1381553390 /usr/include//bits/timex.h - - -1381553392 /usr/include//bits/sched.h - -1381553392 /usr/include//bits/pthreadtypes.h - - -1381553386 /usr/include//bits/setjmp.h - - -1381553387 /usr/include//errno.h - - - -1381553387 /usr/include//bits/errno.h - - -1394567065 /usr/include//linux/errno.h - - -1394567069 /usr/include//asm/errno.h - - -1394567061 /usr/include//asm-generic/errno.h - - -1394567061 /usr/include//asm-generic/errno-base.h - -1381553408 /usr/include//gnu/option-groups.h - -1381553388 /usr/include//bits/libio-ldbl.h - -1381553387 /usr/include//bits/stdio_lim.h - -1381553388 /usr/include//bits/sys_errlist.h - -1381553392 /usr/include//getopt.h - - -1381553383 /usr/include//ctype.h - - - - - -1381553388 /usr/include//bits/stdio.h - -1381553388 /usr/include//bits/stdio2.h - -1381553388 /usr/include//bits/stdio-ldbl.h - -1381553383 /usr/include//assert.h - - -1381553386 /usr/include//stdlib.h - - - - - - - - - - - -1381553392 /usr/include//bits/waitflags.h - -1381553392 /usr/include//bits/waitstatus.h - - -1381553392 /usr/include//sys/types.h - - - - - - - - - -1381553394 /usr/include//sys/select.h - - - - - - - - -1381553394 /usr/include//bits/select.h - - -1381553386 /usr/include//bits/sigset.h - -1381553394 /usr/include//bits/select2.h - -1381553392 /usr/include//sys/sysmacros.h - - -1381553387 /usr/include//alloca.h - - - -1381553386 /usr/include//bits/stdlib-float.h - -1381553386 /usr/include//bits/stdlib.h - -1381553386 /usr/include//bits/stdlib-ldbl.h - -1381553387 /usr/include//stdint.h - - - - -1381553385 /usr/include//math.h - - - - - - - - - - - - - -1381553385 /usr/include//bits/huge_val.h - - -1381553385 /usr/include//bits/huge_valf.h - -1381553385 /usr/include//bits/huge_vall.h - -1381553385 /usr/include//bits/inf.h - -1381553385 /usr/include//bits/nan.h - - -1381553385 /usr/include//bits/mathdef.h - -1381553385 /usr/include//bits/mathcalls.h - -1381553385 /usr/include//bits/mathinline.h - -1381553385 /usr/include//bits/math-finite.h - -1398126610 /usr/include//cblas.h - -1381553389 /usr/include//string.h - - - - - - - -1381553389 /usr/include//bits/string.h - -1381553389 /usr/include//bits/string2.h - - - - -1381553389 /usr/include//bits/string3.h - -1381553392 /usr/include//unistd.h - - - - - - - - - -1381553392 /usr/include//bits/posix_opt.h - -1381553392 /usr/include//bits/environments.h - - -1381553392 /usr/include//bits/confname.h - -1381553392 /usr/include//bits/unistd.h - -1381553392 /usr/include//fcntl.h - - - - - - - -1381553392 /usr/include//bits/fcntl.h - - -1381553392 /usr/include//bits/fcntl-linux.h - - - -1381553393 /usr/include//bits/uio.h - - -1381553392 /usr/include//bits/stat.h - -1381553392 /usr/include//bits/fcntl2.h - -1398158425 /usr/lib/openBlas/include//cblas.h - - "openblas_config.h" - -1398158425 /usr/lib/openBlas/include//openblas_config.h - - - -1396335254 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_attr.c - "ebox.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_basic.c - "ebox.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_draw.c - "ebox.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_handle.c - "ebox.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_patcher.c - "ebox.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ebox/ebox_window.c - "ebox.h" - -1396007594 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_attrgetter.c - "eclass.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_attrnew.c - "eclass.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_attroptions.c - "eclass.h" - -1396007594 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_attrsetter.c - "eclass.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_basic.c - "eclass.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eclass/eclass_widget.c - "eclass.h" - -1396255558 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/d_ugen.c - "d_ugen.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/ecommon.c - "ecommon.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics.c - "egraphics.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics_color.c - "egraphics.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics_forms.c - "egraphics.h" - -1394805624 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics_matrix.c - "egraphics.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/egraphics/egraphics_text.c - "egraphics.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj_basic.c - "eobj.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj_dsp.c - "eobj.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj_handle.c - "eobj.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj_proxy.c - "eobj.h" - -1405693237 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/eobj/eobj_router.c - "eobj.h" - -1394735284 source:/home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/epopup/epopup.c - "epopup.h" - -1398005960 source:/home/pierre/Git/HoaLibrary/PureData/hoa.pd.cpp - "hoa.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/hoa.library.cpp - "PDCommon/HoaCommon.pd.h" - "PD2D/Hoa2D.pd.h" - "PD3D/Hoa3D.pd.h" - -1405693161 /home/pierre/Git/HoaLibrary/PureData/PD3D/Hoa3D.pd.h - "../hoa.pd.h" - "../../Sources/Hoa3D/Hoa3D.h" - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/pd-extented/m_pd.h - - - - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/pd-extented/m_imp.h - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/pd-extented/g_canvas.h - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/pd-extented/s_stuff.h - -1405693237 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/ecommon/s_stuff.h - -1398085658 /home/pierre/Git/HoaLibrary/ThirdParty/PureData/Sources/epd_max.h - -1405693163 /home/pierre/Git/HoaLibrary/ThirdParty/CBlas/Header/cblas.h - - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/HoaCommon/Source.cpp - "Source.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaCommon/Source.h - "../Hoa.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/HoaCommon/SourcesGroup.cpp - "SourcesGroup.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaCommon/SourcesGroup.h - "Source.h" - "SourcesManager.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaCommon/SourcesManager.h - "../Hoa.h" - "Source.h" - "SourcesGroup.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/Sources/HoaCommon/SourcesManager.cpp - "SourcesManager.h" - -1405693161 /home/pierre/Git/HoaLibrary/Sources/HoaCommon/HoaCommon.h - "../Hoa.h" - "Source.h" - "SourcesGroup.h" - "SourcesManager.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.decoder_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.encoder_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.map_tilde.cpp - "Hoa3D.pd.h" - - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.meter_gui_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.optim_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.scope_gui_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PD3D/hoa.3d.wider_tilde.cpp - "Hoa3D.pd.h" - -1405693161 source:/home/pierre/Git/HoaLibrary/PureData/PDCommon/hoa.map_gui.cpp - "HoaCommon.pd.h" - -1405581357 /home/pierre/Git/HoaLibrary/ThirdParty/CBlas/Linux32/include/cblas.h - - "common.h" - -1433951444 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.decoder_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433504703 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/hoa.library.hpp - "ThirdParty/CicmWrapper/Sources/cicm_wrapper.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/cicm_wrapper.h - "epd.h" - "epd_max.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/epd.h - "eclass/eclass.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass.h - "../estruct.h" - "../ebox/ebox.h" - "../epopup/epopup.h" - -1433594511 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/estruct.h - "ecommon/ecommon.h" - -1433721076 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/ecommon.h - - - "pd-extended/m_pd.h" - "pd-extended/m_imp.h" - "pd-extended/g_canvas.h" - "pd-vanilla/m_pd.h" - "pd-vanilla/m_imp.h" - "pd-vanilla/g_canvas.h" - - - - - - - - - "eboxflag.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-extended/m_pd.h - - - - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-extended/m_imp.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-extended/g_canvas.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-extended/s_stuff.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-vanilla/m_pd.h - - - - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-vanilla/m_imp.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-vanilla/g_canvas.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/pd-vanilla/s_stuff.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/eboxflag.h - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox.h - "../estruct.h" - "../egraphics/egraphics.h" - "../eobj/eobj.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics.h - "../estruct.h" - -1433721076 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj.h - "../estruct.h" - "../egraphics/egraphics.h" - "../ecommon/ecommon.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/epopup/epopup.h - "../estruct.h" - "../ebox/ebox.h" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/epd_max.h - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Hoa.hpp - "Harmonics.hpp" - "Planewaves.hpp" - "Encoder.hpp" - "Optim.hpp" - "Rotate.hpp" - "Decoder.hpp" - "Vector.hpp" - "Meter.hpp" - "Projector.hpp" - "Recomposer.hpp" - "Scope.hpp" - "Wider.hpp" - "Source.hpp" - "Exchanger.hpp" - "Tools.hpp" - -1433929504 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Harmonics.hpp - "Math.hpp" - "Signal.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Math.hpp - "Defs.hpp" - -1433951014 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Defs.hpp - - - - - - - "../../CicmWrapper/Sources/cicm_wrapper.h" - - - - - -1433337943 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Signal.hpp - "Defs.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Planewaves.hpp - "Math.hpp" - "Signal.hpp" - -1434024546 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Encoder.hpp - "Processor.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Processor.hpp - "Harmonics.hpp" - "Planewaves.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Optim.hpp - "Processor.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Rotate.hpp - "Processor.hpp" - -1433594503 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Decoder.hpp - "Encoder.hpp" - "Hrtf.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Hrtf.hpp - "Defs.hpp" - -1433721088 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Vector.hpp - "Planewaves.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Meter.hpp - "Planewaves.hpp" - "Voronoi.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Voronoi.hpp - "Defs.hpp" - "Math.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Projector.hpp - "Encoder.hpp" - "Planewaves.hpp" - -1434024821 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Recomposer.hpp - "Encoder.hpp" - "Planewaves.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Scope.hpp - "Encoder.hpp" - "Planewaves.hpp" - -1433293533 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Wider.hpp - "Processor.hpp" - -1433462805 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Source.hpp - "Math.hpp" - -1434020049 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Tools.hpp - "Math.hpp" - "Signal.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.encoder_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433594516 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.io.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.map_gui.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433865130 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.map_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433528952 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.meter_gui_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433930206 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.process_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293514 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/d_ugen.h - "pd-extended/m_pd.h" - "pd-extended/m_imp.h" - "pd-extended/g_canvas.h" - "pd-extended/s_stuff.h" - "pd-vanilla/m_pd.h" - "pd-vanilla/m_imp.h" - "pd-vanilla/g_canvas.h" - "pd-vanilla/s_stuff.h" - - - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.projector_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1434021818 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.recomposer_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.rotate_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433463849 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.scope_gui_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.space_gui.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433594516 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.tools.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.wider_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433594511 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_attr.c - "ebox.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_patcher.c - "ebox.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_window.c - "ebox.h" - -1433594511 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_attrnew.c - "eclass.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_attroptions.c - "eclass.h" - -1433462592 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/d_ugen.c - "d_ugen.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics.c - "egraphics.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics_color.c - "egraphics.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics_forms.c - "egraphics.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics_matrix.c - "egraphics.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/egraphics/egraphics_text.c - "egraphics.h" - -1433528913 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj_basic.c - "eobj.h" - -1433862671 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj_dsp.c - "eobj.h" - -1433594511 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj_handle.c - "eobj.h" - -1433721076 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj_router.c - "eobj.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/epopup/epopup.c - "epopup.h" - -1433411905 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/hoa.library.cpp - "hoa.library.hpp" - -1433929035 /home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/HoaLibrary/Sources/Exchanger.hpp - "Processor.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.exchanger_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293417 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/Sources/hoa.optim_tilde.cpp - "../hoa.library.hpp" - "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_basic.c - "ebox.h" - -1433594511 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_draw.c - "ebox.h" - -1433594511 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ebox/ebox_handle.c - "ebox.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_attrgetter.c - "eclass.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_attrsetter.c - "eclass.h" - -1433428389 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_basic.c - "eclass.h" - -1433293514 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eclass/eclass_widget.c - "eclass.h" - -1433462607 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/ecommon/ecommon.c - "ecommon.h" - -1433861289 source:/home/thomas94/Logiciels/CICM/HoaLibrary-PD/ThirdParty/CicmWrapper/Sources/eobj/eobj_proxy.c - "eobj.h" - diff --git a/hoa.library.hpp b/hoa.library.hpp deleted file mode 100644 index 3941398..0000000 --- a/hoa.library.hpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ - -#ifndef DEF_HOA_PD -#define DEF_HOA_PD - -extern "C" -{ -#include "ThirdParty/CicmWrapper/Sources/cicm_wrapper.h" -} - -#define HOA_MAX_PLANEWAVES 128 -#define HOA_MAXBLKSIZE 8192 -#define HOA_UI_BORDERTHICKNESS 1 -#define HOA_UI_CORNERSIZE 8 -#define HOA_CONTRAST_LIGHTER 0.06f -#define HOA_CONTRAST_DARKER 0.14f -#define HOA_DISPLAY_NPOINTS 180 - -typedef struct _hoa_in -{ - t_eobj f_obj; - int f_extra; -} t_hoa_in; - -typedef struct _hoa_out -{ - t_eobj f_obj; - t_outlet *f_outlet; - int f_extra; -} t_hoa_out; - -typedef struct _hoa_in_tilde -{ - t_edspobj f_obj; - t_sample* f_signal; - int f_extra; -} t_hoa_in_tilde; - -typedef struct _hoa_out_tilde -{ - t_edspobj f_obj; - t_sample* f_signal; - int f_extra; -} t_hoa_out_tilde; - -typedef struct _hoa_thisprocess -{ - t_eobj j_box; - char f_nit; - - t_outlet* f_out_hoa_args; - t_outlet* f_out_hoa_mode; - t_outlet* f_out_args; - t_outlet* f_out_attrs; - t_outlet* f_out_mute; - - t_atom f_hoa_args[3]; - t_atom f_hoa_mode[2]; - - t_atom* f_args; - int f_argc; - - int f_n_attrs; - t_symbol** f_attr_name; - t_atom* f_attr_vals[64]; - int f_attr_size[64]; - double f_time; -} t_hoa_thisprocess; - -extern "C" void Hoa_setup(void); -extern "C" void hoa_setup(void); - -extern "C" void setup_hoa0x2econnect(void); -extern "C" void setup_hoa0x2edac_tilde(void); -extern "C" void setup_hoa0x2ein(void); -extern "C" void setup_hoa0x2ein_tilde(void); -extern "C" void setup_hoa0x2eout(void); -extern "C" void setup_hoa0x2eout_tilde(void); -extern "C" void setup_hoa0x2epi(void); -extern "C" void setup_hoa0x2epi_tilde(void); -extern "C" void setup_hoa0x2eprocess_tilde(void); -extern "C" void setup_hoa0x2ethisprocess_tilde(void); -extern "C" void setup_hoa0x2emap(void); - -extern "C" void setup_hoa0x2e2d0x2ewider_tilde(void); -extern "C" void setup_hoa0x2e2d0x2escope_tilde(void); -extern "C" void setup_hoa0x2e2d0x2espace(void); -extern "C" void setup_hoa0x2e2d0x2erotate_tilde(void); -extern "C" void setup_hoa0x2e2d0x2erecomposer_tilde(void); -extern "C" void setup_hoa0x2e2d0x2eprojector_tilde(void); -extern "C" void setup_hoa0x2e2d0x2eoptim_tilde(void); -extern "C" void setup_hoa0x2e2d0x2emeter_tilde(void); -extern "C" void setup_hoa0x2e2d0x2emap_tilde(void); -extern "C" void setup_hoa0x2e2d0x2eencoder_tilde(void); -extern "C" void setup_hoa0x2e2d0x2edecoder_tilde(void); -extern "C" void setup_hoa0x2e2d0x2eexchanger_tilde(void); - -extern "C" void setup_hoa0x2e3d0x2ewider_tilde(void); -extern "C" void setup_hoa0x2e3d0x2edecoder_tilde(void); -extern "C" void setup_hoa0x2e3d0x2eencoder_tilde(void); -extern "C" void setup_hoa0x2e3d0x2eoptim_tilde(void); -extern "C" void setup_hoa0x2e3d0x2ewider_tilde(void); -extern "C" void setup_hoa0x2e3d0x2emap_tilde(void); -extern "C" void setup_hoa0x2e3d0x2emeter_tilde(void); -extern "C" void setup_hoa0x2e3d0x2escope_tilde(void); -extern "C" void setup_hoa0x2e3d0x2eexchanger_tilde(void); - -static t_symbol* hoa_sym_none = gensym("none"); -static t_symbol* hoa_sym_energy = gensym("energy"); -static t_symbol* hoa_sym_velocity = gensym("velocity"); -static t_symbol* hoa_sym_both = gensym("both"); -static t_symbol* hoa_sym_clockwise = gensym("clockwise"); -static t_symbol* hoa_sym_anticlock = gensym("anti-clockwise"); -static t_symbol* hoa_sym_vector_layer = gensym("vectors_layer"); -static t_symbol* hoa_sym_leds_layer = gensym("leds_layers"); -static t_symbol* hoa_sym_top = gensym("top"); -static t_symbol* hoa_sym_bottom = gensym("bottom"); -static t_symbol* hoa_sym_toponbottom = gensym("top/bottom"); -static t_symbol* hoa_sym_topnextbottom = gensym("top-bottom"); - -static t_symbol* hoa_sym_basic = gensym("basic"); -static t_symbol* hoa_sym_maxRe = gensym("maxRe"); -static t_symbol* hoa_sym_inPhase = gensym("inPhase"); - -static t_symbol* hoa_sym_fixe = gensym("fixe"); -static t_symbol* hoa_sym_fisheye = gensym("fisheye"); -static t_symbol* hoa_sym_free = gensym("free"); - -static t_symbol* hoa_sym_all = gensym("all"); -static t_symbol* hoa_sym_canvas = gensym("canvas"); -static t_symbol* hoa_sym_2d = gensym("2d"); -static t_symbol* hoa_sym_3d = gensym("3d"); -static t_symbol* hoa_sym_harmonics = gensym("harmonics"); -static t_symbol* hoa_sym_planewaves = gensym("planewaves"); -static t_symbol* hoa_sym_hoa_thisprocess = gensym("hoa.thisprocess~"); -static t_symbol* hoa_sym_hoa_process = gensym("hoa.process~"); -static t_symbol* hoa_sym_hoa_2d_process = gensym("hoa.2d.process~"); -static t_symbol* hoa_sym_hoa_3d_process = gensym("hoa.3d.process~"); -static t_symbol* hoa_sym_hoa_in = gensym("hoa.in"); -static t_symbol* hoa_sym_hoa_in_tilde = gensym("hoa.in~"); -static t_symbol* hoa_sym_hoa_out = gensym("hoa.out"); -static t_symbol* hoa_sym_hoa_out_tilde = gensym("hoa.out~"); -static t_symbol* hoa_sym_obj = gensym("obj"); - - -static t_symbol* hoa_sym_order = gensym("order"); -static t_symbol* hoa_sym_offset = gensym("offset"); -static t_symbol* hoa_sym_nhcolor = gensym("nhcolor"); -static t_symbol* hoa_sym_phcolor = gensym("phcolor"); - -// notify -static t_symbol* hoa_sym_null = gensym("(null)"); -static t_symbol* hoa_sym_nothing = gensym(""); -static t_symbol* hoa_sym_notify = gensym("notify"); -static t_symbol* hoa_sym_modified = gensym("modified"); -static t_symbol* hoa_sym_attr_modified = gensym("attr_modified"); - -// Methods -static t_symbol* hoa_sym_set = gensym("set"); -static t_symbol* hoa_sym_bang = gensym("bang"); -static t_symbol* hoa_sym_float = gensym("float"); -static t_symbol* hoa_sym_int = gensym("int"); -static t_symbol* hoa_sym_list = gensym("list"); -static t_symbol* hoa_sym_anything = gensym("anything"); -static t_symbol* hoa_sym_dynlet_begin = gensym("dynlet_begin"); -static t_symbol* hoa_sym_dynlet_end = gensym("dynlet_end"); -static t_symbol* hoa_sym_start = gensym("start"); -static t_symbol* hoa_sym_stop = gensym("stop"); - -// Trigo -static t_symbol* hoa_sym_cartesian = gensym("cartesian"); -static t_symbol* hoa_sym_car = gensym("car"); -static t_symbol* hoa_sym_polar = gensym("polar"); -static t_symbol* hoa_sym_pol = gensym("pol"); -static t_symbol* hoa_sym_mute = gensym("mute"); -static t_symbol* hoa_sym_abscissa = gensym("abscissa"); -static t_symbol* hoa_sym_ordinate = gensym("ordinate"); -static t_symbol* hoa_sym_height = gensym("height"); -static t_symbol* hoa_sym_radius = gensym("radius"); -static t_symbol* hoa_sym_azimuth = gensym("azimuth"); -static t_symbol* hoa_sym_elevation = gensym("elevation"); -static t_symbol* hoa_sym_angle = gensym("angle"); -static t_symbol* hoa_sym_angles = gensym("angles"); -static t_symbol* hoa_sym_directivities = gensym("directivities"); - -// Paint -static t_symbol* hoa_sym_rect = gensym("rect"); -static t_symbol* hoa_sym_bgcolor = gensym("bgcolor"); -static t_symbol* hoa_sym_size = gensym("size"); -static t_symbol* hoa_sym_bdcolor = gensym("bdcolor"); - -// Map -static t_symbol* hoa_sym_source = gensym("source"); -static t_symbol* hoa_sym_group = gensym("group"); -static t_symbol* hoa_sym_slot = gensym("slot"); -static t_symbol* hoa_sym_remove = gensym("remove"); -static t_symbol* hoa_sym_description = gensym("description"); -static t_symbol* hoa_sym_color = gensym("color"); - -// recomposer -static t_symbol* hoa_sym_channels = gensym("channels"); - -// Layers -static t_symbol* hoa_sym_background_layer = gensym("background_layer"); -static t_symbol* hoa_sym_sources_layer = gensym("sources_layer"); -static t_symbol* hoa_sym_groups_layer = gensym("groups_layer"); -static t_symbol* hoa_sym_rect_selection_layer = gensym("rect_selection_layer"); -static t_symbol* hoa_sym_harmonics_layer = gensym("harmonics_layer"); -static t_symbol* hoa_sym_space_layer = gensym("space_layer"); -static t_symbol* hoa_sym_points_layer = gensym("points_layer"); -static t_symbol* hoa_sym_channels_layer = gensym("channels_layer"); -static t_symbol* hoa_sym_text_layer = gensym("text_layer"); -static t_symbol* hoa_sym_fisheye_layer = gensym("fisheye_layer"); -static t_symbol* hoa_sym_rectselection_layer = gensym("rectselection_layer"); - - -static t_symbol* hoa_sym_relpolar = gensym("relpolar"); -static t_symbol* hoa_sym_relativepolar = gensym("relativepolar"); -static t_symbol* hoa_sym_relradius = gensym("relradius"); -static t_symbol* hoa_sym_relazimuth = gensym("relazimuth"); -static t_symbol* hoa_sym_relelevation = gensym("relelevation"); -static t_symbol* hoa_sym_relativeradius = gensym("relativeradius"); -static t_symbol* hoa_sym_relangle = gensym("relangle"); -static t_symbol* hoa_sym_relativeangle = gensym("relativeangle"); - -// Preset -static t_symbol* hoa_sym_store = gensym("store"); -static t_symbol* hoa_sym_storeagain = gensym("storeagain"); -static t_symbol* hoa_sym_storeempty = gensym("storeempty"); -static t_symbol* hoa_sym_storeend = gensym("storeend"); -static t_symbol* hoa_sym_storenext = gensym("storenext"); -static t_symbol* hoa_sym_insert = gensym("insert"); -static t_symbol* hoa_sym_delete = gensym("delete"); -static t_symbol* hoa_sym_copy = gensym("copy"); -static t_symbol* hoa_sym_renumber = gensym("renumber"); -static t_symbol* hoa_sym_clear = gensym("clear"); -static t_symbol* hoa_sym_recall = gensym("recall"); -static t_symbol* hoa_sym_read = gensym("read"); -static t_symbol* hoa_sym_write = gensym("write"); -static t_symbol* hoa_sym_storesource = gensym("storesource"); -static t_symbol* hoa_sym_storegroup = gensym("storegroup"); -static t_symbol* hoa_sym_record = gensym("record"); -static t_symbol* hoa_sym_limit = gensym("limit"); -static t_symbol* hoa_sym_erase = gensym("erase"); -static t_symbol* hoa_sym_erasepart = gensym("erasepart"); - -static t_symbol* hoa_sym_endeditbox = gensym("endeditbox"); -static t_symbol* hoa_sym_text = gensym("text"); -static t_symbol* hoa_sym_getname = gensym("getname"); - -static t_symbol* hoa_sym_zoom = gensym("zoom"); -static t_symbol* hoa_sym_number = gensym("number"); -static t_symbol* hoa_sym_index = gensym("index"); - - -#endif diff --git a/hoa.library.layout b/hoa.library.layout deleted file mode 100644 index 77dc984..0000000 --- a/hoa.library.layout +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hoa.library.sln b/hoa.library.sln deleted file mode 100644 index 66086e6..0000000 --- a/hoa.library.sln +++ /dev/null @@ -1,19 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hoa.library", "hoa.library.vcxproj", "{B05BC6DD-018B-4BE9-BA64-D5BE00CECD66}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B05BC6DD-018B-4BE9-BA64-D5BE00CECD66}.Release|Win32.ActiveCfg = Release|Win32 - {B05BC6DD-018B-4BE9-BA64-D5BE00CECD66}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/hoa.library.vcxproj b/hoa.library.vcxproj deleted file mode 100644 index 69f1e2f..0000000 --- a/hoa.library.vcxproj +++ /dev/null @@ -1,144 +0,0 @@ - - - - - Release - Win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {B05BC6DD-018B-4BE9-BA64-D5BE00CECD66} - Win32Proj - - - - DynamicLibrary - Unicode - false - No - v100 - false - false - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - false - Package\Hoa\ - - - Hoa - - - - Full - OnlyExplicitInline - true - C:\Program Files (x86)\pd\src;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_USRDLL;NT;PD;PD_DEBUG;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - - - Level1 - - - Default - true - Speed - true - SyncCThrow - false - Default - NotSet - - - /MACHINE:I386 /EXPORT:Hoa_setup %(AdditionalOptions) - C:\Program Files (x86)\pd\bin\pd.lib;/LTCG;%(AdditionalDependencies) - Package/Hoa/Hoa.dll - true - C:\Program Files (x86)\pd\src;%(AdditionalLibraryDirectories) - true - Windows - true - true - MachineX86 - - - - - - - - - - \ No newline at end of file diff --git a/hoa.library.vcxproj.filters b/hoa.library.vcxproj.filters deleted file mode 100644 index 9198af1..0000000 --- a/hoa.library.vcxproj.filters +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\CicmWrapper\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - ThirdParty\HoaLibrary\Sources - - - - - {b3aebb6f-543d-4596-8dbd-9bb37a409a5f} - - - {6eefb62e-ee0d-4771-930b-007d3a4ec40a} - - - {1eb5fb40-43d7-4805-96e3-972965a43934} - - - {9f897de8-2ae3-4e59-ab38-95448cfd1da4} - - - {46d51b5e-cd3e-4313-8573-8fa47ad8b0e4} - - - {fc204b33-a443-4b12-a141-66a1ba2dbae9} - - - \ No newline at end of file diff --git a/hoa/hoa-help.pd b/hoa/hoa-help.pd new file mode 100644 index 0000000..391ca88 --- /dev/null +++ b/hoa/hoa-help.pd @@ -0,0 +1 @@ +#N canvas 157 166 465 417 10; diff --git a/hoa/hoa.2d.decoder~-help.pd b/hoa/hoa.2d.decoder~-help.pd new file mode 100644 index 0000000..00d5f05 --- /dev/null +++ b/hoa/hoa.2d.decoder~-help.pd @@ -0,0 +1,75 @@ +#N canvas 689 40 662 545 10; +#X text 8 72 1st argument is the order., f 60; +#X msg 463 336 \; pd dsp 1; +#X msg 463 371 \; pd dsp 0; +#X text 8 35 hoa.2d.decoder~ decodes an ambisonic sound field for several +loudspeakers configurations or for headphones.; +#X obj 568 107 hoa.pi~ 2; +#X obj 568 85 phasor~ 0.3; +#X obj 403 106 misc//hoa.hgain~; +#X obj 403 421 hoa.dac~ 1 2, f 28; +#X obj 405 500 hoa-help; +#X obj 10 9 cnv 15 200 20 empty empty hoa.2d.decoder~ 4 10 0 14 -233017 +-66577 0; +#X obj 403 137 hoa.2d.encoder~ 7, f 28; +#X obj 403 298 hoa.2d.decoder~ 7 binaural 2 -crop 256, f 28; +#X text 8 86 2nd argument is the decoding mode : regular \, irregular +or binaural (for headphones)., f 60; +#X text 8 155 • Regular decoding is used for a perfect circle of +loudspeakers \, where all the loudspeakers are to equally spaced. The +minimum number of loudspeakers is 2 * order + 1 (default : 2 * order ++ 2). Ex:, f 60; +#X obj 10 314 hoa.2d.decoder~ 7 irregular 5 -angles 0 30 110 250 330 +; +#X obj 10 215 hoa.2d.decoder~ 7 regular 16 -offset 45, f 42; +#X text 8 113 3rd argument is the number of loudspeakers (minmum 2 +* order + 1 for regular mode) for regular or irregular modes.; +#X text 8 248 • Irregular decoding is used for other configurations +line mono (1) \, stereo (2) \, 3.1 (3) \, quadriphonie (4) \, 5.1 (5) +\, 6.1 \, 7.1. You should use "inPhase" optimization to avoid artefacts. +Ex:, f 60; +#X text 8 412 -offset attribute defines the rotation of the loudspeakers +(in degrees). Only available for regular and irregular modes.; +#X text 8 452 -angles attribute defines the angles of the loudspeakers +(in degrees). Only available for irregular mode.; +#X text 8 482 -crop attribute defines the size of the HRIRs (in samples). +the maximum is 512 samples. Only available for binaural mode.; +#X text 8 351 • Binaural decoding is used for headphones. If the +decoding cost too much CPU \, you can crop the HRIRs. Example on the +right:; +#X obj 454 59 max~ 0; +#X obj 403 83 *~, f 9; +#X obj 403 37 noise~; +#X obj 454 37 osc~ 7; +#X obj 403 59 *~ 0.25; +#X obj 403 332 misc/hoa.vmeter~; +#X obj 568 332 misc/hoa.vmeter~; +#X obj 405 478 misc/hoa.credits; +#X connect 4 0 10 1; +#X connect 5 0 4 0; +#X connect 6 0 10 0; +#X connect 10 0 11 0; +#X connect 10 1 11 1; +#X connect 10 2 11 2; +#X connect 10 3 11 3; +#X connect 10 4 11 4; +#X connect 10 5 11 5; +#X connect 10 6 11 6; +#X connect 10 7 11 7; +#X connect 10 8 11 8; +#X connect 10 9 11 9; +#X connect 10 10 11 10; +#X connect 10 11 11 11; +#X connect 10 12 11 12; +#X connect 10 13 11 13; +#X connect 10 14 11 14; +#X connect 11 0 7 0; +#X connect 11 0 27 0; +#X connect 11 1 7 1; +#X connect 11 1 28 0; +#X connect 22 0 23 1; +#X connect 23 0 6 0; +#X connect 24 0 26 0; +#X connect 25 0 22 0; +#X connect 26 0 23 0; +#X coords 0 545 1 544 100 60 0; diff --git a/hoa/hoa.2d.encoder~-help.pd b/hoa/hoa.2d.encoder~-help.pd new file mode 100644 index 0000000..6580019 --- /dev/null +++ b/hoa/hoa.2d.encoder~-help.pd @@ -0,0 +1,223 @@ +#N struct 1312-t-scope float x array bufr 1312-t-scope-value-r array +bufg 1312-t-scope-value-g; +#N struct 1312-t-scope-value-r float x float y; +#N struct 1312-t-scope-value-g float x float y; +#N canvas 395 64 767 441 10; +#X msg 253 336 \; pd dsp 1; +#X msg 253 371 \; pd dsp 0; +#X obj 551 97 hoa.pi~ 2; +#X obj 564 122 misc//hoa.number~; +#X obj 386 410 hoa.dac~ 1:16, f 28; +#X obj 386 382 hoa.2d.decoder~ 7 regular 16; +#X obj 386 120 hoa.2d.encoder~ 7, f 28; +#X obj 386 68 misc//hoa.hgain~; +#X obj 6 7 cnv 15 200 20 empty empty hoa.2d.encoder~ 4 10 0 14 -233017 +-66577 0; +#X text 18 169 Y[l \, m](θ) = sin(|m|*θ), f 57; +#X text 6 140 with the complex exponential e^i that can be expressed +by, f 59; +#X text 6 155 if m < 0, f 59; +#X text 6 183 else if m >= 0, f 59; +#X text 18 197 Y[l \, m](θ) = cos(|m|*θ), f 57; +#X text 6 211 with l the degree \, m the azimuthal order \, θ the +azimuth and S the signal to encode.; +#X text 6 40 hoa.2d.encoder~ generates the signal of the 2N+1 circular +harmonics of a sound source depending on the order of decomposition +N and an azimuth θ., f 59; +#X text 6 89 Each generated signal of the sound field carries the source +signal weighted by its associated harmonic Y defined by; +#X text 622 108 azimuth θ in radian (-π & π), f 17; +#X text 6 251 The signal of the circular harmonics are not normalized +\, they are defined between -1 and 1 \, even for the first omnidirectional +harmonic Y[0 \, 0]. The harmonics Y[l \, m] are ordered following the +ACN:; +#X text 6 304 Y[0 \, Ø] \, Y[1 \, -1] \, Y[1 \, 1] \, Y[2 \, -2] \, +... \, Y[N \, -N] \, Y[N \, N]; +#X text 391 86 The argument is the order of decomposition N., f 25 +; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 1312-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0.00486132 0.00178012 \; 0.0109824 0.00446462 +\; 0.0161563 0.00723861 \; 0.0200426 0.00983843 \; 0.022406 0.0119921 +\; 0.0231307 0.0134449 \; 0.0222259 0.0139849 \; 0.0198213 0.0134654 +\; 0.0161535 0.0118231 \; 0.0115439 0.0090882 \; 0.00637135 0.00538869 +\; 0.00104025 0.000944386 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0.00236562 0.00596877 +\; 0.00451774 0.0126811 \; 0.00594489 0.0187433 \; 0.00660734 0.0236863 +\; 0.00654616 0.0271096 \; 0.00587528 0.0287132 \; 0.00476696 0.0283252 +\; 0.00343115 0.025916 \; 0.00209212 0.0216063 \; 0.000963187 0.0156605 +\; 0.00022303 0.0084702 \; -4.6329e-06 0.000527857 \; -0 0 \; -0 0 +\; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -7.27247e-06 1.58574e-05 \; -0.00428586 0.00854074 \; -0.00899016 +0.0164486 \; -0.0137436 0.0231741 \; -0.0181174 0.0282406 \; -0.0216642 +0.0312954 \; -0.0239572 0.0321364 \; -0.0246305 0.0307272 \; -0.0234168 +0.0271992 \; -0.0201804 0.0218405 \; -0.0149412 0.0150729 \; -0.00788853 +0.00741823 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 +\; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0.0022536 0.000693075 \; +-0.0196158 0.00528675 \; -0.0373851 0.00868088 \; -0.0543156 0.0106182 +\; -0.0690953 0.0110056 \; -0.0804276 0.00993082 \; -0.0871138 0.00766408 +\; -0.0881336 0.00464454 \; -0.0827196 0.00145175 \; -0.0704174 -0.00123618 +\; -0.051128 -0.00269461 \; -0.0251316 -0.00221114 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0.00629299 +-0.00909075 \; -0.0215942 -0.0336605 \; -0.0318221 -0.053658 \; -0.0373587 +-0.0683529 \; -0.0388047 -0.0773298 \; -0.0369214 -0.0805072 \; -0.0325645 +-0.0781332 \; -0.0266182 -0.0707627 \; -0.0199314 -0.059214 \; -0.0132624 +-0.0445105 \; -0.00723407 -0.0278102 \; -0.00230332 -0.0103302 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0.00130231 -0.00539314 \; 0.00446326 +-0.0159998 \; 0.00788004 -0.0248441 \; 0.0111953 -0.0314241 \; 0.0140411 +-0.0354272 \; 0.0160761 -0.0367416 \; 0.0170183 -0.0354522 \; 0.0166752 +-0.0318238 \; 0.0149633 -0.0262708 \; 0.0119206 -0.0193191 \; 0.00770561 +-0.0115596 \; 0.0025877 -0.00360136 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0.00428034 -0.00229089 \; 0.0111954 -0.00549547 \; 0.0174284 -0.00780844 +\; 0.0225168 -0.0091535 \; 0.0260776 -0.009549 \; 0.02784 -0.0090997 +\; 0.0276625 -0.00797869 \; 0.0255466 -0.00640643 \; 0.0216377 -0.0046256 +\; 0.0162121 -0.00287485 \; 0.00965811 -0.001365 \; 0.00244665 -0.00025859 +\; 0 -0 \; 0 -0 \; 0 0 \; \; 0.0179567 0 \; 0.0227378 0.000798463 \; +0.0258863 0.00182029 \; 0.0271976 0.00287467 \; 0.0266036 0.00376006 +\; 0.0241761 0.00428721 \; 0.0201194 0.00430113 \; 0.0147531 0.00369977 +\; 0.00848641 0.00244777 \; 0.00178566 0.000583664 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; 0.00405166 0.00394638 \; 0.00854435 0.00892774 +\; 0.0121426 0.0136133 \; 0.0146361 0.0176164 \; 0.0159133 0.0205823 +\; 0.0159651 0.0222192 \; 0.0148812 0.0223243 \; 0.0128371 0.0208046 +\; 0.0100757 0.0176898 \; 0.00688204 0.0131342 \; 0.00355735 0.00741067 +\; 0.00039074 0.000893041 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; 0 -0 \; +-0.000334083 0.00760899 \; -0.00121547 0.0153576 \; -0.00253832 0.0221535 +\; -0.00413232 0.0274939 \; -0.00577364 0.0309745 \; -0.00720726 0.0323232 +\; -0.00817328 0.0314202 \; -0.00843541 0.02831 \; -0.0078089 0.0231991 +\; -0.0061848 0.0164417 \; -0.00354899 0.0085151 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; -0.000619645 0.000543011 \; -0.0100694 0.00821761 \; -0.0198183 +0.0150465 \; -0.0291355 0.0205494 \; -0.0372507 0.0243615 \; -0.0434112 +0.0262629 \; -0.0469414 0.0261937 \; -0.0473008 0.0242579 \; -0.0441373 +0.0207126 \; -0.0373286 0.0159439 \; -0.0270112 0.0104321 \; -0.0135929 +0.00470858 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 0 \; 0 0 \; 0 0 \; -0.00691163 -0.000853446 \; +-0.0439894 -0.00700693 \; -0.0847763 -0.0165734 \; -0.127702 -0.0296532 +\; -0.171034 -0.0460971 \; -0.212968 -0.0654977 \; -0.251725 -0.0871987 +\; -0.285651 -0.110323 \; -0.313303 -0.13382 \; -0.333534 -0.156521 +\; -0.345547 -0.177213 \; -0.348939 -0.194713 \; -0.343718 -0.207944 +\; -0.330295 -0.216011 \; -0.309453 -0.21826 \; -0.282297 -0.214328 +\; -0.250184 -0.204176 \; -0.214642 -0.188099 \; -0.17728 -0.166712 +\; -0.139694 -0.140926 \; -0.103388 -0.111895 \; -0.0696903 -0.0809479 +\; -0.0396903 -0.0495152 \; -0.0141962 -0.0190431 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; -0.00125539 -0.00673511 \; -0.00334925 -0.0222845 \; -0.00405342 +-0.0353782 \; -0.00358427 -0.0452904 \; -0.00226301 -0.0515469 \; -0.000473193 +-0.0539429 \; 0.00138378 -0.0525442 \; 0.00293199 -0.0476681 \; 0.00385884 +-0.0398501 \; 0.00394516 -0.0297973 \; 0.00308445 -0.0183273 \; 0.0012914 +-0.0063111 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 +\; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; 0.00307255 -0.00397402 \; +0.00885269 -0.0106552 \; 0.0143021 -0.0160342 \; 0.0189785 -0.0198299 +\; 0.0224859 -0.0219014 \; 0.024508 -0.0222493 \; 0.0248353 -0.0210047 +\; 0.0233851 -0.0184103 \; 0.0202112 -0.0147928 \; 0.0155006 -0.0105301 +\; 0.00956402 -0.00601779 \; 0.00281037 -0.00163353 \; -0 0 \; -0 0 +\; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; 0.00490453 -0.000344859 \; 0.0118707 -0.000416798 \; +0.0179574 8.02047e-08 \; \;; +#X coords -1 -1 1 1 164 165 2 100 100; +#X restore 565 159 pd \$0-scope; +#X text 568 334 Representation of the weighted sum of the circular +harmonics over a disc. The blue part is the negative contribution \, +the red part is the positive contribution., f 26; +#X obj 8 342 text define -k \$0-scope-attrs; +#A set gain 118 \; interval 150 \;; +#X obj 551 73 phasor~ 0.3; +#N canvas 0 22 450 300 source~ 0; +#X obj 53 188 osc~; +#X obj 53 142 samphold~, f 11; +#X obj 116 117 phasor~ 8; +#X obj 53 117 phasor~ 7; +#X obj 53 164 *~ 500, f 23; +#X obj 53 210 outlet~; +#X obj 188 141 + 500; +#X obj 53 94 + 7; +#X obj 188 119 random 500; +#X obj 53 72 random 14; +#X obj 116 94 + 3; +#X obj 116 72 random 21; +#X obj 53 44 bang; +#X obj 53 18 loadbang; +#X obj 109 18 inlet; +#X connect 0 0 5 0; +#X connect 1 0 4 0; +#X connect 2 0 1 1; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X connect 8 0 6 0; +#X connect 9 0 7 0; +#X connect 10 0 2 0; +#X connect 11 0 10 0; +#X connect 12 0 9 0; +#X connect 12 0 11 0; +#X connect 12 0 8 0; +#X connect 13 0 12 0; +#X connect 14 0 12 0; +#X restore 386 44 pd source~; +#X obj 386 23 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 18 126 Y[l \, m](θ) = e^i|m|θ., f 57; +#X obj 386 160 hoa.2d.process~ 7 hoa.2d.scope~ harmonics \$0-scope +\$0-scope-attrs, f 28; +#X obj 8 387 hoa-help; +#X obj 8 365 misc/hoa.credits; +#X connect 2 0 3 0; +#X connect 2 0 6 1; +#X connect 5 0 4 0; +#X connect 5 1 4 1; +#X connect 5 2 4 2; +#X connect 5 3 4 3; +#X connect 5 4 4 4; +#X connect 5 5 4 5; +#X connect 5 6 4 6; +#X connect 5 7 4 7; +#X connect 5 8 4 8; +#X connect 5 9 4 9; +#X connect 5 10 4 10; +#X connect 5 11 4 11; +#X connect 5 12 4 12; +#X connect 5 13 4 13; +#X connect 5 14 4 14; +#X connect 5 15 4 15; +#X connect 6 0 5 0; +#X connect 6 0 28 0; +#X connect 6 1 5 1; +#X connect 6 1 28 1; +#X connect 6 2 5 2; +#X connect 6 2 28 2; +#X connect 6 3 5 3; +#X connect 6 3 28 3; +#X connect 6 4 5 4; +#X connect 6 4 28 4; +#X connect 6 5 5 5; +#X connect 6 5 28 5; +#X connect 6 6 5 6; +#X connect 6 6 28 6; +#X connect 6 7 5 7; +#X connect 6 7 28 7; +#X connect 6 8 5 8; +#X connect 6 8 28 8; +#X connect 6 9 5 9; +#X connect 6 9 28 9; +#X connect 6 10 5 10; +#X connect 6 10 28 10; +#X connect 6 11 5 11; +#X connect 6 11 28 11; +#X connect 6 12 5 12; +#X connect 6 12 28 12; +#X connect 6 13 5 13; +#X connect 6 13 28 13; +#X connect 6 14 5 14; +#X connect 6 14 28 14; +#X connect 7 0 6 0; +#X connect 24 0 2 0; +#X connect 25 0 7 0; +#X connect 26 0 25 0; +#X coords 0 441 1 440 100 60 0; diff --git a/Package/Hoa/helps/hoa.fx.delay~-help.pd b/hoa/hoa.2d.fx.delay~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.delay~-help.pd rename to hoa/hoa.2d.fx.delay~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.delay~.pd b/hoa/hoa.2d.fx.delay~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.delay~.pd rename to hoa/hoa.2d.fx.delay~.pd diff --git a/hoa/hoa.2d.meter~-help.pd b/hoa/hoa.2d.meter~-help.pd new file mode 100644 index 0000000..c6fad68 --- /dev/null +++ b/hoa/hoa.2d.meter~-help.pd @@ -0,0 +1,47 @@ +#N struct 1053-t-meter float x array ls 1053-t-meter-value; +#N struct 1053-t-meter-value float x1 float y1 float s1 float s2 float +s3 float s4 float c0 float c1 float c2 float c3 float c4 float v1 float +v2 float v3 float v4; +#N canvas 206 122 481 519 10; +#N canvas 0 22 730 563 \$0-meter 0; +#X scalar 1053-t-meter 0 \; -0 0.7 12 24 36 48 555 90 990 950 900 0 +0 0 0 \; -0.7 8.87314e-07 12 24 36 48 555 90 990 950 900 1 1 1 0 \; +-1.77463e-06 -0.7 12 24 36 48 555 90 990 950 900 1 1 1 0 \; 0.7 -2.66194e-06 +12 24 36 48 555 90 990 950 900 1 1 1 0 \; \;; +#X coords -1 1 1 -1 180 180 2 100 100; +#X restore 22 201 pd \$0-meter; +#X obj 118 415 *~ 2; +#X obj 118 393 phasor~ 1; +#X obj 25 412 sig~; +#X obj 25 394 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 +-1 -1 0 256; +#X obj 118 437 -~ 0.8; +#X obj 211 437 *~ 1.2; +#X obj 211 415 osc~ 1; +#X obj 304 435 noise~; +#X obj 22 175 text define -k \$0-meter-attrs; +#A set angles 0 90 180 270 \; colors 555 90 990 950 900 \; sizes 12 +48 \;; +#X obj 7 8 cnv 15 200 20 empty empty hoa.2d.meter~ 4 10 0 14 -233017 +-66577 0; +#X obj 350 454 hoa-help; +#X obj 350 477 misc/hoa.credits; +#X text 4 31 The abstraction displays the contributions of a set of +loudspeakers in a space., f 67; +#X text 4 71 The first argument is the number of louspeakers., f 67 +; +#X text 4 85 The second argument is the canvas to paint., f 67; +#X text 4 98 The third argument is the name of the text object that +must define the position of the loudspeakers in degrees and can also +be used to define the colors and the sizes of the representation of +the loudspeakers., f 67; +#X obj 25 470 hoa.2d.process~ 4 hoa.2d.meter~ planewaves \$0-meter +\$0-meter-attrs, f 47; +#X connect 1 0 5 0; +#X connect 2 0 1 0; +#X connect 3 0 17 0; +#X connect 4 0 3 0; +#X connect 5 0 17 1; +#X connect 6 0 17 2; +#X connect 7 0 6 0; +#X connect 8 0 17 3; diff --git a/hoa/hoa.2d.meter~.pd b/hoa/hoa.2d.meter~.pd new file mode 100644 index 0000000..ddd2ebe --- /dev/null +++ b/hoa/hoa.2d.meter~.pd @@ -0,0 +1,447 @@ +#N canvas 577 83 855 498 10; +#X obj 12 78 env~; +#X obj 12 369 t f f f f, f 12; +#X obj 12 409 >= 100; +#X obj 35 389 >= 94; +#X obj 58 409 >= 88; +#X obj 81 389 >= 1; +#X obj 12 57 *~ 1; +#N canvas 0 23 435 240 get.gain 0; +#X obj 14 136 list split 1; +#X obj 14 68 symbol gain; +#X obj 47 207 outlet; +#X obj 48 163 dbtorms; +#X obj 48 185 + 1; +#X obj 14 23 loadbang; +#X obj 14 45 delay 10; +#X obj 14 92 text search \$6; +#X obj 14 114 text get \$6; +#X connect 0 1 3 0; +#X connect 1 0 7 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 6 0; +#X connect 6 0 1 0; +#X connect 7 0 8 0; +#X connect 8 0 0 0; +#X restore 33 36 pd get.gain; +#N canvas 234 223 530 429 filter.cell 0; +#X obj 37 315 outlet; +#X obj 37 2 loadbang; +#X obj 37 256 delay 10; +#X obj 37 90 spigot 0; +#X obj 82 67 == 0; +#N canvas 627 102 555 431 get.colors 0; +#X obj 63 117 t l l; +#X obj 90 139 list length; +#N canvas 536 255 450 300 pass 0; +#X obj 51 9 inlet; +#X obj 51 54 spigot, f 7; +#X obj 90 29 > 0; +#X obj 90 9 inlet; +#X obj 51 76 outlet; +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 2 0 1 1; +#X connect 3 0 2 0; +#X restore 90 258 pd pass; +#N canvas 536 255 450 300 pass 0; +#X obj 51 9 inlet; +#X obj 51 54 spigot, f 7; +#X obj 90 9 inlet; +#X obj 51 76 outlet; +#X obj 90 29 > 3; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 4 0 1 1; +#X restore 174 214 pd pass; +#N canvas 536 255 450 300 pass 0; +#X obj 51 9 inlet; +#X obj 51 54 spigot, f 7; +#X obj 90 9 inlet; +#X obj 51 76 outlet; +#X obj 90 29 > 2; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 4 0 1 1; +#X restore 146 258 pd pass; +#N canvas 536 255 450 300 pass 0; +#X obj 51 9 inlet; +#X obj 51 54 spigot, f 7; +#X obj 90 9 inlet; +#X obj 51 76 outlet; +#X obj 90 29 > 1; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 4 0 1 1; +#X restore 118 215 pd pass; +#X obj 63 189 unpack f f f f f, f 19; +#N canvas 536 255 450 300 pass 0; +#X obj 51 9 inlet; +#X obj 51 54 spigot, f 7; +#X obj 90 9 inlet; +#X obj 51 76 outlet; +#X obj 90 29 > 4; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 4 0 1 1; +#X restore 63 215 pd pass; +#X obj 29 6 inlet; +#X obj 248 204 > 5; +#X obj 248 226 sel 1; +#X msg 248 248 warning extra colors arguments; +#X obj 29 95 list split 1; +#X obj 29 27 symbol colors; +#X obj 63 237 s \$0-c0; +#X obj 90 280 s \$0-c1; +#X obj 118 237 s \$0-c2; +#X obj 146 280 s \$0-c3; +#X obj 174 236 s \$0-c4; +#X obj 29 51 text search \$6; +#X obj 29 73 text get \$6; +#X obj 248 272 print hoa.2d.meter~; +#X connect 0 0 6 0; +#X connect 0 1 1 0; +#X connect 1 0 7 1; +#X connect 1 0 2 1; +#X connect 1 0 5 1; +#X connect 1 0 4 1; +#X connect 1 0 3 1; +#X connect 1 0 9 0; +#X connect 2 0 15 0; +#X connect 3 0 18 0; +#X connect 4 0 17 0; +#X connect 5 0 16 0; +#X connect 6 0 7 0; +#X connect 6 1 2 0; +#X connect 6 2 5 0; +#X connect 6 3 4 0; +#X connect 6 4 3 0; +#X connect 7 0 14 0; +#X connect 8 0 13 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 21 0; +#X connect 12 1 0 0; +#X connect 13 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 12 0; +#X restore 176 315 pd get.colors; +#X obj 37 111 t b b, f 8; +#N canvas 722 345 450 300 resize.buffer 0; +#X msg 19 69 resize \$1; +#X obj 19 25 inlet; +#X obj 19 47 f \$3; +#X obj 19 92 array define \$5-buffer-\$4; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 82 134 pd resize.buffer; +#N canvas 663 140 555 431 get.sizes 0; +#X obj 29 6 inlet; +#X obj 198 198 sel 1; +#X obj 63 126 unpack; +#X obj 63 148 swap, f 6; +#X obj 63 170 -, f 6; +#X obj 63 235 +; +#X obj 113 235 +; +#X obj 113 212 * 2; +#X obj 63 193 / 3; +#X obj 198 153 list length; +#X obj 198 176 != 2; +#X msg 198 220 warning size needs a minimum and a maximum; +#X obj 29 101 list split 1; +#X obj 109 169 s \$0-s1; +#X obj 9 169 s \$0-s4; +#X obj 63 257 s \$0-s2; +#X obj 113 257 s \$0-s3; +#X obj 29 27 symbol sizes; +#X obj 29 50 text search \$6; +#X obj 29 73 text get \$6; +#X obj 198 244 print hoa.2d.meter~; +#X connect 0 0 17 0; +#X connect 1 0 11 0; +#X connect 2 0 3 0; +#X connect 2 1 3 1; +#X connect 3 0 4 0; +#X connect 3 0 14 0; +#X connect 3 1 4 1; +#X connect 3 1 5 1; +#X connect 3 1 6 1; +#X connect 3 1 13 0; +#X connect 4 0 8 0; +#X connect 5 0 15 0; +#X connect 6 0 16 0; +#X connect 7 0 6 0; +#X connect 8 0 5 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 10 0 1 0; +#X connect 11 0 20 0; +#X connect 12 1 9 0; +#X connect 12 1 2 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 12 0; +#X restore 316 314 pd get.sizes; +#X obj 37 24 t b b, f 8; +#X obj 37 155 t b b, f 8; +#X obj 37 219 spigot 0; +#X obj 82 198 != 0; +#X obj 37 286 t b b b, f 47; +#X obj 82 45 f \$4; +#X obj 82 176 f \$3; +#X connect 1 0 9 0; +#X connect 2 0 13 0; +#X connect 3 0 6 0; +#X connect 4 0 3 1; +#X connect 6 0 10 0; +#X connect 6 1 7 0; +#X connect 9 0 3 0; +#X connect 9 1 14 0; +#X connect 10 0 11 0; +#X connect 10 1 15 0; +#X connect 11 0 2 0; +#X connect 12 0 11 1; +#X connect 13 0 0 0; +#X connect 13 1 5 0; +#X connect 13 2 8 0; +#X connect 14 0 4 0; +#X connect 15 0 12 0; +#X restore 69 69 pd filter.cell; +#N canvas 0 22 450 300 clearer 0; +#X msg 23 81 \; pd-\$1 clear; +#X obj 23 35 inlet; +#X obj 23 57 symbol \$5, f 11; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 240 122 pd clearer; +#X obj 69 99 t b b b, f 29; +#X obj 69 121 f 0; +#N canvas 245 372 450 300 get.ptr 0; +#X obj 4 72 pointer; +#X msg 4 48 traverse pd-\$1 \, bang; +#X obj 4 3 inlet; +#X obj 4 94 outlet; +#X obj 4 23 symbol \$5; +#X connect 0 0 3 0; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 4 0 1 0; +#X restore 154 122 pd get.ptr; +#X obj 69 143 append \$0-t-meter x; +#X obj 69 165 t b p; +#N canvas 258 187 763 666 resize.ls 0; +#X obj 73 25 inlet; +#X obj 73 115 t f f; +#N canvas 0 22 450 300 counter 0; +#X obj 35 17 inlet; +#X obj 35 39 t f b, f 7; +#X obj 35 61 until; +#X obj 74 61 f 0; +#X obj 35 83 f, f 7; +#X obj 85 83 + 1; +#X obj 35 105 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 2 0 4 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 4 1; +#X restore 73 208 pd counter; +#X obj 73 230 t f f, f 38; +#X obj 154 68 outlet; +#X obj 73 45 t b p, f 21; +#X obj 100 138 setsize \$0-t-meter ls, f 17; +#X obj 298 258 element \$0-t-meter ls; +#X obj 383 416 r \$0-c3; +#X obj 418 437 r \$0-c4; +#X obj 314 416 r \$0-c1; +#X obj 349 437 r \$0-c2; +#X obj 280 437 r \$0-c0; +#X obj 176 416 r \$0-s2; +#X obj 211 437 r \$0-s3; +#X obj 245 416 r \$0-s4; +#X obj 142 437 r \$0-s1; +#X obj 73 177 t f b, f 19; +#X obj 73 302 list split; +#X obj 73 252 t b f, f 10; +#X obj 73 274 list; +#X obj 73 487 set \$0-t-meter-value x1 y1 s1 s2 s3 s4 c0 c1 c2 c3 c4 +v1 v2 v3 v4, f 38; +#X obj 73 461 pack f f 8 16 24 32 555 90 990 950 900 0 0 0 0, f 81 +; +#X obj 73 67 f \$3; +#N canvas 432 65 584 342 get.angles 0; +#X obj 12 3 inlet; +#X obj 12 116 list split 1; +#X obj 46 147 outlet; +#X obj 12 72 text search \$6; +#X obj 12 94 text get \$6; +#X obj 12 48 symbol angles; +#X connect 0 0 5 0; +#X connect 1 1 2 0; +#X connect 3 0 4 0; +#X connect 4 0 1 0; +#X connect 5 0 3 0; +#X restore 184 207 pd get.angles; +#X obj 73 324 unpack f; +#X obj 73 390 t f f, f 6; +#X obj 107 412 cos; +#X obj 73 412 sin; +#X obj 107 434 * 0.7; +#X obj 73 434 * 0.7; +#X obj 73 347 / 180; +#X obj 73 369 * -3.14159; +#X connect 0 0 5 0; +#X connect 1 0 17 0; +#X connect 1 1 6 0; +#X connect 2 0 3 0; +#X connect 3 0 19 0; +#X connect 3 1 7 0; +#X connect 5 0 23 0; +#X connect 5 1 4 0; +#X connect 5 1 6 1; +#X connect 5 1 7 1; +#X connect 7 0 21 15; +#X connect 8 0 22 9; +#X connect 9 0 22 10; +#X connect 10 0 22 7; +#X connect 11 0 22 8; +#X connect 12 0 22 6; +#X connect 13 0 22 3; +#X connect 14 0 22 4; +#X connect 15 0 22 5; +#X connect 16 0 22 2; +#X connect 17 0 2 0; +#X connect 17 1 24 0; +#X connect 18 1 25 0; +#X connect 19 0 20 0; +#X connect 19 1 18 1; +#X connect 20 0 18 0; +#X connect 22 0 21 0; +#X connect 23 0 1 0; +#X connect 24 0 20 1; +#X connect 25 0 31 0; +#X connect 26 0 28 0; +#X connect 26 1 27 0; +#X connect 27 0 29 0; +#X connect 28 0 30 0; +#X connect 29 0 22 1; +#X connect 30 0 22 0; +#X connect 31 0 32 0; +#X connect 32 0 26 0; +#X restore 96 188 pd resize.ls; +#N canvas 263 228 389 338 split_y 0; +#X obj 13 180 spigot, f 8; +#X obj 70 180 spigot; +#X obj 13 13 inlet; +#X obj 13 202 outlet; +#X obj 70 202 outlet; +#X obj 103 103 loadbang; +#X obj 103 147 != 0; +#X obj 113 13 inlet; +#X obj 13 35 t b f, f 10; +#X obj 103 125 f \$3; +#X connect 0 0 3 0; +#X connect 1 0 4 0; +#X connect 2 0 8 0; +#X connect 5 0 9 0; +#X connect 6 0 1 1; +#X connect 7 0 0 1; +#X connect 8 0 0 0; +#X connect 8 1 1 0; +#X connect 9 0 6 0; +#X restore 12 213 pd split_y; +#N canvas 0 22 265 152 others 0; +#X obj 35 28 inlet; +#X obj 35 50 t f b, f 11; +#X obj 98 74 f \$4; +#X obj 35 96 array set \$5-buffer-0, f 22; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 1 1 2 0; +#X connect 2 0 3 1; +#X restore 69 237 pd others; +#X obj 69 187 f 1; +#X obj 12 429 pack f f f f; +#X obj 201 421 element \$0-t-meter ls; +#N canvas 0 22 450 300 counter 0; +#X obj 35 17 inlet; +#X obj 35 39 t f b, f 7; +#X obj 35 61 until; +#X obj 74 61 f 0; +#X obj 35 83 f, f 7; +#X obj 85 83 + 1; +#X obj 35 105 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 2 0 4 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 4 1; +#X restore 12 260 pd counter; +#X obj 76 304 loadbang; +#X obj 76 326 f 1; +#X obj 12 282 t f f, f 32; +#X obj 12 450 set \$0-t-meter-value v4 v3 v2 v1; +#N canvas 88 457 450 300 \$0-t-meter 0; +#X obj 27 18 struct \$0-t-meter float x array ls \$0-t-meter-value +; +#X obj 27 39 plot ls 0 0 0 0 0; +#X restore 476 10 pd \$0-t-meter; +#N canvas 276 145 450 300 \$0-t-meter-value 0; +#X obj 9 17 struct \$0-t-meter-value float x1 float y1 float s1 float +s2 float s3 float s4 float c0 float c1 float c2 float c3 float c4 float +v1 float v2 float v3 float v4, f 35; +#X obj 9 95 filledpolygon c0 c0 s1 x1 y1 x1 y1; +#X obj 8 179 filledpolygon -v v4 c4 c4 s4 x1 y1 x1 y1; +#X obj 8 157 filledpolygon -v v3 c3 c3 s3 x1 y1 x1 y1; +#X obj 8 137 filledpolygon -v v2 c2 c2 s2 x1 y1 x1 y1; +#X obj 8 116 filledpolygon -v v1 c1 c1 s1 x1 y1 x1 y1; +#X restore 477 30 pd \$0-t-meter-value; +#X obj 12 346 array get \$5-buffer-0, f 22; +#X obj 12 235 f \$3; +#X obj 12 16 hoa.in~; +#X connect 0 0 16 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 1 2 4 0; +#X connect 1 3 5 0; +#X connect 2 0 19 0; +#X connect 3 0 19 1; +#X connect 4 0 19 2; +#X connect 5 0 19 3; +#X connect 6 0 0 0; +#X connect 7 0 6 1; +#X connect 8 0 10 0; +#X connect 10 0 11 0; +#X connect 10 1 12 0; +#X connect 10 2 9 0; +#X connect 11 0 13 0; +#X connect 12 0 13 1; +#X connect 13 0 14 0; +#X connect 14 0 18 0; +#X connect 14 1 15 0; +#X connect 15 0 20 1; +#X connect 16 0 29 0; +#X connect 16 1 17 0; +#X connect 18 0 16 1; +#X connect 19 0 25 0; +#X connect 20 0 25 4; +#X connect 21 0 24 0; +#X connect 22 0 23 0; +#X connect 23 0 28 1; +#X connect 24 0 28 0; +#X connect 24 1 20 0; +#X connect 28 0 1 0; +#X connect 29 0 21 0; +#X connect 30 0 6 0; diff --git a/hoa/hoa.2d.optim~-help.pd b/hoa/hoa.2d.optim~-help.pd new file mode 100644 index 0000000..460d75b --- /dev/null +++ b/hoa/hoa.2d.optim~-help.pd @@ -0,0 +1,203 @@ +#N struct 1379-t-scope float x array bufr 1379-t-scope-value-r array +bufg 1379-t-scope-value-g; +#N struct 1379-t-scope-value-r float x float y; +#N struct 1379-t-scope-value-g float x float y; +#N struct 1386-t-scope float x array bufr 1386-t-scope-value-r array +bufg 1386-t-scope-value-g; +#N struct 1386-t-scope-value-r float x float y; +#N struct 1386-t-scope-value-g float x float y; +#N canvas 56 169 913 663 10; +#X obj 398 625 hoa.dac~ 1:8 -----------; +#X obj 398 123 hoa.2d.encoder~ 3, f 24; +#X obj 122 623 hoa-help; +#X obj 398 580 hoa.2d.decoder~ 3 regular 8, f 24; +#X obj 398 95 misc//hoa.hgain~; +#X obj 539 95 hoa.pi~ 2; +#X obj 13 596 text define -k \$0-scope-attrs; +#A set gain 118 \; interval 150 \;; +#X obj 552 124 misc//hoa.number~; +#X text 610 110 azimuth θ in radian (-π & π), f 17; +#X obj 539 70 phasor~ 0.3; +#X obj 398 358 hoa.2d.optim~ 3 inphase, f 24; +#X obj 6 10 cnv 15 200 20 empty empty hoa.2d.optim~ 4 10 0 14 -233017 +-66577 0; +#X msg 226 581 \; pd dsp 1; +#X msg 226 616 \; pd dsp 0; +#X text 9 42 hoa.2d.optim~ weights the signals of the circular harmonics +to optimizes the ambisonic sound field for several restitution systems. +; +#X text 9 92 There are 3 optimizations \, basic (no optimization) \, +maxre (energy vector optimization) and inphase (energy and velocity +vector optimization):, f 59; +#X text 558 609 Note that the optimizations decrease the precision +of the sound field restitution thus it can be compared to particular +cases of the fractional orders.; +#X text 9 142 The basic optimization has no effect \, it should be +used (or not) with a perfect ambisonic channels arrangement where all +the channels are to equal distance on a circle or a sphere \, and for +a listener placed at the perfect center of the circle of the sphere. +This is also the prefered optimization for diffuse artistic sound field. +, f 59; +#X text 9 245 The maxre should be used should be used for an auditory +confined to the center of the circle of loudspeakers., f 59; +#X text 9 296 The inphase optimization should be used when the auditory +covers the entire channels area and/or when the channels arrangement +is not a perfect circle (when the channels are not to equal distance +for example)., f 59; +#X text 9 420 The optimization can be combined. The basic optimization +can be applied to the granular diffuse part of the sound field while +the inphase optimization is applied to the directional point sources +part of the sound field.; +#X text 9 483 At last \, the sound field can be split in two or three +frequency ranges \, on which different optimizations are applied. The +inphase optimization below 700 hz and the basic optimization above. +This approach \, that Daniel defines as psychoacoustic in its PhD thesis +\, is presented by Gerzon in the General Methatheory of Auditory Localization +\, 1992; +#N canvas 0 22 450 300 \$0-scope-before 0; +#X scalar 1379-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; \;; +#X coords -1 -1 1 1 165 165 2 100 100; +#X restore 554 148 pd \$0-scope-before; +#X obj 398 195 hoa.2d.process~ 3 hoa.2d.scope~ harmonics \$0-scope-before +\$0-scope-attrs, f 24; +#N canvas 0 22 450 300 \$0-scope-after 0; +#X scalar 1386-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; \;; +#X coords -1 -1 1 1 165 165 2 100 100; +#X restore 554 425 pd \$0-scope-after; +#X obj 398 469 hoa.2d.process~ 3 hoa.2d.scope~ harmonics \$0-scope-after +\$0-scope-attrs, f 24; +#X text 9 221 Y'[l \, m] = Y[l \, m], f 59; +#X text 9 272 Y'[l \, m] = cos(πl/(2N+2))Y[l \, m], f 59; +#X text 9 349 Y'[l \, m] = Y[l \, m](N!^2)/((N+l)!(N-l)!), f 60; +#X text 9 369 with N the order of decomposition \, l the degree \, +m the azimuthal order., f 60; +#X text 729 191 Representation of the weighted sum of the circular +harmonics over a disc before the optimization., f 27; +#X text 739 489 Representation of the weighted sum of the circular +harmonics over a disc after the optimization., f 27; +#X text 557 334 The first argument is the order of decomposition N. +, f 25; +#X text 557 364 The second argument is the name of the optimization. +, f 25; +#X obj 398 69 *~, f 13; +#X obj 398 47 phasor~ 101; +#X obj 473 47 phasor~ 203; +#X obj 12 623 misc/hoa.credits; +#X connect 1 0 10 0; +#X connect 1 0 23 0; +#X connect 1 1 10 1; +#X connect 1 1 23 1; +#X connect 1 2 10 2; +#X connect 1 2 23 2; +#X connect 1 3 10 3; +#X connect 1 3 23 3; +#X connect 1 4 10 4; +#X connect 1 4 23 4; +#X connect 1 5 10 5; +#X connect 1 5 23 5; +#X connect 1 6 10 6; +#X connect 1 6 23 6; +#X connect 3 0 0 0; +#X connect 3 1 0 1; +#X connect 3 2 0 2; +#X connect 3 3 0 3; +#X connect 3 4 0 4; +#X connect 3 5 0 5; +#X connect 3 6 0 6; +#X connect 3 7 0 7; +#X connect 4 0 1 0; +#X connect 5 0 1 1; +#X connect 5 0 7 0; +#X connect 9 0 5 0; +#X connect 10 0 3 0; +#X connect 10 0 25 0; +#X connect 10 1 3 1; +#X connect 10 1 25 1; +#X connect 10 2 3 2; +#X connect 10 2 25 2; +#X connect 10 3 3 3; +#X connect 10 3 25 3; +#X connect 10 4 3 4; +#X connect 10 4 25 4; +#X connect 10 5 3 5; +#X connect 10 5 25 5; +#X connect 10 6 3 6; +#X connect 10 6 25 6; +#X connect 34 0 4 0; +#X connect 35 0 34 0; +#X connect 36 0 34 1; +#X coords 0 663 1 662 100 60 0; diff --git a/hoa/hoa.2d.process~-help.pd b/hoa/hoa.2d.process~-help.pd new file mode 100644 index 0000000..6c29f8d --- /dev/null +++ b/hoa/hoa.2d.process~-help.pd @@ -0,0 +1,66 @@ +#N canvas 117 38 901 661 10; +#X declare -path ..; +#X obj 594 28 hoa.connect; +#X obj 594 7 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 15 152 2nd argument is the name of the patcher to instantiate. +; +#X text 15 102 1st argument is the order if you use hoa.process~ in +the circular harmonics domain or the number of channels if you use +it in the plane waves domain.; +#X text 15 272 Extra arguments and attributes are sent to object hoa.this.process~ +if there is one inside the patcher. You should look at the help.; +#X text 15 322 The number of inlets and outlets depends on the inlet +and outlet configuration of the patcher. You should look at the help. +; +#X text 15 372 Important: If you edit the patcher \, you have recreate +hoa.process~ to reflect the changes.; +#X text 12 47 hoa.process~ helps the creation of processing in the +circular or spherical harmonics and plane waves domains by instantiating +several instances of a patcher.; +#X text 15 172 3rd argument is the domain \, harmonics (default) or +planewaves. Note that if you use hoa.process~ in the harmonics domain +\, it instantiates 2 * order + 1 times (the number of harmonics in +2D) or (order + 1) * (order + 1) (the number of harmonics in 3D) the +partcher and if you use it in the plane waves domain \, it instanctiates +the patcher as many times as the number of channels.; +#X text 439 349 The hoa.process~ use of this patch is an example made +to show how it works. You would prefer to look at the real uses of +hoa.process~.; +#X text 435 50 Open; +#X text 435 70 Use open message to open a specific instance :; +#X msg 436 94 open 1; +#X msg 497 94 open all; +#X text 433 153 Double-click open the 1st planewave intance \, or the +harmonic 0 instance.; +#X text 435 190 Target; +#X text 435 210 Use target message to route the message to a specific +instance :; +#X msg 439 245 target 1; +#X msg 510 245 target -2; +#X msg 581 245 target all; +#X obj 776 224 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 162.04 256; +#X obj 12 424 declare -path ..; +#X obj 12 447 hoa.credits; +#X obj 92 447 hoa-help; +#X msg 745 249 open 1 -1; +#X obj 436 123 hoa.2d.process~ 4 misc//hoa.proc.plwav.ex planewaves +; +#X obj 439 281 hoa.2d.process~ 3 misc//hoa.proc.harmo.ex harmonics +; +#X obj 439 310 print outlet-1; +#X obj 754 310 print outlet-2; +#X obj 831 243 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X connect 1 0 0 0; +#X connect 12 0 25 0; +#X connect 13 0 25 0; +#X connect 17 0 26 0; +#X connect 18 0 26 0; +#X connect 19 0 26 0; +#X connect 20 0 26 8; +#X connect 24 0 26 0; +#X connect 26 7 27 0; +#X connect 26 8 28 0; +#X connect 29 0 26 9; diff --git a/hoa/hoa.2d.projector~-help.pd b/hoa/hoa.2d.projector~-help.pd new file mode 100644 index 0000000..b6583da --- /dev/null +++ b/hoa/hoa.2d.projector~-help.pd @@ -0,0 +1,42 @@ +#N canvas 220 82 754 671 10; +#X obj 230 142 hoa.pi 2; +#X msg 371 134 \; pd dsp 1; +#X msg 371 172 \; pd dsp 0; +#X obj 215 161 *~; +#X obj 20 311 hoa.2d.scope~ @size 201 201 @fontname "Helvetica" @fontweight +"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" +@order 4 @view 0 @gain 10 @interval 20 @bgcolor 0.758847 0.758847 0.758847 +1 @bdcolor 0.699562 0.699562 0.699562 1 @phcolor 1 0 0 1 @nhcolor 0 +0 1 1; +#X obj 215 102 phasor~ 0.8; +#X obj 585 25 hoa.connect; +#X obj 585 4 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 20 182 hoa.2d.encoder~ 4 #X obj 20 208 hoa.2d.projector~ 4 10 +#X obj 230 123 c.loadmess; +#X obj 20 161 misc/hoa.hgain~ @size 127 12 @fontname "Helvetica" @fontweight +"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" +@presetname "(null)" @mode 0 @ramp 20 @bgcolor 0.75 0.75 0.75 1 @bdcolor +0.5 0.5 0.5 1 @kncolor 0.5 0.5 0.5 1; +#X text 3 45 hoa.2d.projector~ discretizes the ambisonic sound field +into the plane waves domain. Use hoa.recomposer~ to come back to harmonics +domain.; +#X obj 20 250 hoa.2d.process~ 10 hoa.fx.delay~ planewaves, f 33; +#X obj 20 288 hoa.2d.recomposer~ 4 10; +#X obj 20 534 hoa.2d.decoder~ 4 regular 10 --; +#X obj 20 567 hoa.dac~ 1:10 -------------------; +#X connect 0 0 3 1; +#X connect 3 0 8 1; +#X connect 5 0 3 0; +#X connect 7 0 6 0; +#X connect 13 0 14 0; +#X connect 13 1 14 1; +#X connect 13 2 14 2; +#X connect 13 3 14 3; +#X connect 13 4 14 4; +#X connect 13 5 14 5; +#X connect 13 6 14 6; +#X connect 13 7 14 7; +#X connect 13 8 14 8; +#X connect 13 9 14 9; +#X coords 0 671 1 670 100 60 0; diff --git a/hoa/hoa.2d.rotate~-help.pd b/hoa/hoa.2d.rotate~-help.pd new file mode 100644 index 0000000..6eb1cd0 --- /dev/null +++ b/hoa/hoa.2d.rotate~-help.pd @@ -0,0 +1,210 @@ +#N struct 1060-t-scope float x array bufr 1060-t-scope-value-r array +bufg 1060-t-scope-value-g; +#N struct 1060-t-scope-value-r float x float y; +#N struct 1060-t-scope-value-g float x float y; +#N canvas 616 120 625 516 10; +#X obj 477 207 phasor~ 0.1; +#X msg 23 352 \; pd dsp 1; +#X msg 23 390 \; pd dsp 0; +#X obj 477 277 misc//hoa.number~; +#X obj 119 185 misc//hoa.hgain~; +#X obj 308 185 misc//hoa.hgain~; +#X obj 209 346 hoa.2d.rotate~ 4, f 28; +#X obj 209 452 hoa.2d.decoder~ 4 regular 10; +#X obj 119 234 hoa.2d.encoder~ 4, f 25; +#X obj 308 234 hoa.2d.encoder~ 4, f 25; +#X obj 149 484 hoa-help; +#X obj 6 7 cnv 15 200 20 empty empty hoa.2d.rotate~ 4 10 0 14 -233017 +-66577 0; +#X obj 209 484 hoa.dac~ 1:10, f 28; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 1060-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0.00797709 0.0152241 \; 0.027766 +0.0578422 \; 0.0423248 0.0967339 \; 0.052 0.131203 \; 0.0572409 0.160672 +\; 0.0585803 0.184694 \; 0.0566158 0.202959 \; 0.0519891 0.215302 \; +0.0453647 0.221703 \; 0.0374091 0.222285 \; 0.0287702 0.217305 \; 0.0200582 +0.20715 \; 0.0118282 0.192316 \; 0.00456582 0.1734 \; -0.00132596 0.151076 +\; -0.00553554 0.126076 \; -0.00784896 0.0991725 \; -0.00815273 0.0711538 +\; -0.00643317 0.0428023 \; -0.00277266 0.0148748 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0.00902268 0.00685022 \; -0.0252346 0.017798 \; -0.0412689 +0.0269894 \; -0.0566475 0.0342706 \; -0.0709053 0.0395657 \; -0.0836054 +0.0428765 \; -0.0943535 0.0442779 \; -0.102809 0.0439122 \; -0.1087 +0.0419812 \; -0.111825 0.038736 \; -0.112068 0.0344655 \; -0.109395 +0.0294837 \; -0.103862 0.024117 \; -0.0956074 0.0186904 \; -0.0848498 +0.013515 \; -0.0718833 0.00887581 \; -0.0570655 0.00502049 \; -0.0408084 +0.00215056 \; -0.0235654 0.000413579 \; -0.00581549 -0.000102091 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0.0101935 -0.00958589 \; +-0.0222383 -0.0224344 \; -0.0329374 -0.0356473 \; -0.0420287 -0.0488178 +\; -0.0493142 -0.0615214 \; -0.0546651 -0.0733288 \; -0.0580234 -0.0838197 +\; -0.0594048 -0.0925986 \; -0.058895 -0.0993079 \; -0.0566453 -0.103641 +\; -0.0528664 -0.105352 \; -0.0478195 -0.10427 \; -0.0418049 -0.100304 +\; -0.0351508 -0.093446 \; -0.0281998 -0.0837787 \; -0.0212957 -0.0714713 +\; -0.0147694 -0.0567787 \; -0.00892681 -0.0400359 \; -0.00403494 -0.0216473 +\; -0.000312513 -0.00207933 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0.000104288 -0.000169014 +\; 0.0155232 -0.0232871 \; 0.032854 -0.0457236 \; 0.0516887 -0.0668539 +\; 0.0715263 -0.08609 \; 0.0917833 -0.102899 \; 0.111806 -0.116821 +\; 0.130886 -0.127484 \; 0.14828 -0.134615 \; 0.163227 -0.138051 \; +0.174969 -0.137747 \; 0.182776 -0.133776 \; 0.185964 -0.126332 \; 0.183919 +-0.115724 \; 0.176114 -0.102367 \; 0.162132 -0.0867749 \; 0.141678 +-0.0695455 \; 0.114592 -0.0513408 \; 0.0808625 -0.0328722 \; 0.0406316 +-0.0148783 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 0 \; \; 0.586402 0 \; 0.650627 0.0228474 \; 0.71066 +0.0499727 \; 0.765441 0.0809039 \; 0.814003 0.115048 \; 0.85549 0.151706 +\; 0.889178 0.190088 \; 0.914492 0.229335 \; 0.93102 0.268539 \; 0.938523 +0.306767 \; 0.936938 0.343088 \; 0.926378 0.376595 \; 0.907133 0.406428 +\; 0.879656 0.431801 \; 0.844555 0.45202 \; 0.802579 0.466505 \; 0.754593 +0.474802 \; 0.701561 0.476601 \; 0.644523 0.471739 \; 0.584564 0.46021 +\; 0.522797 0.442165 \; 0.460326 0.417905 \; 0.398228 0.38788 \; 0.337528 +0.352673 \; 0.279172 0.312986 \; 0.224012 0.269626 \; 0.172782 0.223477 +\; 0.126094 0.175489 \; 0.084418 0.126641 \; 0.0480836 0.0779272 \; +0.0172726 0.0303254 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; -0.00265703 +0.0119163 \; -0.00960482 0.0369235 \; -0.0177516 0.059576 \; -0.0267249 +0.0793957 \; -0.0361139 0.0960051 \; -0.0454859 0.109134 \; -0.0544033 +0.118625 \; -0.0624402 0.124429 \; -0.0691983 0.126607 \; -0.0743216 +0.125319 \; -0.07751 0.120819 \; -0.0785297 0.113442 \; -0.0772225 +0.103587 \; -0.0735114 0.0917075 \; -0.0674038 0.0782912 \; -0.0589919 +0.0638449 \; -0.0484502 0.0488771 \; -0.03603 0.0338819 \; -0.0220509 +0.0193238 \; -0.0068916 0.00562421 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 0 \; -0.0119492 +-0.000629763 \; -0.0292394 -0.00257255 \; -0.0455831 -0.00562859 \; +-0.060542 -0.00964354 \; -0.0737211 -0.0144122 \; -0.084783 -0.0196872 +\; -0.0934566 -0.0251884 \; -0.0995451 -0.0306148 \; -0.102931 -0.0356557 +\; -0.103578 -0.0400038 \; -0.101533 -0.0433676 \; -0.0969216 -0.0454835 +\; -0.0899428 -0.0461271 \; -0.0808632 -0.0451228 \; -0.0700064 -0.0423529 +\; -0.0577422 -0.0377631 \; -0.044473 -0.0313672 \; -0.0306221 -0.0232492 +\; -0.0166176 -0.0135617 \; -0.00287946 -0.00252337 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; -0.00208001 +-0.0181543 \; -0.00304739 -0.0385064 \; -0.00256449 -0.058414 \; -0.000678191 +-0.0773121 \; 0.00249274 -0.0946529 \; 0.00676113 -0.109922 \; 0.0118771 +-0.122655 \; 0.0175364 -0.13245 \; 0.0233911 -0.138986 \; 0.029062 +-0.142026 \; 0.034153 -0.141435 \; 0.0382661 -0.137176 \; 0.0410174 +-0.129319 \; 0.0420534 -0.11804 \; 0.0410659 -0.103613 \; 0.0378071 +-0.0864076 \; 0.0321029 -0.0668762 \; 0.0238637 -0.0455428 \; 0.0130935 +-0.0229879 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 +\; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; 0.00580864 -0.00189859 \; 0.0580078 +-0.0167312 \; 0.115369 -0.0289315 \; 0.177157 -0.0378717 \; 0.242515 +-0.0430046 \; 0.310474 -0.0438799 \; 0.379981 -0.0401606 \; 0.449914 +-0.0316354 \; 0.519116 -0.0182269 \; 0.58641 2.61913e-06 \; \;; +#X coords -1 -1 1 1 164 165 2 100 100; +#X restore 420 336 pd \$0-scope; +#X obj 22 459 text define -k \$0-scope-attrs; +#A set gain 150 \; interval 150 \;; +#X obj 209 379 hoa.2d.process~ 4 hoa.2d.scope~ harmonics \$0-scope +\$0-scope-attrs, f 28; +#X obj 404 207 hoa.pi~ 1; +#X obj 216 208 hoa.pi~ 0; +#X obj 477 234 hoa.pi~ 2; +#X text 486 249 Angle of rotation θ in radian (-π & π), f 20; +#X text 474 157 The argument is the order of decomposition N., f 22 +; +#X text 474 114 The last inlet set the angle of the rotation θ in +radian., f 22; +#X text 5 29 hoa.2d.rotate~ applies a rotation on the ambisonic sound +field. The rotation amounts for each degree l to combine and to weight +the signals of its two component harmonics to resynthesize them following +the formula:; +#X text 5 86 Y'[0 \, Ø](θ) = Y[0 \, Ø]; +#X text 5 103 Y'[l \, -l](θ) = Y[l \, l]sin(lθ) + Y[l \, -l]cos(lθ) +; +#X text 5 120 Y'[l \, l](θ) = Y[l \, l]cos(lθ) - Y[l \, -l]sin(lθ) +; +#X obj 22 484 misc/hoa.credits; +#N canvas 0 22 450 300 source1~ 0; +#X obj 83 49 max~ 0; +#X obj 32 73 *~, f 9; +#X obj 32 27 noise~; +#X obj 83 27 osc~ 5; +#X obj 32 49 *~ 0.6; +#X obj 32 117 outlet~; +#X obj 32 95 lop~ 1400; +#X connect 0 0 1 1; +#X connect 1 0 6 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 1 0; +#X connect 6 0 5 0; +#X restore 119 150 pd source1~; +#N canvas 0 22 450 300 source2~ 0; +#X obj 22 78 *~, f 19; +#X obj 22 32 osc~ 87; +#X obj 73 31 osc~ 189; +#X obj 22 54 *~, f 9; +#X obj 133 54 max~ 0; +#X obj 133 32 osc~ 10; +#X obj 22 100 outlet~; +#X connect 0 0 6 0; +#X connect 1 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 0 0; +#X connect 4 0 0 1; +#X connect 5 0 4 0; +#X restore 308 150 pd source2~; +#X connect 0 0 18 0; +#X connect 4 0 8 0; +#X connect 5 0 9 0; +#X connect 6 0 7 0; +#X connect 6 0 15 0; +#X connect 6 1 7 1; +#X connect 6 1 15 1; +#X connect 6 2 7 2; +#X connect 6 2 15 2; +#X connect 6 3 7 3; +#X connect 6 3 15 3; +#X connect 6 4 7 4; +#X connect 6 4 15 4; +#X connect 6 5 7 5; +#X connect 6 5 15 5; +#X connect 6 6 7 6; +#X connect 6 6 15 6; +#X connect 6 7 7 7; +#X connect 6 7 15 7; +#X connect 6 8 7 8; +#X connect 6 8 15 8; +#X connect 7 0 12 0; +#X connect 7 1 12 1; +#X connect 7 2 12 2; +#X connect 7 3 12 3; +#X connect 7 4 12 4; +#X connect 7 5 12 5; +#X connect 7 6 12 6; +#X connect 7 7 12 7; +#X connect 7 8 12 8; +#X connect 7 9 12 9; +#X connect 8 0 6 0; +#X connect 8 1 6 1; +#X connect 8 2 6 2; +#X connect 8 3 6 3; +#X connect 8 4 6 4; +#X connect 8 5 6 5; +#X connect 8 6 6 6; +#X connect 8 7 6 7; +#X connect 8 8 6 8; +#X connect 9 0 6 0; +#X connect 9 1 6 1; +#X connect 9 2 6 2; +#X connect 9 3 6 3; +#X connect 9 4 6 4; +#X connect 9 5 6 5; +#X connect 9 6 6 6; +#X connect 9 7 6 7; +#X connect 9 8 6 8; +#X connect 16 0 9 1; +#X connect 17 0 8 1; +#X connect 18 0 3 0; +#X connect 18 0 6 9; +#X connect 27 0 4 0; +#X connect 28 0 5 0; +#X coords 0 516 1 515 100 60 0; diff --git a/hoa/hoa.2d.scope~-help.pd b/hoa/hoa.2d.scope~-help.pd new file mode 100644 index 0000000..0255c32 --- /dev/null +++ b/hoa/hoa.2d.scope~-help.pd @@ -0,0 +1,410 @@ +#N struct 1292-t-scope float x array bufr 1292-t-scope-value-r array +bufg 1292-t-scope-value-g; +#N struct 1292-t-scope-value-r float x float y; +#N struct 1292-t-scope-value-g float x float y; +#N canvas 156 219 420 500 10; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 1292-t-scope 0 \; 0.685416 0 \; 0.684993 0.0240542 \; 0.683726 +0.0480788 \; 0.681616 0.072044 \; 0.678667 0.0959204 \; 0.674882 0.119679 +\; 0.670265 0.143289 \; 0.664823 0.166723 \; 0.658562 0.189952 \; 0.65149 +0.212947 \; 0.643615 0.235679 \; 0.634948 0.258122 \; 0.625499 0.280246 +\; 0.615279 0.302025 \; 0.604302 0.323432 \; 0.59258 0.344442 \; 0.580128 +0.365026 \; 0.566962 0.385162 \; 0.553098 0.404823 \; 0.538552 0.423986 +\; 0.523343 0.442627 \; 0.507489 0.460723 \; 0.49101 0.478251 \; 0.473926 +0.495191 \; 0.456258 0.511521 \; 0.438029 0.527221 \; 0.419259 0.542272 +\; 0.399972 0.556656 \; 0.380193 0.570354 \; 0.359945 0.583349 \; 0.339254 +0.595626 \; 0.318144 0.607169 \; 0.296642 0.617965 \; 0.274774 0.627999 +\; 0.252567 0.63726 \; 0.230049 0.645736 \; 0.207247 0.653416 \; 0.184189 +0.660291 \; 0.160904 0.666352 \; 0.137421 0.671593 \; 0.113768 0.676005 +\; 0.089974 0.679585 \; 0.0660693 0.682327 \; 0.0420828 0.684228 \; +0.0180444 0.685286 \; -0.0060165 0.685499 \; -0.0300701 0.684867 \; +-0.0540866 0.683391 \; -0.0780365 0.681072 \; -0.10189 0.677914 \; +-0.125618 0.67392 \; -0.149191 0.669095 \; -0.172581 0.663446 \; -0.195757 +0.656978 \; -0.218692 0.649701 \; -0.241357 0.641623 \; -0.263724 0.632754 +\; -0.285766 0.623106 \; -0.307456 0.612689 \; -0.328766 0.601518 \; +-0.349671 0.589605 \; -0.370145 0.576966 \; -0.390162 0.563616 \; -0.409698 +0.549572 \; -0.428729 0.53485 \; -0.447231 0.51947 \; -0.465182 0.503451 +\; -0.482559 0.486811 \; -0.499342 0.469572 \; -0.515509 0.451755 \; +-0.531041 0.433381 \; -0.545919 0.414474 \; -0.560124 0.395057 \; -0.573639 +0.375154 \; -0.586448 0.354789 \; -0.598534 0.333987 \; -0.609883 0.312775 +\; -0.620481 0.291177 \; -0.630314 0.269221 \; -0.639372 0.246934 \; +-0.647643 0.224343 \; -0.655116 0.201475 \; -0.661782 0.17836 \; -0.667634 +0.155026 \; -0.672664 0.1315 \; -0.676865 0.107812 \; -0.680234 0.083992 +\; -0.682765 0.0600681 \; -0.684455 0.03607 \; -0.685302 0.0120272 +\; -0.685306 -0.0120305 \; -0.684466 -0.0360736 \; -0.682783 -0.060073 +\; -0.68026 -0.0839984 \; -0.676899 -0.107821 \; -0.672704 -0.131511 +\; -0.66768 -0.15504 \; -0.661834 -0.178377 \; -0.655173 -0.201496 +\; -0.647704 -0.224367 \; -0.639438 -0.246962 \; -0.630383 -0.269254 +\; -0.620552 -0.291214 \; -0.609956 -0.312816 \; -0.598608 -0.334032 +\; -0.586523 -0.354838 \; -0.573714 -0.375206 \; -0.560198 -0.395113 +\; -0.545991 -0.414533 \; -0.531112 -0.433443 \; -0.515577 -0.451818 +\; -0.499407 -0.469637 \; -0.482621 -0.486877 \; -0.46524 -0.503518 +\; -0.447285 -0.519538 \; -0.428778 -0.534917 \; -0.409743 -0.549638 +\; -0.390203 -0.56368 \; -0.370181 -0.577029 \; -0.349703 -0.589665 +\; -0.328794 -0.601575 \; -0.30748 -0.612743 \; -0.285786 -0.623157 +\; -0.263741 -0.632801 \; -0.24137 -0.641666 \; -0.218702 -0.64974 +\; -0.195764 -0.657013 \; -0.172585 -0.663476 \; -0.149194 -0.669121 +\; -0.125619 -0.673942 \; -0.10189 -0.677932 \; -0.0780348 -0.681086 +\; -0.0540843 -0.683402 \; -0.0300673 -0.684875 \; -0.00601331 -0.685504 +\; 0.0180475 -0.685288 \; 0.0420857 -0.684228 \; 0.0660721 -0.682325 +\; 0.0899765 -0.679582 \; 0.11377 -0.676001 \; 0.137423 -0.671587 \; +0.160906 -0.666347 \; 0.184191 -0.660285 \; 0.207248 -0.65341 \; 0.230051 +-0.645731 \; 0.252569 -0.637256 \; 0.274776 -0.627996 \; 0.296644 -0.617963 +\; 0.318147 -0.607169 \; 0.339258 -0.595627 \; 0.35995 -0.583351 \; +0.380199 -0.570357 \; 0.39998 -0.556661 \; 0.419267 -0.542279 \; 0.438039 +-0.527229 \; 0.45627 -0.51153 \; 0.473939 -0.495201 \; 0.491025 -0.478261 +\; 0.507505 -0.460733 \; 0.523361 -0.442638 \; 0.538571 -0.423997 \; +0.553118 -0.404834 \; 0.566983 -0.385173 \; 0.58015 -0.365037 \; 0.592602 +-0.344451 \; 0.604324 -0.323441 \; 0.615302 -0.302033 \; 0.625521 -0.280253 +\; 0.63497 -0.258127 \; 0.643636 -0.235684 \; 0.65151 -0.21295 \; 0.65858 +-0.189954 \; 0.66484 -0.166724 \; 0.67028 -0.143289 \; 0.674894 -0.119678 +\; 0.678677 -0.0959188 \; 0.681624 -0.0720416 \; 0.683731 -0.0480761 +\; 0.684996 -0.0240511 \; 0.685416 3.06133e-06 \; \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 -0 \; \;; +#X coords -1 1 1 -1 201 201 2 100 100; +#X restore 15 266 pd \$0-scope; +#X obj 7 139 text define -k \$0-scope-attrs; +#A set gain 118 \; interval 100 \;; +#N canvas 0 22 1203 672 circular_harmonics_generator____________________ +0; +#X obj 22 205 cos~; +#X obj 72 247 cos~; +#X obj 123 268 cos~; +#X obj 173 288 cos~; +#X obj 224 308 cos~; +#X obj 274 328 cos~; +#X obj 325 348 cos~; +#X obj 22 139 clip~ 0 0.05; +#X obj 22 161 *~ 20; +#X obj 72 183 -~ 0.05; +#X obj 72 161 clip~ 0.05 0.1; +#X obj 72 203 *~ 20; +#X obj 123 182 clip~ 0.1 0.15; +#X obj 123 204 -~ 0.1; +#X obj 123 224 *~ 20; +#X obj 173 244 *~ 20; +#X obj 224 264 *~ 20; +#X obj 274 284 *~ 20; +#X obj 325 304 *~ 20; +#X obj 173 202 clip~ 0.15 0.2; +#X obj 173 224 -~ 0.15; +#X obj 224 244 -~ 0.2; +#X obj 224 222 clip~ 0.2 0.25; +#X obj 274 265 -~ 0.25; +#X obj 274 242 clip~ 0.25 0.3; +#X obj 325 284 -~ 0.3; +#X obj 325 262 clip~ 0.3 0.35; +#X obj 22 19 phasor~ 0.01; +#X obj 432 576 outlet~; +#X obj 482 576 outlet~; +#X obj 533 576 outlet~; +#X obj 583 576 outlet~; +#X obj 634 576 outlet~; +#X obj 684 576 outlet~; +#X obj 735 576 outlet~; +#X obj 708 479 cos~; +#X obj 779 485 cos~; +#X obj 848 479 cos~; +#X obj 919 485 cos~; +#X obj 851 435 *~ 2; +#X obj 988 479 cos~; +#X obj 1059 485 cos~; +#X obj 988 425 *~ 3; +#X obj 462 305 clip~ 0 1; +#X obj 636 468 *~ 0; +#X obj 636 490 cos~; +#X obj 636 512 *~; +#X obj 708 511 *~; +#X obj 778 511 *~; +#X obj 848 511 *~; +#X obj 918 511 *~; +#X obj 988 511 *~; +#X obj 1059 507 *~; +#X obj 582 225 cos~; +#X obj 572 295 clip~ 0 1; +#X obj 682 305 clip~ 0 1; +#X obj 752 305 clip~ 0 1; +#X obj 582 195 -~ 0.25; +#X obj 779 463 -~ 0.25; +#X obj 919 463 -~ 0.25; +#X obj 1059 463 -~ 0.25; +#X obj 672 225 cos~; +#X obj 672 195 -~ 0.25; +#X obj 772 225 cos~; +#X obj 772 195 -~ 0.25; +#X obj 431 129 clip~ 0.35 1; +#X obj 431 151 -~ 0.35; +#X obj 431 225 cos~; +#X obj 431 173 *~ 0.76923; +#X obj 431 195 -~ 0.25; +#X obj 582 267 *~ 5; +#X obj 662 267 *~ 5; +#X obj 772 267 *~ 5; +#X obj 325 326 -~ 0.25; +#X obj 274 306 -~ 0.25; +#X obj 224 286 -~ 0.25; +#X obj 173 266 -~ 0.25; +#X obj 123 246 -~ 0.25; +#X obj 72 225 -~ 0.25; +#X obj 22 183 -~ 0.25; +#X obj 772 129 clip~ 0.5 0.85; +#X obj 772 151 -~ 0.5; +#X obj 582 173 *~ 0.909091; +#X obj 672 173 *~ 1.11111; +#X obj 772 173 *~ 1.42857; +#X obj 582 129 clip~ 0.4 0.95; +#X obj 672 129 clip~ 0.45 0.9; +#X obj 672 151 -~ 0.45; +#X obj 582 151 -~ 0.4; +#X obj 431 267 *~ 5; +#X obj 796 331 clip~ 0.55 0.8; +#X obj 796 353 -~ 0.55; +#X obj 796 375 *~ 4; +#X obj 796 397 /~ 0.6666; +#X connect 0 0 28 0; +#X connect 1 0 29 0; +#X connect 2 0 30 0; +#X connect 3 0 31 0; +#X connect 4 0 32 0; +#X connect 5 0 33 0; +#X connect 6 0 34 0; +#X connect 7 0 8 0; +#X connect 8 0 79 0; +#X connect 9 0 11 0; +#X connect 10 0 9 0; +#X connect 11 0 78 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 77 0; +#X connect 15 0 76 0; +#X connect 16 0 75 0; +#X connect 17 0 74 0; +#X connect 18 0 73 0; +#X connect 19 0 20 0; +#X connect 20 0 15 0; +#X connect 21 0 16 0; +#X connect 22 0 21 0; +#X connect 23 0 17 0; +#X connect 24 0 23 0; +#X connect 25 0 18 0; +#X connect 26 0 25 0; +#X connect 27 0 7 0; +#X connect 27 0 10 0; +#X connect 27 0 12 0; +#X connect 27 0 19 0; +#X connect 27 0 22 0; +#X connect 27 0 24 0; +#X connect 27 0 26 0; +#X connect 27 0 65 0; +#X connect 27 0 80 0; +#X connect 27 0 85 0; +#X connect 27 0 86 0; +#X connect 27 0 90 0; +#X connect 35 0 47 0; +#X connect 36 0 48 0; +#X connect 37 0 49 0; +#X connect 38 0 50 0; +#X connect 39 0 37 0; +#X connect 39 0 59 0; +#X connect 40 0 51 0; +#X connect 41 0 52 0; +#X connect 42 0 40 0; +#X connect 42 0 60 0; +#X connect 43 0 46 1; +#X connect 44 0 45 0; +#X connect 45 0 46 0; +#X connect 46 0 28 0; +#X connect 47 0 30 0; +#X connect 48 0 29 0; +#X connect 49 0 32 0; +#X connect 50 0 31 0; +#X connect 51 0 34 0; +#X connect 52 0 33 0; +#X connect 53 0 70 0; +#X connect 54 0 47 1; +#X connect 54 0 48 1; +#X connect 55 0 49 1; +#X connect 55 0 50 1; +#X connect 56 0 51 1; +#X connect 56 0 52 1; +#X connect 57 0 53 0; +#X connect 58 0 36 0; +#X connect 59 0 38 0; +#X connect 60 0 41 0; +#X connect 61 0 71 0; +#X connect 62 0 61 0; +#X connect 63 0 72 0; +#X connect 64 0 63 0; +#X connect 65 0 66 0; +#X connect 66 0 68 0; +#X connect 67 0 89 0; +#X connect 68 0 69 0; +#X connect 69 0 67 0; +#X connect 70 0 54 0; +#X connect 71 0 55 0; +#X connect 72 0 56 0; +#X connect 73 0 6 0; +#X connect 74 0 5 0; +#X connect 75 0 4 0; +#X connect 76 0 3 0; +#X connect 77 0 2 0; +#X connect 78 0 1 0; +#X connect 79 0 0 0; +#X connect 80 0 81 0; +#X connect 81 0 84 0; +#X connect 82 0 57 0; +#X connect 83 0 62 0; +#X connect 84 0 64 0; +#X connect 85 0 88 0; +#X connect 86 0 87 0; +#X connect 87 0 83 0; +#X connect 88 0 82 0; +#X connect 89 0 43 0; +#X connect 90 0 91 0; +#X connect 91 0 92 0; +#X connect 92 0 93 0; +#X connect 93 0 35 0; +#X connect 93 0 39 0; +#X connect 93 0 42 0; +#X connect 93 0 44 0; +#X connect 93 0 58 0; +#X restore 7 159 pd circular_harmonics_generator____________________ +; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0.595058 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 7 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 8.59464e-06 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 57 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 8.9665e-06 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 108 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 8.25343e-06 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 158 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 2.54501e-05 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 209 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 1.00522e-05 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 259 187 pd dis; +#N canvas 0 22 450 300 dis 0; +#X obj 100 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 -8.07339e-06 256; +#X obj 100 76 snapshot~; +#X obj 100 55 metro 20; +#X obj 109 35 loadbang; +#X obj 100 12 inlet~; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X coords 0 -1 1 1 45 14 2 100 100; +#X restore 310 187 pd dis; +#X obj 7 213 hoa.2d.process~ 3 hoa.2d.scope~ harmonics \$0-scope \$0-scope-attrs +, f 51; +#X obj 240 427 hoa-help; +#X obj 240 450 misc/hoa.credits; +#X obj 7 8 cnv 15 200 20 empty empty hoa.2d.scope~ 4 10 0 14 -233017 +-66577 0; +#X text 4 31 The abstraction displays the weighted sum of the circular +harmonics in a canvas., f 67; +#X text 4 61 The first argument is the name of the canvas., f 67; +#X text 4 75 The second argument is the name of the text object for +the attributes., f 67; +#X text 4 101 The attributes are the gain en dB and the time interval +between each drawing in ms., f 67; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 10 1; +#X connect 2 2 5 0; +#X connect 2 2 10 2; +#X connect 2 3 6 0; +#X connect 2 3 10 3; +#X connect 2 4 7 0; +#X connect 2 4 10 4; +#X connect 2 5 8 0; +#X connect 2 5 10 5; +#X connect 2 6 9 0; +#X connect 2 6 10 6; diff --git a/hoa/hoa.2d.scope~.pd b/hoa/hoa.2d.scope~.pd new file mode 100644 index 0000000..81f702a --- /dev/null +++ b/hoa/hoa.2d.scope~.pd @@ -0,0 +1,487 @@ +#N canvas 732 171 579 480 10; +#X obj 17 62 *~ 1; +#X obj 17 89 snapshot~; +#N canvas 680 62 567 623 omni 0; +#X obj 93 6 inlet; +#X obj 93 295 +, f 11; +#X obj 227 220 loadbang; +#X obj 227 242 f 1; +#X obj 93 378 pack f f, f 11; +#X obj 93 274 f; +#X obj 93 401 outlet, f 8; +#X obj 93 233 t b f, f 11; +#N canvas 0 22 450 300 loop.until 0; +#X obj 21 11 inlet; +#X obj 21 118 outlet; +#X obj 21 76 until; +#X obj 21 53 t f b, f 7; +#X obj 21 98 f 0, f 7; +#X obj 60 76 f 0; +#X obj 71 98 + 1, f 4; +#X obj 21 33 f 180; +#X connect 0 0 7 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 3 1 5 0; +#X connect 4 0 6 0; +#X connect 4 0 1 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X restore 93 207 pd loop.until; +#X obj 177 84 f 1; +#X obj 177 106 /, f 5; +#X obj 204 84 + 1; +#X obj 162 150 *; +#X obj 177 128 * 0.5; +#X obj 93 356 *; +#X obj 93 28 t b b f, f 12; +#X obj 177 11 loadbang; +#X obj 177 32 t b b; +#N canvas 706 161 449 458 nor 0; +#X obj 37 47 t f f; +#X obj 37 178 abs; +#X obj 177 178 abs; +#X obj 37 148 +; +#X obj 177 148 +; +#X obj 192 42 inlet; +#X obj 37 21 inlet; +#X obj 37 200 max, f 24; +#X obj 37 332 outlet; +#X obj 37 250 t b f; +#X obj 37 272 f 1; +#X obj 37 294 /, f 5; +#X obj 37 227 max 1; +#X obj 37 126 array max \$6-buffer-0; +#X obj 177 126 array min \$6-buffer-0; +#X connect 0 0 13 0; +#X connect 0 1 14 0; +#X connect 1 0 7 0; +#X connect 2 0 7 1; +#X connect 3 0 1 0; +#X connect 4 0 2 0; +#X connect 5 0 4 1; +#X connect 5 0 3 1; +#X connect 6 0 0 0; +#X connect 7 0 12 0; +#X connect 9 0 10 0; +#X connect 9 1 11 1; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 12 0 9 0; +#X connect 13 0 3 0; +#X connect 14 0 4 0; +#X restore 127 328 pd nor; +#X obj 166 264 array get \$6-buffer-0; +#X obj 204 58 f \$3; +#X connect 0 0 15 0; +#X connect 1 0 14 0; +#X connect 2 0 3 0; +#X connect 3 0 19 1; +#X connect 4 0 6 0; +#X connect 5 0 1 0; +#X connect 7 0 5 0; +#X connect 7 1 4 1; +#X connect 7 1 19 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 10 0 13 0; +#X connect 11 0 10 1; +#X connect 12 0 5 1; +#X connect 12 0 18 1; +#X connect 13 0 12 1; +#X connect 14 0 4 0; +#X connect 15 0 8 0; +#X connect 15 1 18 0; +#X connect 15 2 12 0; +#X connect 16 0 17 0; +#X connect 17 0 9 0; +#X connect 17 1 20 0; +#X connect 18 0 14 1; +#X connect 19 0 1 1; +#X connect 20 0 11 0; +#X restore 17 230 pd omni; +#N canvas 879 54 490 584 directional 0; +#X obj 112 182 * 6.28319; +#N canvas 645 210 240 219 e^imθ 0; +#X obj 54 29 loadbang; +#X obj 21 7 inlet; +#X obj 21 171 outlet; +#X obj 54 83 < 0; +#X obj 21 115 spigot; +#X obj 21 137 sin; +#X obj 109 83 > 0; +#X obj 76 115 spigot; +#X obj 76 137 cos; +#X obj 21 83 * \$4; +#X obj 54 54 f \$5; +#X connect 0 0 10 0; +#X connect 1 0 9 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 6 0 7 1; +#X connect 7 0 8 0; +#X connect 8 0 2 0; +#X connect 9 0 4 0; +#X connect 9 0 7 0; +#X connect 10 0 3 0; +#X connect 10 0 6 0; +#X restore 112 230 pd e^imθ; +#X obj 112 140 t f f, f 11; +#X obj 112 293 +, f 11; +#X obj 112 23 inlet; +#X obj 112 272 *; +#X obj 236 208 loadbang; +#X obj 236 230 f 1; +#X obj 112 252 *; +#X obj 40 150 f 1; +#X obj 40 172 /, f 5; +#X obj 67 150 + 1; +#X msg 247 123 const 0; +#X obj 112 69 t b f b, f 23; +#X obj 247 99 spigot 0; +#N canvas 717 127 450 300 loop.until 0; +#X obj 21 11 inlet; +#X obj 21 118 outlet; +#X obj 21 76 until; +#X obj 21 53 t f b, f 7; +#X obj 21 98 f 0, f 7; +#X obj 60 76 f 0; +#X obj 71 98 + 1, f 4; +#X obj 21 33 f 180; +#X connect 0 0 7 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 3 1 5 0; +#X connect 4 0 6 0; +#X connect 4 0 1 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X restore 112 104 pd loop.until; +#X obj 292 31 loadbang; +#X obj 40 77 loadbang; +#X obj 40 98 t b b; +#X obj 292 53 f \$3; +#X obj 292 77 == \$5; +#X obj 67 128 f \$3; +#X obj 247 145 s \$6-buffer-0; +#X obj 175 252 array get \$6-buffer-0; +#X obj 112 327 array set \$6-buffer-0, f 22; +#X obj 112 160 / -179; +#X obj 112 204 - 1.57079; +#X connect 0 0 26 0; +#X connect 1 0 8 0; +#X connect 2 0 25 0; +#X connect 2 1 23 0; +#X connect 2 1 24 1; +#X connect 3 0 24 0; +#X connect 4 0 13 0; +#X connect 5 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 23 1; +#X connect 8 0 5 0; +#X connect 9 0 10 0; +#X connect 10 0 8 1; +#X connect 11 0 10 1; +#X connect 12 0 22 0; +#X connect 13 0 15 0; +#X connect 13 1 5 1; +#X connect 13 2 14 0; +#X connect 14 0 12 0; +#X connect 15 0 2 0; +#X connect 16 0 19 0; +#X connect 17 0 18 0; +#X connect 18 0 9 0; +#X connect 18 1 21 0; +#X connect 19 0 20 0; +#X connect 20 0 14 1; +#X connect 21 0 11 0; +#X connect 23 0 3 1; +#X connect 25 0 0 0; +#X connect 26 0 1 0; +#X restore 74 230 pd directional; +#N canvas 677 84 665 431 \$0-t-scope 0; +#X obj 6 8 struct \$0-t-scope float x array bufr \$0-t-scope-value-r +array bufg \$0-t-scope-value-g; +#X obj 8 242 drawcurve -x 0 1 0.81 0 0.5751 0.5751 0 0.81 -0.5751 0.5751 +-0.81 0 -0.5751 -0.5751 0 -0.81 0.5751 -0.5751 0.81 0; +#X obj 8 282 drawcurve -x 0 1 0.54 0 0.3834 0.3834 0 0.54 -0.3834 0.3834 +-0.54 0 -0.3834 -0.3834 0 -0.54 0.3834 -0.3834 0.54 0; +#X obj 8 322 drawcurve -x 0 1 0.27 0 0.1917 0.1917 0 0.27 -0.1917 0.1917 +-0.27 0 -0.1917 -0.1917 0 -0.27 0.1917 -0.1917 0.27 0; +#X obj 7 100 drawpolygon -x 0 1 1 0 0.24 0; +#X obj 7 120 drawpolygon -x 0 1 -1 0 -0.24 0; +#X obj 7 150 drawpolygon -x 0 1 0 1 0 0.24; +#X obj 7 170 drawpolygon -x 0 1 0 -1 0 -0.24; +#X obj 8 202 drawcurve -x 0 1 1.08 0 0.7668 0.7668 0 1.079 -0.7668 +0.7668 -1.079 0 -0.7668 -0.7668 0 -1.08 0.7668 -0.7668 1.08 0; +#X obj 7 53 plot bufr 900 1 0 0 0; +#X obj 7 73 plot bufg 9 1 0 0 0; +#X restore 211 8 pd \$0-t-scope; +#X obj 17 294 spigot, f 7; +#X obj 17 316 unpack f f; +#N canvas 65 248 568 128 \$0-t-scope-value-r 0; +#X obj 35 11 struct \$0-t-scope-value-r float x float y; +#X restore 211 28 pd \$0-t-scope-value-r; +#N canvas 65 248 568 128 \$0-t-scope-value-g 0; +#X obj 35 11 struct \$0-t-scope-value-g float x float y; +#X restore 211 48 pd \$0-t-scope-value-g; +#N canvas 893 112 450 300 timer 0; +#X obj 144 20 bang~; +#X obj 77 65 r pd; +#X obj 77 87 route dsp; +#X obj 77 199 metro 100; +#X obj 144 42 spigot 1; +#X obj 171 87 f 0; +#X obj 77 221 outlet; +#X obj 77 179 change; +#X obj 144 64 t b b; +#X obj 144 86 f 1; +#N canvas 802 203 450 300 get.interval 0; +#X obj 20 94 list split 1; +#X obj 54 119 outlet; +#X obj 20 4 inlet; +#X obj 20 26 symbol interval; +#X obj 20 50 text search \$7; +#X obj 20 72 text get \$7; +#X connect 0 1 1 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 0 0; +#X restore 128 178 pd get.interval; +#X obj 128 129 loadbang; +#X obj 128 151 delay 10; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 2 0 7 0; +#X connect 3 0 6 0; +#X connect 4 0 8 0; +#X connect 5 0 4 1; +#X connect 7 0 3 0; +#X connect 8 0 9 0; +#X connect 8 1 5 0; +#X connect 9 0 7 0; +#X connect 10 0 3 1; +#X connect 11 0 12 0; +#X connect 12 0 10 0; +#X restore 56 62 pd timer; +#N canvas 776 98 450 300 amplifier 0; +#X obj 75 23 loadbang; +#X obj 75 45 delay 10; +#N canvas 974 244 450 300 get.gain 0; +#X obj 20 94 list split 1; +#X obj 54 119 outlet; +#X obj 20 4 inlet; +#X obj 20 26 symbol gain; +#X obj 20 50 text search \$7; +#X obj 20 72 text get \$7; +#X connect 0 1 1 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 0 0; +#X restore 75 68 pd get.gain; +#X obj 75 91 dbtorms; +#X obj 75 113 + 1; +#X obj 75 135 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X restore 38 39 pd amplifier; +#N canvas 765 192 450 434 clear_and_add_t 0; +#X obj 145 290 pointer; +#X obj 34 314 append \$0-t-scope x; +#X msg 274 267 \; pd-\$1 clear; +#X msg 145 267 traverse pd-\$1 \, bang; +#X obj 34 219 f 0; +#X obj 34 197 t b b, f 19; +#X obj 145 243 t s s, f 22; +#X obj 34 342 t b b p, f 45; +#X obj 34 364 f 1; +#X obj 167 383 setsize \$0-t-scope bufr; +#X obj 167 404 setsize \$0-t-scope bufg; +#X obj 167 363 f 180; +#X obj 34 386 outlet; +#X obj 301 444 outlet; +#X obj 34 173 spigot 0, f 10; +#X obj 86 89 == 0; +#X obj 34 4 loadbang; +#X obj 34 26 delay 10; +#X obj 139 112 f 1; +#X obj 34 47 t b b b, f 18; +#X obj 86 131 +; +#X obj 86 153 == 2; +#X obj 145 221 symbol \$6; +#X obj 139 90 sel \$6; +#X obj 139 68 symbol \$6; +#X obj 86 67 f \$4; +#X connect 0 0 1 1; +#X connect 1 0 7 0; +#X connect 3 0 0 0; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 5 1 22 0; +#X connect 6 0 3 0; +#X connect 6 1 2 0; +#X connect 7 0 8 0; +#X connect 7 1 11 0; +#X connect 7 2 9 1; +#X connect 7 2 10 1; +#X connect 7 2 13 0; +#X connect 8 0 12 0; +#X connect 11 0 9 0; +#X connect 11 0 10 0; +#X connect 14 0 5 0; +#X connect 15 0 20 0; +#X connect 16 0 17 0; +#X connect 17 0 19 0; +#X connect 18 0 20 1; +#X connect 19 0 14 0; +#X connect 19 1 25 0; +#X connect 19 2 24 0; +#X connect 20 0 21 0; +#X connect 21 0 14 1; +#X connect 22 0 6 0; +#X connect 23 0 18 0; +#X connect 24 0 23 0; +#X connect 25 0 15 0; +#X restore 56 259 pd clear_and_add_t; +#N canvas 918 77 168 206 split_y 0; +#X obj 13 130 spigot; +#X obj 64 130 spigot; +#X obj 46 39 loadbang; +#X obj 46 103 == 0; +#X obj 97 103 != 0; +#X obj 13 13 inlet; +#X obj 13 152 outlet; +#X obj 64 152 outlet; +#X obj 46 61 f \$4; +#X connect 0 0 6 0; +#X connect 1 0 7 0; +#X connect 2 0 8 0; +#X connect 3 0 0 1; +#X connect 4 0 1 1; +#X connect 5 0 0 0; +#X connect 5 0 1 0; +#X connect 8 0 3 0; +#X connect 8 0 4 0; +#X restore 17 204 pd split_y; +#N canvas 0 22 450 300 set_positive 0; +#X obj 28 122 pack f f; +#X obj 205 85 element \$0-t-scope bufr; +#X obj 28 99 max 0; +#X obj 28 168 set \$0-t-scope-value-r x y, f 30; +#N canvas 0 23 189 224 poltocar 0; +#X obj 26 11 inlet; +#X obj 26 172 outlet; +#X obj 26 135 pack f f, f 14; +#X obj 26 33 unpack f f, f 17; +#X obj 107 103 *; +#X obj 26 55 t f f, f 14; +#X obj 125 81 sin; +#X obj 26 103 *; +#X obj 44 81 cos; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 3 1 6 0; +#X connect 3 1 8 0; +#X connect 4 0 2 1; +#X connect 5 0 7 0; +#X connect 5 1 4 0; +#X connect 6 0 4 1; +#X connect 7 0 2 0; +#X connect 8 0 7 1; +#X restore 28 145 pd poltocar; +#X obj 28 48 inlet; +#X obj 73 48 inlet; +#X obj 205 48 inlet; +#X obj 340 48 inlet; +#X connect 0 0 4 0; +#X connect 1 0 3 2; +#X connect 2 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 2 0; +#X connect 6 0 0 1; +#X connect 7 0 1 0; +#X connect 8 0 1 1; +#X restore 17 394 pd set_positive; +#X obj 46 344 / 179; +#X obj 46 366 * 6.28319; +#N canvas 0 22 450 300 set_negative 0; +#X obj 28 142 pack f f; +#N canvas 0 23 189 224 poltocar 0; +#X obj 26 11 inlet; +#X obj 26 172 outlet; +#X obj 26 135 pack f f, f 14; +#X obj 26 33 unpack f f, f 17; +#X obj 107 103 *; +#X obj 26 55 t f f, f 14; +#X obj 125 81 sin; +#X obj 26 103 *; +#X obj 44 81 cos; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 3 1 6 0; +#X connect 3 1 8 0; +#X connect 4 0 2 1; +#X connect 5 0 7 0; +#X connect 5 1 4 0; +#X connect 6 0 4 1; +#X connect 7 0 2 0; +#X connect 8 0 7 1; +#X restore 28 165 pd poltocar; +#X obj 28 48 inlet; +#X obj 73 48 inlet; +#X obj 205 48 inlet; +#X obj 340 48 inlet, f 45; +#X obj 28 188 set \$0-t-scope-value-g x y, f 30; +#X obj 205 85 element \$0-t-scope bufg; +#X obj 28 99 min 0; +#X obj 28 121 * -1; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 2 0 8 0; +#X connect 3 0 0 1; +#X connect 4 0 7 0; +#X connect 5 0 7 1; +#X connect 7 0 6 2; +#X connect 8 0 9 0; +#X connect 9 0 0 0; +#X restore 17 424 pd set_negative; +#X obj 17 181 spigot 0; +#X obj 62 115 loadbang; +#X obj 62 158 != 0; +#X obj 17 16 hoa.in~; +#X obj 62 136 f \$3; +#X obj 211 68 array define \$6-buffer-\$4 180; +#X connect 0 0 1 0; +#X connect 1 0 17 0; +#X connect 2 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 13 0; +#X connect 6 0 16 0; +#X connect 6 1 13 2; +#X connect 6 1 14 0; +#X connect 6 1 16 2; +#X connect 9 0 1 0; +#X connect 10 0 0 1; +#X connect 11 0 5 1; +#X connect 11 1 13 3; +#X connect 11 1 16 3; +#X connect 12 0 2 0; +#X connect 12 1 3 0; +#X connect 14 0 15 0; +#X connect 15 0 13 1; +#X connect 15 0 16 1; +#X connect 17 0 12 0; +#X connect 18 0 21 0; +#X connect 19 0 17 1; +#X connect 20 0 0 0; +#X connect 21 0 19 0; diff --git a/hoa/hoa.2d.syn.grain~-help.pd b/hoa/hoa.2d.syn.grain~-help.pd new file mode 100644 index 0000000..712ce4d --- /dev/null +++ b/hoa/hoa.2d.syn.grain~-help.pd @@ -0,0 +1,388 @@ +#N struct 11461-t-scope float x array bufr 11461-t-scope-value-r array +bufg 11461-t-scope-value-g; +#N struct 11461-t-scope-value-r float x float y; +#N struct 11461-t-scope-value-g float x float y; +#N canvas 606 23 528 825 10; +#X declare -stdpath spam; +#X obj 37 382 *~; +#X obj 49 405 nbx 5 14 0 100 0 0 empty \$0-gain empty 0 -8 0 10 -262144 +-1 -1 80 256; +#X obj 22 449 *~, f 5; +#X obj 22 340 noise~; +#X obj 320 719 declare -stdpath spam; +#N canvas 0 22 450 300 gain 0; +#X obj 10 45 dbtorms; +#X obj 10 67 pack f 20; +#X obj 10 89 line~; +#X obj 10 25 inlet; +#X obj 10 111 outlet~; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X restore 49 425 pd gain; +#X obj 37 360 osc~ 5; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 11461-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 0 \; \; 0.61223 0 \; 0.628785 0.0220804 +\; 0.644808 0.0453421 \; 0.660173 0.0697776 \; 0.674753 0.0953672 \; +0.688417 0.122079 \; 0.701039 0.149868 \; 0.712494 0.178678 \; 0.722661 +0.20844 \; 0.731423 0.239074 \; 0.738671 0.270487 \; 0.744304 0.302578 +\; 0.74823 0.335234 \; 0.750366 0.368336 \; 0.750641 0.401756 \; 0.748997 +0.43536 \; 0.745387 0.46901 \; 0.739776 0.502562 \; 0.732146 0.535873 +\; 0.72249 0.568795 \; 0.710815 0.601185 \; 0.697141 0.632898 \; 0.681503 +0.663795 \; 0.663948 0.693739 \; 0.644533 0.7226 \; 0.623331 0.750256 +\; 0.600421 0.776589 \; 0.575894 0.801493 \; 0.549851 0.824869 \; 0.522399 +0.846631 \; 0.493651 0.8667 \; 0.463727 0.88501 \; 0.43275 0.901507 +\; 0.400849 0.916144 \; 0.36815 0.92889 \; 0.334784 0.939722 \; 0.300881 +0.948629 \; 0.266569 0.95561 \; 0.231974 0.960674 \; 0.19722 0.963837 +\; 0.162425 0.965128 \; 0.127706 0.96458 \; 0.0931725 0.962235 \; 0.0589296 +0.958141 \; 0.0250765 0.952353 \; -0.00829346 0.944928 \; -0.0410933 +0.93593 \; -0.0732423 0.925425 \; -0.104666 0.913481 \; -0.135295 0.900169 +\; -0.165068 0.885562 \; -0.193928 0.869732 \; -0.221825 0.852753 \; +-0.248712 0.834698 \; -0.274548 0.815641 \; -0.299298 0.795653 \; -0.32293 +0.774806 \; -0.345416 0.75317 \; -0.366733 0.730814 \; -0.38686 0.707807 +\; -0.40578 0.684214 \; -0.423479 0.660102 \; -0.439947 0.635535 \; +-0.455175 0.610575 \; -0.469158 0.585287 \; -0.481893 0.559731 \; -0.49338 +0.533969 \; -0.503622 0.50806 \; -0.512625 0.482063 \; -0.520397 0.456038 +\; -0.52695 0.430043 \; -0.5323 0.404134 \; -0.536463 0.378369 \; -0.539463 +0.352803 \; -0.541325 0.327491 \; -0.542078 0.302484 \; -0.541754 0.277835 +\; -0.540391 0.253593 \; -0.538029 0.229804 \; -0.534713 0.206513 \; +-0.53049 0.183761 \; -0.525412 0.161586 \; -0.519533 0.140022 \; -0.51291 +0.119099 \; -0.505605 0.0988414 \; -0.497677 0.079271 \; -0.489192 +0.0604032 \; -0.480214 0.0422482 \; -0.470808 0.024811 \; -0.46104 +0.00809137 \; -0.450972 -0.00791681 \; -0.44067 -0.0232248 \; -0.430193 +-0.0378495 \; -0.419601 -0.0518122 \; -0.408947 -0.0651399 \; -0.398284 +-0.077863 \; -0.387658 -0.0900166 \; -0.37711 -0.101639 \; -0.366678 +-0.112771 \; -0.356392 -0.123456 \; -0.346277 -0.133738 \; -0.33635 +-0.143664 \; -0.326624 -0.153279 \; -0.317105 -0.162627 \; -0.307792 +-0.171752 \; -0.298678 -0.180696 \; -0.289751 -0.189496 \; -0.280993 +-0.198187 \; -0.272381 -0.2068 \; -0.263887 -0.21536 \; -0.255482 -0.223888 +\; -0.24713 -0.232399 \; -0.238796 -0.240902 \; -0.230441 -0.2494 \; +-0.222026 -0.257891 \; -0.213512 -0.266364 \; -0.204861 -0.274805 \; +-0.196038 -0.283193 \; -0.187007 -0.291502 \; -0.177739 -0.299701 \; +-0.168205 -0.307754 \; -0.158382 -0.315622 \; -0.148252 -0.323263 \; +-0.137802 -0.330633 \; -0.127024 -0.337685 \; -0.115916 -0.344373 \; +-0.104481 -0.350652 \; -0.0927273 -0.356475 \; -0.0806706 -0.3618 \; +-0.0683296 -0.366586 \; -0.0557288 -0.370796 \; -0.0428962 -0.374397 +\; -0.0298644 -0.377363 \; -0.0166682 -0.379669 \; -0.0033448 -0.381299 +\; 0.0100666 -0.382244 \; 0.0235268 -0.382498 \; 0.0369966 -0.382063 +\; 0.0504375 -0.380948 \; 0.0638134 -0.379169 \; 0.0770908 -0.376744 +\; 0.0902392 -0.3737 \; 0.103233 -0.370069 \; 0.116051 -0.365886 \; +0.128678 -0.361189 \; 0.141104 -0.356019 \; 0.153325 -0.350422 \; 0.165344 +-0.34444 \; 0.177169 -0.338119 \; 0.188817 -0.331502 \; 0.20031 -0.32463 +\; 0.211673 -0.317543 \; 0.222942 -0.310273 \; 0.234153 -0.302853 \; +0.245349 -0.295305 \; 0.256574 -0.287649 \; 0.267877 -0.279894 \; 0.279307 +-0.272046 \; 0.290912 -0.264101 \; 0.302741 -0.256047 \; 0.314842 -0.247864 +\; 0.327259 -0.239525 \; 0.34003 -0.230995 \; 0.353191 -0.222232 \; +0.36677 -0.213185 \; 0.380787 -0.203801 \; 0.395256 -0.194019 \; 0.410179 +-0.183773 \; 0.425553 -0.172995 \; 0.44136 -0.161615 \; 0.457575 -0.149561 +\; 0.474159 -0.136762 \; 0.491066 -0.123147 \; 0.508236 -0.108648 \; +0.5256 -0.0932036 \; 0.543079 -0.0767544 \; 0.560583 -0.0592487 \; +0.578015 -0.0406427 \; 0.595269 -0.0209007 \; 0.612232 2.73446e-06 +\; \;; +#X coords -1 1 1 -1 201 201 2 100 100; +#X restore 64 526 pd \$0-scope; +#X obj 22 419 *~; +#X obj 22 762 dac~ 1 2 3 4 5 6 7 8, f 47; +#X obj 320 739 text define -k \$0-scope-attrs; +#A set gain 150 \; interval 100 \;; +#X obj 320 760 text define -k \$0-pro-attrs; +#A set angles 45 90 135 180 225 270 315 360 \;; +#X obj 22 735 spam~ 7 ylm.2d.projector~ 3 8 \$0-pro-attrs, f 47; +#N canvas 0 22 450 300 init 0; +#X obj 23 32 loadbang; +#X msg 23 54 80; +#X obj 23 76 s \$0-gain; +#X obj 93 32 loadbang; +#X obj 93 76 s \$0-pos; +#X msg 93 54 1 0; +#X obj 163 32 loadbang; +#X msg 163 54 1; +#X obj 163 76 s \$0-traj; +#X obj 23 102 loadbang; +#X obj 23 146 s \$0-delay; +#X msg 23 124 3000; +#X obj 163 102 loadbang; +#X msg 163 124 1; +#X obj 163 146 s \$0-diff; +#N canvas 237 132 503 391 grain_env 0; +#X obj 270 148 / 256; +#X obj 270 247 * 0.5; +#X obj 270 219 sin; +#X obj 270 271 + 0.5; +#X obj 270 120 t f f; +#X obj 270 299 pack; +#X obj 270 169 - 0.5; +#X obj 271 32 t b b; +#X obj 270 76 until; +#X obj 270 97 f; +#X obj 297 98 + 1; +#X msg 270 55 512; +#X obj 271 8 loadbang; +#X obj 270 193 * 3.14159; +#X obj 310 55 f 0; +#X obj 335 11 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 270 323 tabwrite \$0-grain-env; +#X connect 0 0 6 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 4 0 0 0; +#X connect 4 1 5 1; +#X connect 5 0 16 0; +#X connect 6 0 13 0; +#X connect 7 0 11 0; +#X connect 7 0 14 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 0 4 0; +#X connect 10 0 9 1; +#X connect 11 0 8 0; +#X connect 12 0 7 0; +#X connect 13 0 2 0; +#X connect 14 0 9 1; +#X connect 15 0 7 0; +#X restore 24 11 pd grain_env; +#X obj 240 148 s \$0-rarefaction; +#X obj 240 102 loadbang; +#X msg 240 124 0; +#X obj 240 77 s \$0-size; +#X obj 240 32 loadbang; +#X msg 240 54 100; +#X obj 307 31 loadbang; +#X obj 307 77 s \$0-feedback; +#X msg 307 53 50; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 5 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 9 0 11 0; +#X connect 11 0 10 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 17 0 18 0; +#X connect 18 0 16 0; +#X connect 20 0 21 0; +#X connect 21 0 19 0; +#X connect 22 0 24 0; +#X connect 24 0 23 0; +#X restore 320 698 pd init; +#X obj 22 503 spam~ 7 ylm.2d.scope~ 3 \$0-scope \$0-scope-attrs; +#N canvas 217 367 450 300 pos 0; +#X obj 145 100 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 1.25664 256; +#X obj 100 100 nbx 4 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -262144 +-1 -1 1 256; +#X obj 119 77 t b f; +#X obj 101 150 pack 1 f; +#X obj 101 18 r \$0-pos; +#X obj 101 40 unpack f f; +#X obj 101 172 outlet; +#X obj 164 19 inlet; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 2 1 3 1; +#X connect 3 0 6 0; +#X connect 4 0 5 0; +#X connect 5 0 1 0; +#X connect 5 1 0 0; +#X connect 7 0 5 0; +#X coords 0 -1 1 1 90 14 2 100 100; +#X restore 341 489 pd pos; +#X obj 341 443 tgl 15 0 empty \$0-traj empty 17 7 0 10 -262144 -1 -1 +1 1; +#N canvas 0 22 450 406 trajectory 0; +#X obj 158 109 + 1; +#X obj 128 173 / 180; +#X obj 128 195 * 6.28318; +#X obj 128 153 f -1; +#X obj 128 131 sel 179 0; +#X obj 128 109 f 0; +#X obj 83 106 + 1; +#X obj 53 150 f -1; +#X obj 93 150 f 1; +#X obj 53 106 f 0; +#X obj 53 128 sel 499 0; +#X obj 53 235 t b f; +#X obj 53 257 f 1; +#X obj 53 279 -, f 5; +#X obj 53 79 t b b, f 13; +#X obj 53 55 metro 20; +#X obj 53 341 pack f f, f 13; +#X obj 53 33 inlet; +#X obj 53 363 outlet; +#X obj 159 153 f 1; +#X obj 53 170 max 300; +#X obj 53 192 - 300; +#X obj 53 214 / 200; +#X connect 0 0 5 1; +#X connect 1 0 2 0; +#X connect 2 0 16 1; +#X connect 3 0 0 1; +#X connect 4 0 3 0; +#X connect 4 1 19 0; +#X connect 5 0 0 0; +#X connect 5 0 1 0; +#X connect 5 0 4 0; +#X connect 6 0 9 1; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 6 0; +#X connect 9 0 10 0; +#X connect 9 0 20 0; +#X connect 10 0 7 0; +#X connect 10 1 8 0; +#X connect 11 0 12 0; +#X connect 11 1 13 1; +#X connect 12 0 13 0; +#X connect 13 0 16 0; +#X connect 14 0 9 0; +#X connect 14 1 5 0; +#X connect 15 0 14 0; +#X connect 16 0 18 0; +#X connect 17 0 15 0; +#X connect 19 0 0 1; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 11 0; +#X restore 341 466 pd trajectory; +#X obj 132 428 nbx 5 14 0 5000 0 0 empty \$0-delay empty 0 -8 0 10 +-262144 -1 -1 3000 256; +#X obj 341 398 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 14.2857 256; +#X msg 341 416 diffusion \$1; +#X msg 132 447 delay \$1; +#X obj 341 352 tgl 15 0 empty \$0-diff empty 17 7 0 10 -262144 -1 -1 +1 1; +#N canvas 0 22 450 406 diffuse 0; +#X obj 53 150 f -1; +#X obj 93 150 f 1; +#X obj 53 55 metro 20; +#X obj 53 33 inlet; +#X obj 33 263 outlet; +#X obj 53 106 f 0; +#X obj 83 106 + 1; +#X obj 32 198 - 150; +#X obj 53 128 sel 999 0; +#X obj 32 176 clip 150 850; +#X obj 32 224 / 7; +#X connect 0 0 6 1; +#X connect 1 0 6 1; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 5 0 6 0; +#X connect 5 0 8 0; +#X connect 5 0 9 0; +#X connect 6 0 5 1; +#X connect 7 0 10 0; +#X connect 8 0 0 0; +#X connect 8 1 1 0; +#X connect 9 0 7 0; +#X connect 10 0 4 0; +#X restore 341 375 pd diffuse; +#X obj 320 651 table \$0-grain-env 512, f 14; +#X obj 22 476 spam~ 7 ylm.2d.syn.grain~ 3 \$0-grain-env, f 47; +#X text 4 175 size[l \, m] = delay * 1 -(2m / 2N) if m >= 0, f 67 +; +#X text 4 188 size[l \, m] = delay * 1 - ((2m-1) / 2N) if m < 0, f +67; +#X text 4 201 with l the degree \, m the azimuthal order of the harmonics +and N the order of decomposition., f 67; +#X text 4 228 The delay time and the factor of diffusion are scaled +in a similar way to the delay synthesis., f 67; +#X text 4 254 The abstraction expects the order of decomposition as +the first argument and the name of the buffer to use for the envellope +of amplitude of the grains as the second argument. The maximum delay +time is 10000 ms. For an order of decomposition N \, there are 2N+1 +harmonics. The left inlet expects the signal to synthesize and the +right inlet expects all the others messages., f 67; +#X msg 194 447 rarefaction \$1; +#X obj 194 428 nbx 5 14 0 5000 0 0 empty \$0-rarefaction empty 0 -8 +0 10 -262144 -1 -1 0 256; +#X msg 132 397 size \$1; +#X obj 132 378 nbx 5 14 0 5000 0 0 empty \$0-size empty 0 -8 0 10 -262144 +-1 -1 100 256; +#X obj 194 378 nbx 5 14 0 5000 0 0 empty \$0-feedback empty 0 -8 0 +10 -262144 -1 -1 50 256; +#X msg 194 397 feedback \$1; +#X text 4 31 The abstraction synthesizes the signals of the circular +harmonics for a sound source using quasi-synchronous granular synthesis +(QSGS). Like for the delay synthesis \, the idea behind this implementation +is to decorrelate the signal depending a factor of diffusion. When +the diffussion is 100% \, all the signal are decorrelated. Decreasing +the factor of diffusion toward zero brings back linearly to a directional +synthesis. The granulation offers four parameters \, the size of the +grain in ms \, the delay time in ms \, the feedback in % and the rarefaction +in %. The size of the grain is scaled depending on the degree and the +azimuthal order of the harmonics and the diffusion factor following +this equation:, f 67; +#X connect 0 0 8 1; +#X connect 1 0 5 0; +#X connect 2 0 25 0; +#X connect 3 0 8 0; +#X connect 5 0 2 1; +#X connect 6 0 0 0; +#X connect 6 0 0 1; +#X connect 8 0 2 0; +#X connect 12 0 9 0; +#X connect 12 1 9 1; +#X connect 12 2 9 2; +#X connect 12 3 9 3; +#X connect 12 4 9 4; +#X connect 12 5 9 5; +#X connect 12 6 9 6; +#X connect 12 7 9 7; +#X connect 15 0 25 1; +#X connect 16 0 17 0; +#X connect 17 0 15 0; +#X connect 18 0 21 0; +#X connect 19 0 20 0; +#X connect 20 0 25 1; +#X connect 21 0 25 1; +#X connect 22 0 23 0; +#X connect 23 0 19 0; +#X connect 25 0 12 0; +#X connect 25 0 14 0; +#X connect 25 1 12 1; +#X connect 25 1 14 1; +#X connect 25 2 12 2; +#X connect 25 2 14 2; +#X connect 25 3 12 3; +#X connect 25 3 14 3; +#X connect 25 4 12 4; +#X connect 25 4 14 4; +#X connect 25 5 12 5; +#X connect 25 5 14 5; +#X connect 25 6 12 6; +#X connect 25 6 14 6; +#X connect 31 0 25 1; +#X connect 32 0 31 0; +#X connect 33 0 25 1; +#X connect 34 0 33 0; +#X connect 35 0 36 0; +#X connect 36 0 25 1; diff --git a/hoa/hoa.2d.syn.grain~.pd b/hoa/hoa.2d.syn.grain~.pd new file mode 100644 index 0000000..968a081 --- /dev/null +++ b/hoa/hoa.2d.syn.grain~.pd @@ -0,0 +1,507 @@ +#N canvas 86 64 576 513 10; +#X obj 424 40 route diffusion; +#X obj 424 62 clip 0 100; +#X obj 439 107 loadbang; +#X obj 439 129 t b b, f 6; +#X obj 439 218 -, f 6; +#X obj 439 240 + 1; +#X obj 472 194 unpack; +#N canvas 0 22 450 300 itolm 0; +#X obj 26 57 + 1; +#X obj 26 79 / 2; +#X obj 26 101 int; +#X obj 26 35 t f f, f 10; +#X obj 86 57 mod 2; +#X obj 26 123 t f f, f 8; +#X obj 86 79 sel 0 1, f 9; +#X obj 86 101 f 1; +#X obj 111 101 f -1; +#X obj 71 147 *; +#X obj 26 11 inlet; +#X obj 26 222 outlet; +#X obj 26 177 pack f f; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 3 0 0 0; +#X connect 3 1 4 0; +#X connect 4 0 6 0; +#X connect 5 0 12 0; +#X connect 5 1 9 0; +#X connect 6 0 7 0; +#X connect 6 1 8 0; +#X connect 7 0 9 1; +#X connect 8 0 9 1; +#X connect 9 0 12 1; +#X connect 10 0 3 0; +#X connect 12 0 11 0; +#X restore 472 173 pd itolm; +#X obj 424 266 pow; +#X obj 424 314 s \$0-diff; +#X obj 424 84 / 100; +#X obj 90 443 *~, f 14; +#X obj 171 207 loadbang; +#N canvas 571 248 310 376 e^imθ 0; +#X obj 42 69 loadbang; +#X obj 21 219 cos~; +#X obj 21 198 +~ 0, f 9; +#X obj 21 241 outlet~; +#X obj 21 163 *~ 1; +#X obj 74 155 < 0; +#X obj 74 177 * 0.25; +#X obj 21 49 line~; +#X obj 21 27 pack f 20; +#X obj 21 7 inlet; +#X obj 42 108 f \$4; +#X obj 74 108 f \$5; +#X connect 0 0 10 0; +#X connect 0 0 11 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 4 0 2 0; +#X connect 5 0 6 0; +#X connect 6 0 2 1; +#X connect 7 0 4 0; +#X connect 8 0 7 0; +#X connect 9 0 8 0; +#X connect 10 0 4 1; +#X connect 11 0 5 0; +#X restore 228 399 pd e^imθ; +#X obj 171 275 route list pol car; +#X obj 171 347 unpack f f; +#N canvas 0 23 175 333 pi_wrap 0; +#X obj 92 194 > 0; +#X obj 26 62 / 6.28319; +#X obj 26 84 wrap; +#X obj 26 106 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0.277184 256; +#X obj 53 194 abs; +#X obj 26 283 +, f 5; +#X obj 53 261 *, f 7; +#X obj 26 128 t f f; +#X obj 26 305 t f f; +#X obj 53 152 - 0; +#X obj 92 216 * -2; +#X obj 92 238 + 1; +#X obj 53 174 t f f, f 7; +#X obj 53 236 int; +#X obj 53 216 + 0.5; +#X obj 26 10 inlet; +#X obj 26 327 outlet; +#X obj 26 32 - 3.14159; +#X connect 0 0 10 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 7 0; +#X connect 4 0 14 0; +#X connect 5 0 8 0; +#X connect 6 0 5 1; +#X connect 7 0 5 0; +#X connect 7 1 9 0; +#X connect 8 0 16 0; +#X connect 8 1 9 1; +#X connect 9 0 12 0; +#X connect 10 0 11 0; +#X connect 11 0 6 1; +#X connect 12 0 4 0; +#X connect 12 1 0 0; +#X connect 13 0 6 0; +#X connect 14 0 13 0; +#X connect 15 0 17 0; +#X connect 17 0 1 0; +#X restore 228 373 pd pi_wrap; +#X msg 171 228 list 1 0; +#N canvas 988 94 344 422 dc 0; +#X obj 93 52 loadbang; +#X obj 23 187 t f b f, f 9; +#X obj 68 220 f 1; +#X obj 68 242 -, f 5; +#X obj 68 264 *, f 8; +#X obj 68 286 + 1; +#X obj 23 312 *, f 4; +#X obj 23 61 moses 1; +#X obj 52 86 t b f; +#X obj 52 108 f 1; +#X obj 52 130 /, f 5; +#X obj 23 12 inlet; +#X obj 23 346 pack f 20; +#X obj 23 368 line~; +#X obj 23 390 outlet~; +#X text 103 300 if r > 1 -> g = 1/r; +#X text 103 320 if r <= 1 -> r^l(1+(1-x)*(N-l)); +#X obj 23 39 max 1e-06; +#X obj 93 186 - \$4, f 5; +#X obj 93 96 f \$3; +#X obj 23 220 pow \$4; +#X connect 0 0 19 0; +#X connect 1 0 20 0; +#X connect 1 1 2 0; +#X connect 1 2 3 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 6 1; +#X connect 6 0 12 0; +#X connect 7 0 1 0; +#X connect 7 1 8 0; +#X connect 8 0 9 0; +#X connect 8 1 10 1; +#X connect 9 0 10 0; +#X connect 10 0 12 0; +#X connect 11 0 17 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 17 0 7 0; +#X connect 18 0 4 1; +#X connect 19 0 18 0; +#X connect 20 0 6 0; +#X restore 171 399 pd dc; +#N canvas 0 22 450 300 cartopol 0; +#X obj 26 11 inlet; +#X obj 26 202 outlet; +#X obj 26 77 t f f; +#X obj 83 77 t f f; +#X obj 26 99 *, f 5; +#X obj 83 99 *, f 5; +#X obj 26 121 +, f 10; +#X obj 26 143 sqrt; +#X obj 125 97 atan2, f 10; +#X obj 26 33 t l l, f 17; +#X obj 125 55 unpack f f; +#X obj 26 55 unpack f f; +#X obj 125 77 swap, f 10; +#X obj 26 165 pack f f, f 17; +#X connect 0 0 9 0; +#X connect 2 0 4 0; +#X connect 2 1 4 1; +#X connect 3 0 5 0; +#X connect 3 1 5 1; +#X connect 4 0 6 0; +#X connect 5 0 6 1; +#X connect 6 0 7 0; +#X connect 7 0 13 0; +#X connect 8 0 13 1; +#X connect 9 0 11 0; +#X connect 9 1 10 0; +#X connect 10 0 12 0; +#X connect 10 1 12 1; +#X connect 11 0 2 0; +#X connect 11 1 3 0; +#X connect 12 0 8 0; +#X connect 12 1 8 1; +#X connect 13 0 1 0; +#X restore 211 301 pd cartopol; +#X obj 171 421 *~, f 10; +#X obj 32 413 *~; +#X obj 47 314 line~; +#X obj 105 338 sig~ 1; +#X obj 105 360 -~; +#X obj 90 413 *~; +#X obj 47 269 r \$0-diff; +#X obj 47 291 pack f 20; +#X obj 86 50 route size delay feedback rarefaction; +#X obj 195 107 / 100; +#X obj 195 84 clip 0 100; +#X obj 250 137 / 100; +#X obj 250 114 clip 0 100; +#X obj 305 133 loadbang; +#N canvas 0 22 450 300 sizes 0; +#X obj 125 26 r \$0-diff; +#X obj 115 5 inlet; +#X obj 125 178 t b f; +#X obj 115 204 *, f 5; +#X obj 115 226 outlet; +#X obj 125 135 *, f 7; +#N canvas 205 311 450 300 grainf 0; +#X obj 15 9 loadbang; +#X obj 48 103 * 2; +#X obj 48 125 + 1; +#X obj 15 148 /, f 6; +#X obj 15 172 t b f; +#X obj 15 194 f 1; +#X obj 15 216 -, f 5; +#X obj 15 238 outlet; +#X obj 48 81 f \$3; +#X obj 15 51 f \$4; +#X obj 15 73 * 2; +#X obj 15 31 t b b b; +#X obj 103 62 f \$5; +#X obj 103 84 < 0; +#X obj 15 95 -; +#X connect 0 0 11 0; +#X connect 1 0 2 0; +#X connect 2 0 3 1; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 6 1; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 8 0 1 0; +#X connect 9 0 10 0; +#X connect 10 0 14 0; +#X connect 11 0 9 0; +#X connect 11 1 12 0; +#X connect 11 2 8 0; +#X connect 12 0 13 0; +#X connect 13 0 14 1; +#X connect 14 0 3 0; +#X restore 164 112 pd grainf; +#X obj 125 157 +, f 5; +#X obj 125 48 t f b f, f 10; +#X obj 153 70 f 1; +#X obj 153 92 -, f 5; +#X connect 0 0 8 0; +#X connect 1 0 3 0; +#X connect 2 0 3 0; +#X connect 2 1 3 1; +#X connect 3 0 4 0; +#X connect 5 0 7 0; +#X connect 6 0 5 1; +#X connect 7 0 2 0; +#X connect 8 0 5 0; +#X connect 8 1 9 0; +#X connect 8 2 10 1; +#X connect 9 0 10 0; +#X connect 10 0 7 1; +#X restore 86 103 pd sizes; +#X obj 86 82 max 1e-06; +#N canvas 0 22 450 300 delays 0; +#X obj 125 26 r \$0-diff; +#X obj 115 5 inlet; +#X obj 125 178 t b f; +#X obj 115 204 *, f 5; +#X obj 115 226 outlet; +#X obj 125 135 *, f 7; +#X obj 125 157 +, f 5; +#X obj 125 48 t f b f, f 10; +#X obj 153 70 f 1; +#X obj 153 92 -, f 5; +#N canvas 0 22 450 300 sizef 0; +#X obj 15 9 loadbang; +#X obj 15 31 t b b, f 6; +#X obj 48 73 * 2; +#X obj 48 95 + 1; +#X obj 15 118 /, f 6; +#X obj 15 158 outlet; +#X obj 15 73 + 1; +#X obj 48 51 f \$3; +#X obj 15 51 f \$4; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 1 1 7 0; +#X connect 2 0 3 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 6 0 4 0; +#X connect 7 0 2 0; +#X connect 8 0 6 0; +#X restore 164 112 pd sizef; +#X connect 0 0 7 0; +#X connect 1 0 3 0; +#X connect 2 0 3 0; +#X connect 2 1 3 1; +#X connect 3 0 4 0; +#X connect 5 0 6 0; +#X connect 6 0 2 0; +#X connect 7 0 5 0; +#X connect 7 1 8 0; +#X connect 7 2 9 1; +#X connect 8 0 9 0; +#X connect 9 0 6 1; +#X connect 10 0 5 1; +#X restore 140 153 pd delays; +#N canvas 0 22 694 532 grain~ 0; +#X obj 87 312 line~; +#X obj 64 475 *~, f 17; +#X obj 163 447 *~, f 11; +#X obj 226 346 *~ 513; +#X obj 192 158 phasor~ 1; +#X msg 87 288 \$1 20; +#X obj 226 375 tabread4~; +#X obj 64 211 samphold~; +#X obj 64 123 noise~; +#X obj 64 146 *~ 1; +#X obj 64 167 +~; +#X obj 64 188 abs~; +#X obj 85 97 * 0.1; +#X obj 163 361 samphold~; +#X obj 163 284 +~ 1; +#X obj 163 310 *~ 0.5; +#X obj 163 262 noise~; +#N canvas 0 50 450 300 >~ 0; +#X obj 67 114 max~ 0; +#X obj 67 175 -~ 0; +#X obj 130 188 /~; +#X obj 130 152 sig~ -1; +#X obj 145 114 -~; +#X obj 67 212 *~; +#X obj 67 17 inlet~; +#X obj 67 252 outlet~; +#X obj 132 15 inlet; +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 2 0 5 1; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 5 0 7 0; +#X connect 6 0 0 0; +#X connect 6 0 4 1; +#X connect 8 0 4 0; +#X connect 8 0 1 1; +#X connect 8 0 0 1; +#X restore 163 339 pd >~ 1; +#X obj 42 13 inlet~; +#X obj 64 510 outlet~; +#X obj 549 18 inlet; +#X obj 434 18 inlet; +#X obj 344 18 inlet; +#X obj 193 18 inlet; +#X obj 249 18 inlet; +#X msg 286 345 set \$1; +#N canvas 0 22 230 332 frequ 0; +#X obj 19 114 random; +#X obj 19 190 +; +#X obj 19 92 metro; +#X obj 19 163 t b f; +#X obj 19 137 * 0.1; +#X obj 18 213 t b f; +#X obj 20 278 /; +#X msg 20 245 1000; +#X obj 112 13 inlet; +#X obj 19 48 loadbang; +#X obj 20 300 outlet; +#X msg 19 70 1; +#X obj 112 35 moses 1; +#X connect 0 0 4 0; +#X connect 1 0 5 0; +#X connect 1 0 6 1; +#X connect 2 0 0 0; +#X connect 3 0 1 0; +#X connect 3 1 1 1; +#X connect 4 0 3 0; +#X connect 5 0 7 0; +#X connect 5 1 6 1; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 8 0 1 0; +#X connect 8 0 0 1; +#X connect 8 0 12 0; +#X connect 9 0 11 0; +#X connect 11 0 2 0; +#X connect 12 1 2 1; +#X restore 193 133 pd frequ; +#X obj 87 265 clip 0 0.99; +#X obj 4 438 *~; +#X obj 64 407 +~ 2; +#X obj 42 352 delwrite~ \$0-grainbuffer 10000, f 16; +#X obj 64 427 vd~ \$0-grainbuffer; +#X obj 249 40 s \$0-delaytime; +#X obj 79 52 r \$0-delaytime; +#X obj 344 40 s \$0-feedback; +#X obj 87 234 r \$0-feedback; +#X obj 434 40 s \$0-rarefaction; +#X obj 202 285 r \$0-rarefaction; +#X obj 549 40 s \$0-waveform; +#X obj 286 320 r \$0-waveform, f 38; +#X connect 0 0 28 1; +#X connect 1 0 19 0; +#X connect 1 0 28 0; +#X connect 2 0 1 1; +#X connect 3 0 6 0; +#X connect 4 0 3 0; +#X connect 4 0 7 1; +#X connect 4 0 13 1; +#X connect 5 0 0 0; +#X connect 6 0 2 1; +#X connect 7 0 29 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 12 0 9 1; +#X connect 13 0 2 0; +#X connect 14 0 15 0; +#X connect 15 0 17 0; +#X connect 16 0 14 0; +#X connect 17 0 13 0; +#X connect 18 0 30 0; +#X connect 20 0 38 0; +#X connect 21 0 36 0; +#X connect 22 0 34 0; +#X connect 23 0 26 0; +#X connect 24 0 32 0; +#X connect 25 0 6 0; +#X connect 26 0 4 0; +#X connect 27 0 5 0; +#X connect 28 0 30 0; +#X connect 29 0 31 0; +#X connect 31 0 1 0; +#X connect 33 0 12 0; +#X connect 33 0 10 1; +#X connect 35 0 27 0; +#X connect 37 0 17 1; +#X connect 39 0 25 0; +#X restore 32 184 pd grain~ ____________________________________; +#X obj 140 132 clip 0 10000; +#X obj 32 6 hoa.in~ 1; +#X obj 32 475 hoa.out~; +#X obj 439 151 f \$3; +#X obj 472 151 f \$4; +#X obj 305 155 symbol \$6; +#X obj 180 249 hoa.in 1; +#X obj 86 28 hoa.in 1; +#X obj 424 18 hoa.in 1; +#X connect 0 0 1 0; +#X connect 1 0 10 0; +#X connect 2 0 3 0; +#X connect 3 0 41 0; +#X connect 3 1 42 0; +#X connect 4 0 5 0; +#X connect 5 0 8 1; +#X connect 6 0 4 1; +#X connect 7 0 6 0; +#X connect 8 0 9 0; +#X connect 10 0 8 0; +#X connect 11 0 40 0; +#X connect 12 0 17 0; +#X connect 13 0 20 1; +#X connect 14 0 15 0; +#X connect 14 1 15 0; +#X connect 14 2 19 0; +#X connect 15 0 18 0; +#X connect 15 1 16 0; +#X connect 16 0 13 0; +#X connect 17 0 14 0; +#X connect 18 0 20 0; +#X connect 19 0 15 0; +#X connect 20 0 11 1; +#X connect 21 0 40 0; +#X connect 22 0 24 1; +#X connect 22 0 21 1; +#X connect 23 0 24 0; +#X connect 24 0 25 1; +#X connect 25 0 11 0; +#X connect 26 0 27 0; +#X connect 27 0 22 0; +#X connect 28 0 35 0; +#X connect 28 1 38 0; +#X connect 28 2 30 0; +#X connect 28 3 32 0; +#X connect 29 0 37 3; +#X connect 30 0 29 0; +#X connect 31 0 37 4; +#X connect 32 0 31 0; +#X connect 33 0 43 0; +#X connect 34 0 37 1; +#X connect 35 0 34 0; +#X connect 36 0 37 2; +#X connect 37 0 21 0; +#X connect 38 0 36 0; +#X connect 39 0 37 0; +#X connect 39 0 25 0; +#X connect 41 0 4 0; +#X connect 42 0 7 0; +#X connect 43 0 37 5; +#X connect 44 0 14 0; +#X connect 45 0 28 0; +#X connect 46 0 0 0; diff --git a/hoa/hoa.2d.wider~-help.pd b/hoa/hoa.2d.wider~-help.pd new file mode 100644 index 0000000..30bbb4e --- /dev/null +++ b/hoa/hoa.2d.wider~-help.pd @@ -0,0 +1,230 @@ +#N struct 1082-t-scope float x array bufr 1082-t-scope-value-r array +bufg 1082-t-scope-value-g; +#N struct 1082-t-scope-value-r float x float y; +#N struct 1082-t-scope-value-g float x float y; +#N canvas 150 41 721 433 10; +#X msg 219 338 \; pd dsp 1; +#X msg 219 382 \; pd dsp 0; +#X obj 313 81 hoa.2d.encoder~ 7, f 26; +#X obj 313 395 hoa.dac~ 1:16, f 28; +#X obj 313 365 hoa.2d.decoder~ 7 regular 16; +#X obj 137 399 hoa-help; +#X obj 11 373 text define -k \$0-scope-attrs; +#A set gain 130 \; interval 150 \;; +#X obj 6 6 cnv 15 200 20 empty empty hoa.2d.wider~ 4 10 0 14 -233017 +-66577 0; +#X obj 313 180 hoa.2d.wider~ 7, f 28; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 1082-t-scope 0 \; 0.0982248 0 \; 0.0981643 0.00344714 \; +0.0979829 0.00689004 \; 0.0976807 0.0103244 \; 0.0972582 0.0137461 +\; 0.0967159 0.0171509 \; 0.0960544 0.0205345 \; 0.0952746 0.0238928 +\; 0.0943774 0.0272217 \; 0.093364 0.0305171 \; 0.0922355 0.0337748 +\; 0.0909933 0.036991 \; 0.0896391 0.0401616 \; 0.0881745 0.0432826 +\; 0.0866012 0.0463504 \; 0.0849212 0.0493611 \; 0.0831366 0.0523109 +\; 0.0812495 0.0551963 \; 0.0792624 0.0580137 \; 0.0771776 0.0607597 +\; 0.0749977 0.0634307 \; 0.0727255 0.0660237 \; 0.0703636 0.0685353 +\; 0.0679151 0.0709624 \; 0.0653829 0.0733021 \; 0.0627701 0.0755515 +\; 0.06008 0.0777079 \; 0.0573159 0.0797685 \; 0.0544811 0.0817308 +\; 0.0515793 0.0835925 \; 0.0486139 0.0853511 \; 0.0455886 0.0870046 +\; 0.0425071 0.0885509 \; 0.0393733 0.0899881 \; 0.036191 0.0913145 +\; 0.032964 0.0925283 \; 0.0296965 0.0936282 \; 0.0263924 0.0946127 +\; 0.0230558 0.0954806 \; 0.0196907 0.096231 \; 0.0163014 0.0968627 +\; 0.012892 0.0973751 \; 0.00946677 0.0977676 \; 0.00602984 0.0980396 +\; 0.00258548 0.0981908 \; -0.000862068 0.0982211 \; -0.00430855 0.0981303 +\; -0.00774973 0.0979187 \; -0.0111813 0.0975864 \; -0.0145992 0.0971339 +\; -0.017999 0.0965617 \; -0.0213767 0.0958705 \; -0.0247281 0.0950613 +\; -0.028049 0.0941349 \; -0.0313353 0.0930925 \; -0.034583 0.0919355 +\; -0.0377881 0.0906652 \; -0.0409467 0.0892832 \; -0.0440548 0.0877912 +\; -0.0471087 0.086191 \; -0.0501045 0.0844847 \; -0.0530386 0.0826743 +\; -0.0559073 0.080762 \; -0.0587071 0.0787502 \; -0.0614347 0.0766414 +\; -0.0640865 0.0744382 \; -0.0666594 0.0721432 \; -0.0691502 0.0697594 +\; -0.0715557 0.0672897 \; -0.0738731 0.064737 \; -0.0760995 0.0621046 +\; -0.0782322 0.0593957 \; -0.0802685 0.0566136 \; -0.0822058 0.0537617 +\; -0.0840419 0.0508436 \; -0.0857745 0.0478629 \; -0.0874014 0.0448232 +\; -0.0889206 0.0417283 \; -0.0903302 0.038582 \; -0.0916286 0.0353881 +\; -0.0928141 0.0321507 \; -0.0938852 0.0288736 \; -0.0948407 0.025561 +\; -0.0956793 0.0222169 \; -0.0964001 0.0188454 \; -0.0970021 0.0154507 +\; -0.0974845 0.0120369 \; -0.0978469 0.00860835 \; -0.0980887 0.00516916 +\; -0.0982097 0.00172361 \; -0.0982097 -0.00172407 \; -0.0980887 -0.0051696 +\; -0.0978469 -0.00860881 \; -0.0974845 -0.0120374 \; -0.097002 -0.0154511 +\; -0.0964 -0.0188458 \; -0.0956792 -0.0222173 \; -0.0948406 -0.0255614 +\; -0.0938851 -0.0288741 \; -0.0928139 -0.0321511 \; -0.0916284 -0.0353885 +\; -0.0903301 -0.0385824 \; -0.0889204 -0.0417287 \; -0.0874012 -0.0448236 +\; -0.0857743 -0.0478633 \; -0.0840417 -0.050844 \; -0.0822056 -0.0537621 +\; -0.0802682 -0.0566139 \; -0.0782319 -0.059396 \; -0.0760993 -0.0621049 +\; -0.0738728 -0.0647373 \; -0.0715554 -0.06729 \; -0.0691498 -0.0697597 +\; -0.0666591 -0.0721435 \; -0.0640862 -0.0744384 \; -0.0614343 -0.0766416 +\; -0.0587068 -0.0787505 \; -0.0559069 -0.0807622 \; -0.0530382 -0.0826745 +\; -0.0501041 -0.0844849 \; -0.0471083 -0.0861913 \; -0.0440544 -0.0877914 +\; -0.0409463 -0.0892834 \; -0.0377877 -0.0906654 \; -0.0345826 -0.0919356 +\; -0.0313349 -0.0930927 \; -0.0280486 -0.094135 \; -0.0247276 -0.0950614 +\; -0.0213763 -0.0958706 \; -0.0179986 -0.0965618 \; -0.0145987 -0.0971339 +\; -0.0111809 -0.0975864 \; -0.00774926 -0.0979187 \; -0.00430811 -0.0981303 +\; -0.000861606 -0.0982211 \; 0.00258592 -0.0981908 \; 0.00603025 -0.0980396 +\; 0.0094672 -0.0977675 \; 0.0128924 -0.0973751 \; 0.0163018 -0.0968626 +\; 0.0196911 -0.0962309 \; 0.0230561 -0.0954805 \; 0.0263928 -0.0946126 +\; 0.0296969 -0.0936281 \; 0.0329645 -0.0925282 \; 0.0361913 -0.0913143 +\; 0.0393737 -0.089988 \; 0.0425075 -0.0885507 \; 0.045589 -0.0870044 +\; 0.0486142 -0.0853509 \; 0.0515797 -0.0835922 \; 0.0544815 -0.0817306 +\; 0.0573162 -0.0797683 \; 0.0600803 -0.0777076 \; 0.0627704 -0.0755513 +\; 0.0653832 -0.0733018 \; 0.0679154 -0.0709621 \; 0.0703639 -0.0685349 +\; 0.0727258 -0.0660233 \; 0.0749981 -0.0634304 \; 0.0771779 -0.0607593 +\; 0.0792627 -0.0580134 \; 0.0812498 -0.055196 \; 0.0831368 -0.0523106 +\; 0.0849214 -0.0493607 \; 0.0866014 -0.04635 \; 0.0881746 -0.0432823 +\; 0.0896393 -0.0401612 \; 0.0909935 -0.0369906 \; 0.0922356 -0.0337745 +\; 0.0933641 -0.0305167 \; 0.0943775 -0.0272213 \; 0.0952747 -0.0238924 +\; 0.0960545 -0.0205341 \; 0.096716 -0.0171505 \; 0.0972583 -0.0137457 +\; 0.0976808 -0.010324 \; 0.0979829 -0.00688961 \; 0.0981644 -0.00344668 +\; 0.0982248 4.38709e-07 \; \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 -0 \; \;; +#X coords -1 -1 1 1 164 165 2 100 100; +#X restore 512 217 pd \$0-scope; +#X obj 313 220 hoa.2d.process~ 7 hoa.2d.scope~ harmonics \$0-scope +\$0-scope-attrs, f 28; +#X text 558 164 The factor of widening (between 0 and 1), f 23; +#X text 6 30 hoa.2d.wider~ simulates fractional orders of decomposition +to reduce the precision of the sound field. When the factor of widening +is 0 sound field \, only the first hamonic Y[0 \, 0] remains and the +sound field is omni directional. By increasing the factor of widening +toward 1 \, the other harmonics appears in a logarithmic way \, increasing +the precision of the sound field that becomes more and more directional +until all the harmonics appeared. The weight of the harmonics are defined +by:, f 46; +#X text 6 198 with N the order of decomposition \, l the degree \, +m the azimuthal order and x the factor of widening., f 46; +#X text 6 184 W[l \, m](x) = x^l((1-x)(N-l)+1), f 46; +#X obj 313 54 misc//hoa.hgain~; +#X text 6 248 The (new) algorithm has the advantage to preserve a constant +amplitude for the sound field whatever the factor of widening., f +46; +#N canvas 0 22 450 300 source~ 0; +#X obj 29 203 *~, f 19; +#X obj 29 169 *~, f 9; +#X obj 80 140 *~, f 10; +#X obj 29 225 outlet~; +#X obj 29 16 phasor~ 234; +#X obj 29 37 lop~ 800; +#X obj 80 57 phasor~ 460; +#X obj 80 78 lop~ 1200; +#X obj 137 119 max~ 0.5; +#X obj 140 157 osc~ 7; +#X obj 140 179 max~ 0.15; +#X obj 137 97 osc~ 4; +#X connect 0 0 3 0; +#X connect 1 0 0 0; +#X connect 2 0 1 1; +#X connect 4 0 5 0; +#X connect 5 0 1 0; +#X connect 6 0 7 0; +#X connect 7 0 2 0; +#X connect 8 0 2 1; +#X connect 9 0 10 0; +#X connect 10 0 0 1; +#X connect 11 0 8 0; +#X restore 313 22 pd source~; +#N canvas 0 22 450 300 init 0; +#X obj 21 37 loadbang; +#X msg 21 59 0.666; +#X obj 21 81 s \$0-wfac; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 11 347 pd init; +#X obj 10 399 misc/hoa.credits; +#X obj 499 178 misc/hoa.number~; +#X obj 478 81 osc~ 0.025; +#X obj 466 55 hoa.pi~ 2; +#X obj 466 27 phasor~ 0.2; +#X obj 478 126 +~ 0.5; +#X obj 478 148 clip~ 0 1; +#X obj 478 103 *~ 0.75; +#X connect 2 0 8 0; +#X connect 2 1 8 1; +#X connect 2 2 8 2; +#X connect 2 3 8 3; +#X connect 2 4 8 4; +#X connect 2 5 8 5; +#X connect 2 6 8 6; +#X connect 2 7 8 7; +#X connect 2 8 8 8; +#X connect 2 9 8 9; +#X connect 2 10 8 10; +#X connect 2 11 8 11; +#X connect 2 12 8 12; +#X connect 2 13 8 13; +#X connect 2 14 8 14; +#X connect 4 0 3 0; +#X connect 4 1 3 1; +#X connect 4 2 3 2; +#X connect 4 3 3 3; +#X connect 4 4 3 4; +#X connect 4 5 3 5; +#X connect 4 6 3 6; +#X connect 4 7 3 7; +#X connect 4 8 3 8; +#X connect 4 9 3 9; +#X connect 4 10 3 10; +#X connect 4 11 3 11; +#X connect 4 12 3 12; +#X connect 4 13 3 13; +#X connect 4 14 3 14; +#X connect 4 15 3 15; +#X connect 8 0 10 0; +#X connect 8 0 4 0; +#X connect 8 1 10 1; +#X connect 8 1 4 1; +#X connect 8 2 10 2; +#X connect 8 2 4 2; +#X connect 8 3 10 3; +#X connect 8 3 4 3; +#X connect 8 4 10 4; +#X connect 8 4 4 4; +#X connect 8 5 10 5; +#X connect 8 5 4 5; +#X connect 8 6 10 6; +#X connect 8 6 4 6; +#X connect 8 7 10 7; +#X connect 8 7 4 7; +#X connect 8 8 10 8; +#X connect 8 8 4 8; +#X connect 8 9 10 9; +#X connect 8 9 4 9; +#X connect 8 10 10 10; +#X connect 8 10 4 10; +#X connect 8 11 10 11; +#X connect 8 11 4 11; +#X connect 8 12 10 12; +#X connect 8 12 4 12; +#X connect 8 13 10 13; +#X connect 8 13 4 13; +#X connect 8 14 10 14; +#X connect 8 14 4 14; +#X connect 15 0 2 0; +#X connect 17 0 15 0; +#X connect 21 0 26 0; +#X connect 22 0 2 1; +#X connect 23 0 22 0; +#X connect 24 0 25 0; +#X connect 25 0 8 15; +#X connect 25 0 20 0; +#X connect 26 0 24 0; +#X coords 0 433 1 432 100 60 0; diff --git a/Package/Hoa/helps/hoa.3d.decoder~-help.pd b/hoa/hoa.3d.decoder~-help.pd similarity index 98% rename from Package/Hoa/helps/hoa.3d.decoder~-help.pd rename to hoa/hoa.3d.decoder~-help.pd index cdf3dcf..80defa3 100644 --- a/Package/Hoa/helps/hoa.3d.decoder~-help.pd +++ b/hoa/hoa.3d.decoder~-help.pd @@ -78,7 +78,7 @@ have to try several decomposition orders with "inPhase" optimization to find the best rendering.; #X obj 495 323 c.loadmess; #X msg 919 255 crop \$1; -#X obj 919 228 c.number @size 53 17 @fontname "Helvetica" @fontweight +#X obj 919 228 nbx @size 53 17 @fontname "Helvetica" @fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" @presetname "(null)" @min 0 @max 512 @minmax 0 512 @decimal 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; diff --git a/hoa/hoa.3d.encoder~-help.pd b/hoa/hoa.3d.encoder~-help.pd new file mode 100644 index 0000000..858ba98 --- /dev/null +++ b/hoa/hoa.3d.encoder~-help.pd @@ -0,0 +1,271 @@ +#N struct 1259-t-scope float x array bufr 1259-t-scope-value-r array +bufg 1259-t-scope-value-g; +#N struct 1259-t-scope-value-r float x float y; +#N struct 1259-t-scope-value-g float x float y; +#N canvas 284 114 838 581 10; +#X msg 201 467 \; pd dsp 1; +#X msg 201 502 \; pd dsp 0; +#X obj 386 185 hoa.3d.encoder~ 3, f 36; +#X obj 6 -11 cnv 15 200 20 empty empty hoa.3d.encoder~ 4 10 0 14 -233017 +-66577 0; +#X obj 8 509 hoa-help; +#X obj 8 487 misc/hoa.credits; +#X obj 386 40 misc//hoa.hgain~; +#X text 391 58 The argument is the order of decomposition N., f 25 +; +#N canvas 0 22 450 300 source~ 0; +#X obj 53 188 osc~; +#X obj 53 142 samphold~, f 11; +#X obj 116 117 phasor~ 8; +#X obj 53 117 phasor~ 7; +#X obj 53 164 *~ 500, f 23; +#X obj 53 210 outlet~; +#X obj 188 141 + 500; +#X obj 53 94 + 7; +#X obj 188 119 random 500; +#X obj 53 72 random 14; +#X obj 116 94 + 3; +#X obj 116 72 random 21; +#X obj 53 44 bang; +#X obj 53 18 loadbang; +#X obj 109 18 inlet; +#X connect 0 0 5 0; +#X connect 1 0 4 0; +#X connect 2 0 1 1; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X connect 8 0 6 0; +#X connect 9 0 7 0; +#X connect 10 0 2 0; +#X connect 11 0 10 0; +#X connect 12 0 9 0; +#X connect 12 0 11 0; +#X connect 12 0 8 0; +#X connect 13 0 12 0; +#X connect 14 0 12 0; +#X restore 386 16 pd source~; +#X obj 386 -5 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 492 117 hoa.pi~ 2; +#X obj 505 142 misc//hoa.number~; +#X text 502 157 azimuth θ in radian (-π & π), f 16; +#X obj 386 363 hoa.3d.optim~ 3 inPhase, f 36; +#X obj 386 386 hoa.3d.decoder~ 3 regular 20, f 36; +#X obj 386 514 hoa.dac~ 1:20, f 36; +#X obj 612 142 misc//hoa.number~; +#X text 609 157 elevation φ in radian (-π/2 & π/2), f 19; +#X text 7 11 hoa.3d.encoder~ generates the signal of the (N+1)^2 spherical +harmonics of a sound source depending on the order of decomposition +N \, an azimuth θ and an elevation φ.; +#X text 30 240 Y[l \, m](θ) = sin(|m|*θ), f 55; +#X text 18 226 if m < 0, f 57; +#X text 18 254 else if m >= 0, f 57; +#X text 30 268 Y[l \, m](θ) = cos(|m|*θ), f 55; +#X text 6 59 Each generated signal of the sound field carries the source +signal weighted by its associated harmonic Y defined by; +#X text 18 133 P'[0 \, 0](x) = 1, f 57; +#X text 18 147 P'[l \, l](x) = −(2l+1)√(1−x^2)P[l \, l](x), +f 57; +#X text 18 161 P'[l \, l-1](x) = x(2l+1)P[l \, l](x), f 57; +#X text 18 175 P'[l \, m](x) = (x(2l+1)P[l-1 \, |m|](x)−(l+|m|)P[l−2 +\, |m|](x)) / (l−|m|+1), f 57; +#X text 18 96 Y[l \, m](θ \, φ) = P'[l \, |m|](cos(φ)) * e^i|m|θ +* k[l \, m]., f 57; +#X text 6 119 with P' is the associated Legendre polynomial defined +by:, f 59; +#X text 6 212 e^i the complex exponential that can be expressed by +, f 59; +#X text 6 292 k[l \, m] the normalization (SN3D) defined by, f 59 +; +#X text 6 331 with l the degree \, m the azimuthal order \, θ the +azimuth and φ the elevation.; +#X text 18 306 k[l \, m] = sqrt((l - |m|)! / (l + |m|)!) * sqrt(2) +, f 57; +#X text 6 371 The signal of the spherical harmonics are normalized +between -1 and 1 \, even for the first omnidirectional harmonic Y[0 +\, 0]. The harmonics Y[l \, m] are ordered following the ACN:; +#X text 6 424 Y[0 \, Ø] \, Y[1 \, -1] \, Y[1 \, 0] \, Y[1 \, 1] \, +Y[2 \, -2] \, Y[2 \, -1] \, ... \, Y[N \, -N] \, Y[N \, -N+1] \, ... +\, Y[N \, N-1] \, Y[N \, N]; +#X obj 8 465 text define -k \$0-scope-attrs; +#A set gain 118 \; interval 150 \;; +#N canvas 0 22 450 300 \$0-scope 0; +#X scalar 1259-t-scope 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; +0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 +\; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 0 \; 0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 +0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; -0 0 \; +-0 0 \; -0 0 \; -0 0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; +-0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 +\; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 -0 \; -0 +-0 \; -0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; +0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 \; 0 -0 +\; 0 -0 \; 0 -0 \; 0 -0 \; 0 0 \; \; 0.863659 0 \; 0.863127 0.0303096 +\; 0.861532 0.0605819 \; 0.858875 0.0907795 \; 0.85516 0.120865 \; +0.850392 0.150802 \; 0.844576 0.180553 \; 0.837719 0.210082 \; 0.82983 +0.239352 \; 0.820919 0.268327 \; 0.810997 0.296971 \; 0.800075 0.32525 +\; 0.788168 0.353128 \; 0.77529 0.38057 \; 0.761456 0.407544 \; 0.746684 +0.434016 \; 0.730993 0.459953 \; 0.714401 0.485324 \; 0.696929 0.510096 +\; 0.678598 0.53424 \; 0.659431 0.557726 \; 0.639452 0.580525 \; 0.618685 +0.602608 \; 0.597155 0.62395 \; 0.57489 0.644522 \; 0.551917 0.6643 +\; 0.528264 0.68326 \; 0.50396 0.701379 \; 0.479035 0.718633 \; 0.45352 +0.735002 \; 0.427446 0.750465 \; 0.400846 0.765004 \; 0.373751 0.7786 +\; 0.346197 0.791237 \; 0.318215 0.802899 \; 0.289842 0.813572 \; 0.261112 +0.823243 \; 0.23206 0.831899 \; 0.202722 0.839531 \; 0.173134 0.846128 +\; 0.143333 0.851683 \; 0.113355 0.856188 \; 0.0832382 0.859639 \; +0.0530184 0.862031 \; 0.0227333 0.86336 \; -0.00757989 0.863626 \; +-0.0378837 0.862828 \; -0.0681408 0.860967 \; -0.0983139 0.858045 \; +-0.128366 0.854067 \; -0.15826 0.849036 \; -0.187959 0.842959 \; -0.217426 +0.835843 \; -0.246626 0.827698 \; -0.275521 0.818533 \; -0.304077 0.808359 +\; -0.332259 0.79719 \; -0.360031 0.785038 \; -0.38736 0.77192 \; -0.414211 +0.75785 \; -0.440553 0.742847 \; -0.466351 0.726928 \; -0.491575 0.710114 +\; -0.516193 0.692425 \; -0.540175 0.673883 \; -0.563492 0.654511 \; +-0.586115 0.634332 \; -0.608015 0.613372 \; -0.629166 0.591656 \; -0.649543 +0.569212 \; -0.669119 0.546066 \; -0.68787 0.522247 \; -0.705775 0.497785 +\; -0.722809 0.472709 \; -0.738954 0.447052 \; -0.754187 0.420843 \; +-0.768492 0.394116 \; -0.78185 0.366904 \; -0.794245 0.339239 \; -0.805661 +0.311157 \; -0.816084 0.282691 \; -0.825502 0.253877 \; -0.833904 0.22475 +\; -0.841277 0.195346 \; -0.847615 0.165701 \; -0.852908 0.135853 \; +-0.85715 0.105837 \; -0.860336 0.0756904 \; -0.862463 0.0454508 \; +-0.863526 0.0151551 \; -0.863526 -0.0151592 \; -0.862462 -0.0454546 +\; -0.860336 -0.0756945 \; -0.85715 -0.105841 \; -0.852907 -0.135857 +\; -0.847614 -0.165705 \; -0.841277 -0.19535 \; -0.833903 -0.224753 +\; -0.825501 -0.25388 \; -0.816083 -0.282694 \; -0.805659 -0.31116 +\; -0.794243 -0.339243 \; -0.781848 -0.366907 \; -0.76849 -0.39412 +\; -0.754186 -0.420846 \; -0.738952 -0.447055 \; -0.722807 -0.472713 +\; -0.705772 -0.497788 \; -0.687868 -0.52225 \; -0.669116 -0.546069 +\; -0.64954 -0.569215 \; -0.629164 -0.591659 \; -0.608012 -0.613375 +\; -0.586112 -0.634335 \; -0.563489 -0.654513 \; -0.540172 -0.673885 +\; -0.51619 -0.692427 \; -0.491572 -0.710116 \; -0.466348 -0.72693 +\; -0.440549 -0.742849 \; -0.414208 -0.757852 \; -0.387356 -0.771921 +\; -0.360028 -0.78504 \; -0.332255 -0.797191 \; -0.304074 -0.80836 +\; -0.275517 -0.818534 \; -0.246622 -0.827699 \; -0.217422 -0.835844 +\; -0.187955 -0.842959 \; -0.158256 -0.849036 \; -0.128362 -0.854067 +\; -0.0983098 -0.858046 \; -0.0681368 -0.860968 \; -0.0378798 -0.862828 +\; -0.00757582 -0.863626 \; 0.0227371 -0.86336 \; 0.053022 -0.86203 +\; 0.0832421 -0.859639 \; 0.113359 -0.856188 \; 0.143337 -0.851682 +\; 0.173138 -0.846127 \; 0.202725 -0.83953 \; 0.232063 -0.831898 \; +0.261115 -0.823241 \; 0.289846 -0.813571 \; 0.318219 -0.802898 \; 0.3462 +-0.791235 \; 0.373755 -0.778598 \; 0.400849 -0.765002 \; 0.427449 -0.750463 +\; 0.453523 -0.734999 \; 0.479038 -0.718631 \; 0.503963 -0.701377 \; +0.528267 -0.683258 \; 0.55192 -0.664298 \; 0.574893 -0.644519 \; 0.597158 +-0.623947 \; 0.618688 -0.602606 \; 0.639454 -0.580522 \; 0.659434 -0.557723 +\; 0.6786 -0.534237 \; 0.696931 -0.510093 \; 0.714403 -0.48532 \; 0.730995 +-0.45995 \; 0.746687 -0.434013 \; 0.761458 -0.407541 \; 0.775291 -0.380567 +\; 0.788169 -0.353124 \; 0.800077 -0.325246 \; 0.810998 -0.296968 \; +0.82092 -0.268323 \; 0.829831 -0.239348 \; 0.83772 -0.210078 \; 0.844576 +-0.18055 \; 0.850393 -0.150798 \; 0.855161 -0.120862 \; 0.858876 -0.0907756 +\; 0.861532 -0.0605781 \; 0.863128 -0.0303056 \; 0.863659 3.85743e-06 +\; \;; +#X coords -1 -1 1 1 165 165 2 100 100; +#X restore 617 199 pd \$0-scope; +#X obj 386 212 hoa.3d.process~ 3 hoa.3d.scope~ harmonics \$0-scope +\$0-scope-attrs, f 36; +#X obj 492 93 phasor~ 0.15; +#X obj 599 117 hoa.pi~ 0.5; +#N canvas 0 22 450 300 tri~ 0; +#X obj 25 75 -~ 0.5; +#X obj 25 97 abs~; +#X obj 25 203 outlet~; +#X obj 25 51 phasor~ 0.1; +#X obj 25 119 *~ 6; +#X obj 25 141 -~ 1.5; +#X obj 25 163 clip~ -1 1; +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 2 0; +#X restore 599 92 pd tri~; +#X connect 2 0 13 0; +#X connect 2 0 38 0; +#X connect 2 1 13 1; +#X connect 2 1 38 1; +#X connect 2 2 13 2; +#X connect 2 2 38 2; +#X connect 2 3 13 3; +#X connect 2 3 38 3; +#X connect 2 4 13 4; +#X connect 2 4 38 4; +#X connect 2 5 13 5; +#X connect 2 5 38 5; +#X connect 2 6 13 6; +#X connect 2 6 38 6; +#X connect 2 7 13 7; +#X connect 2 7 38 7; +#X connect 2 8 13 8; +#X connect 2 8 38 8; +#X connect 2 9 13 9; +#X connect 2 9 38 9; +#X connect 2 10 13 10; +#X connect 2 10 38 10; +#X connect 2 11 13 11; +#X connect 2 11 38 11; +#X connect 2 12 13 12; +#X connect 2 12 38 12; +#X connect 2 13 13 13; +#X connect 2 13 38 13; +#X connect 2 14 13 14; +#X connect 2 14 38 14; +#X connect 2 15 13 15; +#X connect 2 15 38 15; +#X connect 6 0 2 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 10 0 11 0; +#X connect 10 0 2 1; +#X connect 13 0 14 0; +#X connect 13 1 14 1; +#X connect 13 2 14 2; +#X connect 13 3 14 3; +#X connect 13 4 14 4; +#X connect 13 5 14 5; +#X connect 13 6 14 6; +#X connect 13 7 14 7; +#X connect 13 8 14 8; +#X connect 13 9 14 9; +#X connect 13 10 14 10; +#X connect 13 11 14 11; +#X connect 13 12 14 12; +#X connect 13 13 14 13; +#X connect 13 14 14 14; +#X connect 13 15 14 15; +#X connect 14 0 15 0; +#X connect 14 1 15 1; +#X connect 14 2 15 2; +#X connect 14 3 15 3; +#X connect 14 4 15 4; +#X connect 14 5 15 5; +#X connect 14 6 15 6; +#X connect 14 7 15 7; +#X connect 14 8 15 8; +#X connect 14 9 15 9; +#X connect 14 10 15 10; +#X connect 14 11 15 11; +#X connect 14 12 15 12; +#X connect 14 13 15 13; +#X connect 14 14 15 14; +#X connect 14 15 15 15; +#X connect 14 16 15 16; +#X connect 14 17 15 17; +#X connect 14 18 15 18; +#X connect 14 19 15 19; +#X connect 39 0 10 0; +#X connect 40 0 16 0; +#X connect 40 0 2 2; +#X connect 41 0 40 0; +#X coords 0 581 1 580 100 60 0; diff --git a/hoa/hoa.3d.optim~-help.pd b/hoa/hoa.3d.optim~-help.pd new file mode 100644 index 0000000..1409f03 --- /dev/null +++ b/hoa/hoa.3d.optim~-help.pd @@ -0,0 +1,99 @@ +#N canvas 101 76 570 676 10; +#X declare -path ..; +#X obj 320 100 phasor~ -0.3; +#X msg 455 211 \; pd dsp 1; +#X msg 455 249 \; pd dsp 0; +#X text 6 196 basic has no effect.; +#X text 6 225 confined to the center of the; +#X obj 214 125 hoa.soundcoat; +#X text 5 254 inPhase is used when audience; +#X obj 481 85 hoa.connect; +#X obj 481 65 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 9 302 Important : the optimization; +#X text 9 312 can be changed in real time; +#X text 9 322 but this is not a good practice.; +#X text 9 332 You should only use this; +#X text 9 343 option for your tests.; +#X obj 13 21 c.patcherinfos; +#X obj 18 4 loadbang; +#X obj 3 4 hoa.help.header; +#X obj 110 606 hoa.help.pub; +#X obj 414 4 hoa.help.also; +#X obj 214 153 hoa.3d.encoder~ 3 ------------------; +#X obj 215 526 hoa.3d.decoder~ 3 regular 20 -------; +#X obj 215 574 hoa.dac~ 1:20 ----------------------; +#X text 4 48 hoa.3d.optim~ weights the spherical harmonics signals +depending on the optimization.; +#X text 6 235 the sphere.; +#X obj 427 100 sig~ 0; +#X obj 427 125 hoa.pi~ 1; +#X obj 320 125 hoa.pi~ 2; +#X text 5 264 coverzs all the sphere.; +#X text 6 215 maxRe is used when audience is; +#X obj 214 192 hoa.3d.optim~ 3 maxre, f 36; +#X obj 393 314 hoa.3d.optim~ 3 maxre; +#X obj 12 397 declare -path ..; +#X obj 12 420 hoa.credits; +#X obj 92 420 hoa-help; +#X connect 0 0 26 1; +#X connect 5 0 19 0; +#X connect 8 0 7 0; +#X connect 14 0 16 0; +#X connect 15 0 14 0; +#X connect 19 0 29 0; +#X connect 19 1 29 1; +#X connect 19 2 29 2; +#X connect 19 3 29 3; +#X connect 19 4 29 4; +#X connect 19 5 29 5; +#X connect 19 6 29 6; +#X connect 19 7 29 7; +#X connect 19 8 29 8; +#X connect 19 9 29 9; +#X connect 19 10 29 10; +#X connect 19 11 29 11; +#X connect 19 12 29 12; +#X connect 19 13 29 13; +#X connect 19 14 29 14; +#X connect 19 15 29 15; +#X connect 20 0 21 0; +#X connect 20 1 21 1; +#X connect 20 2 21 2; +#X connect 20 3 21 3; +#X connect 20 4 21 4; +#X connect 20 5 21 5; +#X connect 20 6 21 6; +#X connect 20 7 21 7; +#X connect 20 8 21 8; +#X connect 20 9 21 9; +#X connect 20 10 21 10; +#X connect 20 11 21 11; +#X connect 20 12 21 12; +#X connect 20 13 21 13; +#X connect 20 14 21 14; +#X connect 20 15 21 15; +#X connect 20 16 21 16; +#X connect 20 17 21 17; +#X connect 20 18 21 18; +#X connect 20 19 21 19; +#X connect 24 0 25 0; +#X connect 25 0 19 2; +#X connect 26 0 19 1; +#X connect 29 0 20 0; +#X connect 29 1 20 1; +#X connect 29 2 20 2; +#X connect 29 3 20 3; +#X connect 29 4 20 4; +#X connect 29 5 20 5; +#X connect 29 6 20 6; +#X connect 29 7 20 7; +#X connect 29 8 20 8; +#X connect 29 9 20 9; +#X connect 29 10 20 10; +#X connect 29 11 20 11; +#X connect 29 12 20 12; +#X connect 29 13 20 13; +#X connect 29 14 20 14; +#X connect 29 15 20 15; +#X coords 0 676 1 675 100 60 0; diff --git a/hoa/hoa.3d.process~-help.pd b/hoa/hoa.3d.process~-help.pd new file mode 100644 index 0000000..e59d20f --- /dev/null +++ b/hoa/hoa.3d.process~-help.pd @@ -0,0 +1,66 @@ +#N canvas 117 38 901 661 10; +#X declare -path ..; +#X obj 594 28 hoa.connect; +#X obj 594 7 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 15 152 2nd argument is the name of the patcher to instantiate. +; +#X text 15 102 1st argument is the order if you use hoa.process~ in +the circular harmonics domain or the number of channels if you use +it in the plane waves domain.; +#X text 15 272 Extra arguments and attributes are sent to object hoa.this.process~ +if there is one inside the patcher. You should look at the help.; +#X text 15 322 The number of inlets and outlets depends on the inlet +and outlet configuration of the patcher. You should look at the help. +; +#X text 15 372 Important: If you edit the patcher \, you have recreate +hoa.process~ to reflect the changes.; +#X text 12 47 hoa.process~ helps the creation of processing in the +circular or spherical harmonics and plane waves domains by instantiating +several instances of a patcher.; +#X text 15 172 3rd argument is the domain \, harmonics (default) or +planewaves. Note that if you use hoa.process~ in the harmonics domain +\, it instantiates 2 * order + 1 times (the number of harmonics in +2D) or (order + 1) * (order + 1) (the number of harmonics in 3D) the +partcher and if you use it in the plane waves domain \, it instanctiates +the patcher as many times as the number of channels.; +#X text 439 349 The hoa.process~ use of this patch is an example made +to show how it works. You would prefer to look at the real uses of +hoa.process~.; +#X text 435 50 Open; +#X text 435 70 Use open message to open a specific instance :; +#X msg 436 94 open 1; +#X msg 497 94 open all; +#X text 433 153 Double-click open the 1st planewave intance \, or the +harmonic 0 instance.; +#X text 435 190 Target; +#X text 435 210 Use target message to route the message to a specific +instance :; +#X msg 439 245 target 1; +#X msg 510 245 target -2; +#X msg 581 245 target all; +#X obj 776 224 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 12 424 declare -path ..; +#X obj 12 447 hoa.credits; +#X obj 92 447 hoa-help; +#X msg 745 249 open 1 -1; +#X obj 439 310 print outlet-1; +#X obj 754 310 print outlet-2; +#X obj 831 243 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 439 281 hoa.3d.process~ 3 misc//hoa.proc.harmo.ex harmonics +; +#X obj 436 123 hoa.3d.process~ 4 misc//hoa.proc.plwav.ex planewaves +; +#X connect 1 0 0 0; +#X connect 12 0 29 0; +#X connect 13 0 29 0; +#X connect 17 0 28 0; +#X connect 18 0 28 0; +#X connect 19 0 28 0; +#X connect 20 0 28 8; +#X connect 24 0 28 0; +#X connect 27 0 28 9; +#X connect 28 7 25 0; +#X connect 28 8 26 0; diff --git a/hoa/hoa.3d.scope~.pd b/hoa/hoa.3d.scope~.pd new file mode 100644 index 0000000..ba54dbe --- /dev/null +++ b/hoa/hoa.3d.scope~.pd @@ -0,0 +1,497 @@ +#N canvas 138 254 579 480 10; +#X obj 17 62 *~ 1; +#X obj 17 89 snapshot~; +#N canvas 680 62 567 623 omni 0; +#X obj 93 6 inlet; +#X obj 93 295 +, f 11; +#X obj 227 220 loadbang; +#X obj 227 242 f 1; +#X obj 93 378 pack f f, f 11; +#X obj 93 274 f; +#X obj 93 401 outlet, f 8; +#X obj 93 233 t b f, f 11; +#N canvas 0 22 450 300 loop.until 0; +#X obj 21 11 inlet; +#X obj 21 118 outlet; +#X obj 21 76 until; +#X obj 21 53 t f b, f 7; +#X obj 21 98 f 0, f 7; +#X obj 60 76 f 0; +#X obj 71 98 + 1, f 4; +#X obj 21 33 f 180; +#X connect 0 0 7 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 3 1 5 0; +#X connect 4 0 6 0; +#X connect 4 0 1 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X restore 93 207 pd loop.until; +#X obj 177 84 f 1; +#X obj 177 106 /, f 5; +#X obj 204 84 + 1; +#X obj 162 150 *; +#X obj 177 128 * 0.5; +#X obj 93 356 *; +#X obj 93 28 t b b f, f 12; +#X obj 177 11 loadbang; +#X obj 177 32 t b b; +#N canvas 706 161 449 458 nor 0; +#X obj 37 47 t f f; +#X obj 37 178 abs; +#X obj 177 178 abs; +#X obj 37 148 +; +#X obj 177 148 +; +#X obj 192 42 inlet; +#X obj 37 21 inlet; +#X obj 37 200 max, f 24; +#X obj 37 332 outlet; +#X obj 37 250 t b f; +#X obj 37 272 f 1; +#X obj 37 294 /, f 5; +#X obj 37 227 max 1; +#X obj 37 126 array max \$6-buffer-0; +#X obj 177 126 array min \$6-buffer-0; +#X connect 0 0 13 0; +#X connect 0 1 14 0; +#X connect 1 0 7 0; +#X connect 2 0 7 1; +#X connect 3 0 1 0; +#X connect 4 0 2 0; +#X connect 5 0 4 1; +#X connect 5 0 3 1; +#X connect 6 0 0 0; +#X connect 7 0 12 0; +#X connect 9 0 10 0; +#X connect 9 1 11 1; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 12 0 9 0; +#X connect 13 0 3 0; +#X connect 14 0 4 0; +#X restore 127 328 pd nor; +#X obj 166 264 array get \$6-buffer-0; +#X obj 204 58 f \$3; +#X connect 0 0 15 0; +#X connect 1 0 14 0; +#X connect 2 0 3 0; +#X connect 3 0 19 1; +#X connect 4 0 6 0; +#X connect 5 0 1 0; +#X connect 7 0 5 0; +#X connect 7 1 4 1; +#X connect 7 1 19 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 10 0 13 0; +#X connect 11 0 10 1; +#X connect 12 0 5 1; +#X connect 12 0 18 1; +#X connect 13 0 12 1; +#X connect 14 0 4 0; +#X connect 15 0 8 0; +#X connect 15 1 18 0; +#X connect 15 2 12 0; +#X connect 16 0 17 0; +#X connect 17 0 9 0; +#X connect 17 1 20 0; +#X connect 18 0 14 1; +#X connect 19 0 1 1; +#X connect 20 0 11 0; +#X restore 17 230 pd omni; +#N canvas 879 54 490 584 directional 0; +#X obj 112 232 * 6.28319; +#N canvas 645 210 240 219 e^imθ 0; +#X obj 54 29 loadbang; +#X obj 21 7 inlet; +#X obj 21 171 outlet; +#X obj 54 83 < 0; +#X obj 21 115 spigot; +#X obj 21 137 sin; +#X obj 109 83 > 0; +#X obj 76 115 spigot; +#X obj 76 137 cos; +#X obj 21 83 * \$4; +#X obj 54 54 f \$5; +#X connect 0 0 10 0; +#X connect 1 0 9 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 6 0 7 1; +#X connect 7 0 8 0; +#X connect 8 0 2 0; +#X connect 9 0 4 0; +#X connect 9 0 7 0; +#X connect 10 0 3 0; +#X connect 10 0 6 0; +#X restore 112 280 pd e^imθ; +#X obj 112 190 t f f, f 11; +#X obj 112 343 +, f 11; +#X obj 112 23 inlet; +#X obj 112 322 *; +#X obj 236 258 loadbang; +#X obj 236 280 f 1; +#X obj 112 302 *; +#X obj 40 200 f 1; +#X obj 40 222 /, f 5; +#X obj 67 200 + 1; +#X msg 247 173 const 0; +#X obj 112 119 t b f b, f 23; +#X obj 247 149 spigot 0; +#N canvas 717 127 450 300 loop.until 0; +#X obj 21 11 inlet; +#X obj 21 118 outlet; +#X obj 21 76 until; +#X obj 21 53 t f b, f 7; +#X obj 21 98 f 0, f 7; +#X obj 60 76 f 0; +#X obj 71 98 + 1, f 4; +#X obj 21 33 f 180; +#X connect 0 0 7 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 3 1 5 0; +#X connect 4 0 6 0; +#X connect 4 0 1 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 3 0; +#X restore 112 154 pd loop.until; +#X obj 292 31 loadbang; +#X obj 40 127 loadbang; +#X obj 40 148 t b b; +#X obj 292 53 f \$3; +#X obj 292 77 == \$5; +#X obj 67 178 f \$3; +#X obj 247 195 s \$6-buffer-0; +#X obj 175 302 array get \$6-buffer-0; +#X obj 112 377 array set \$6-buffer-0, f 22; +#X obj 112 210 / -179; +#X obj 112 254 - 1.57079; +#X obj 112 97 spigot 0; +#X obj 157 11 loadbang; +#X obj 157 77 == \$4; +#X obj 157 33 f \$5; +#X obj 157 55 abs; +#X connect 0 0 26 0; +#X connect 1 0 8 0; +#X connect 2 0 25 0; +#X connect 2 1 23 0; +#X connect 2 1 24 1; +#X connect 3 0 24 0; +#X connect 4 0 27 0; +#X connect 5 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 23 1; +#X connect 8 0 5 0; +#X connect 9 0 10 0; +#X connect 10 0 8 1; +#X connect 11 0 10 1; +#X connect 12 0 22 0; +#X connect 13 0 15 0; +#X connect 13 1 5 1; +#X connect 13 2 14 0; +#X connect 14 0 12 0; +#X connect 15 0 2 0; +#X connect 16 0 19 0; +#X connect 17 0 18 0; +#X connect 18 0 9 0; +#X connect 18 1 21 0; +#X connect 19 0 20 0; +#X connect 20 0 14 1; +#X connect 21 0 11 0; +#X connect 23 0 3 1; +#X connect 25 0 0 0; +#X connect 26 0 1 0; +#X connect 27 0 13 0; +#X connect 28 0 30 0; +#X connect 29 0 27 1; +#X connect 30 0 31 0; +#X connect 31 0 29 0; +#X restore 74 230 pd directional; +#N canvas 677 84 665 431 \$0-t-scope 0; +#X obj 6 8 struct \$0-t-scope float x array bufr \$0-t-scope-value-r +array bufg \$0-t-scope-value-g; +#X obj 8 242 drawcurve -x 0 1 0.81 0 0.5751 0.5751 0 0.81 -0.5751 0.5751 +-0.81 0 -0.5751 -0.5751 0 -0.81 0.5751 -0.5751 0.81 0; +#X obj 8 282 drawcurve -x 0 1 0.54 0 0.3834 0.3834 0 0.54 -0.3834 0.3834 +-0.54 0 -0.3834 -0.3834 0 -0.54 0.3834 -0.3834 0.54 0; +#X obj 8 322 drawcurve -x 0 1 0.27 0 0.1917 0.1917 0 0.27 -0.1917 0.1917 +-0.27 0 -0.1917 -0.1917 0 -0.27 0.1917 -0.1917 0.27 0; +#X obj 7 100 drawpolygon -x 0 1 1 0 0.24 0; +#X obj 7 120 drawpolygon -x 0 1 -1 0 -0.24 0; +#X obj 7 150 drawpolygon -x 0 1 0 1 0 0.24; +#X obj 7 170 drawpolygon -x 0 1 0 -1 0 -0.24; +#X obj 8 202 drawcurve -x 0 1 1.08 0 0.7668 0.7668 0 1.079 -0.7668 +0.7668 -1.079 0 -0.7668 -0.7668 0 -1.08 0.7668 -0.7668 1.08 0; +#X obj 7 53 plot bufr 900 1 0 0 0; +#X obj 7 73 plot bufg 9 1 0 0 0; +#X restore 211 8 pd \$0-t-scope; +#X obj 17 294 spigot, f 7; +#X obj 17 316 unpack f f; +#N canvas 65 248 568 128 \$0-t-scope-value-r 0; +#X obj 35 11 struct \$0-t-scope-value-r float x float y; +#X restore 211 28 pd \$0-t-scope-value-r; +#N canvas 65 248 568 128 \$0-t-scope-value-g 0; +#X obj 35 11 struct \$0-t-scope-value-g float x float y; +#X restore 211 48 pd \$0-t-scope-value-g; +#N canvas 893 112 450 300 timer 0; +#X obj 144 20 bang~; +#X obj 77 65 r pd; +#X obj 77 87 route dsp; +#X obj 77 199 metro 100; +#X obj 144 42 spigot 1; +#X obj 171 87 f 0; +#X obj 77 221 outlet; +#X obj 77 179 change; +#X obj 144 64 t b b; +#X obj 144 86 f 1; +#N canvas 802 203 450 300 get.interval 0; +#X obj 20 94 list split 1; +#X obj 54 119 outlet; +#X obj 20 4 inlet; +#X obj 20 26 symbol interval; +#X obj 20 50 text search \$7; +#X obj 20 72 text get \$7; +#X connect 0 1 1 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 0 0; +#X restore 128 178 pd get.interval; +#X obj 128 129 loadbang; +#X obj 128 151 delay 10; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 2 0 7 0; +#X connect 3 0 6 0; +#X connect 4 0 8 0; +#X connect 5 0 4 1; +#X connect 7 0 3 0; +#X connect 8 0 9 0; +#X connect 8 1 5 0; +#X connect 9 0 7 0; +#X connect 10 0 3 1; +#X connect 11 0 12 0; +#X connect 12 0 10 0; +#X restore 56 62 pd timer; +#N canvas 776 98 450 300 amplifier 0; +#X obj 75 23 loadbang; +#X obj 75 45 delay 10; +#N canvas 974 244 450 300 get.gain 0; +#X obj 20 94 list split 1; +#X obj 54 119 outlet; +#X obj 20 4 inlet; +#X obj 20 26 symbol gain; +#X obj 20 50 text search \$7; +#X obj 20 72 text get \$7; +#X connect 0 1 1 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 0 0; +#X restore 75 68 pd get.gain; +#X obj 75 91 dbtorms; +#X obj 75 113 + 1; +#X obj 75 135 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X restore 38 39 pd amplifier; +#N canvas 765 192 450 434 clear_and_add_t 0; +#X obj 145 290 pointer; +#X obj 34 314 append \$0-t-scope x; +#X msg 274 267 \; pd-\$1 clear; +#X msg 145 267 traverse pd-\$1 \, bang; +#X obj 34 219 f 0; +#X obj 34 197 t b b, f 19; +#X obj 145 243 t s s, f 22; +#X obj 34 342 t b b p, f 45; +#X obj 34 364 f 1; +#X obj 167 383 setsize \$0-t-scope bufr; +#X obj 167 404 setsize \$0-t-scope bufg; +#X obj 167 363 f 180; +#X obj 34 386 outlet; +#X obj 301 444 outlet; +#X obj 34 173 spigot 0, f 10; +#X obj 86 89 == 0; +#X obj 34 4 loadbang; +#X obj 34 26 delay 10; +#X obj 139 112 f 1; +#X obj 34 47 t b b b, f 18; +#X obj 86 131 +; +#X obj 86 153 == 2; +#X obj 145 221 symbol \$6; +#X obj 139 90 sel \$6; +#X obj 139 68 symbol \$6; +#X obj 86 67 f \$4; +#X connect 0 0 1 1; +#X connect 1 0 7 0; +#X connect 3 0 0 0; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 5 1 22 0; +#X connect 6 0 3 0; +#X connect 6 1 2 0; +#X connect 7 0 8 0; +#X connect 7 1 11 0; +#X connect 7 2 9 1; +#X connect 7 2 10 1; +#X connect 7 2 13 0; +#X connect 8 0 12 0; +#X connect 11 0 9 0; +#X connect 11 0 10 0; +#X connect 14 0 5 0; +#X connect 15 0 20 0; +#X connect 16 0 17 0; +#X connect 17 0 19 0; +#X connect 18 0 20 1; +#X connect 19 0 14 0; +#X connect 19 1 25 0; +#X connect 19 2 24 0; +#X connect 20 0 21 0; +#X connect 21 0 14 1; +#X connect 22 0 6 0; +#X connect 23 0 18 0; +#X connect 24 0 23 0; +#X connect 25 0 15 0; +#X restore 56 259 pd clear_and_add_t; +#N canvas 918 77 168 206 split_y 0; +#X obj 13 130 spigot; +#X obj 64 130 spigot; +#X obj 46 39 loadbang; +#X obj 46 103 == 0; +#X obj 97 103 != 0; +#X obj 13 13 inlet; +#X obj 13 152 outlet; +#X obj 64 152 outlet; +#X obj 46 61 f \$4; +#X connect 0 0 6 0; +#X connect 1 0 7 0; +#X connect 2 0 8 0; +#X connect 3 0 0 1; +#X connect 4 0 1 1; +#X connect 5 0 0 0; +#X connect 5 0 1 0; +#X connect 8 0 3 0; +#X connect 8 0 4 0; +#X restore 17 204 pd split_y; +#N canvas 0 22 450 300 set_positive 0; +#X obj 28 122 pack f f; +#X obj 205 85 element \$0-t-scope bufr; +#X obj 28 99 max 0; +#X obj 28 168 set \$0-t-scope-value-r x y, f 30; +#N canvas 0 23 189 224 poltocar 0; +#X obj 26 11 inlet; +#X obj 26 172 outlet; +#X obj 26 135 pack f f, f 14; +#X obj 26 33 unpack f f, f 17; +#X obj 107 103 *; +#X obj 26 55 t f f, f 14; +#X obj 125 81 sin; +#X obj 26 103 *; +#X obj 44 81 cos; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 3 1 6 0; +#X connect 3 1 8 0; +#X connect 4 0 2 1; +#X connect 5 0 7 0; +#X connect 5 1 4 0; +#X connect 6 0 4 1; +#X connect 7 0 2 0; +#X connect 8 0 7 1; +#X restore 28 145 pd poltocar; +#X obj 28 48 inlet; +#X obj 73 48 inlet; +#X obj 205 48 inlet; +#X obj 340 48 inlet; +#X connect 0 0 4 0; +#X connect 1 0 3 2; +#X connect 2 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 2 0; +#X connect 6 0 0 1; +#X connect 7 0 1 0; +#X connect 8 0 1 1; +#X restore 17 394 pd set_positive; +#X obj 46 344 / 179; +#X obj 46 366 * 6.28319; +#N canvas 0 22 450 300 set_negative 0; +#X obj 28 142 pack f f; +#N canvas 0 23 189 224 poltocar 0; +#X obj 26 11 inlet; +#X obj 26 172 outlet; +#X obj 26 135 pack f f, f 14; +#X obj 26 33 unpack f f, f 17; +#X obj 107 103 *; +#X obj 26 55 t f f, f 14; +#X obj 125 81 sin; +#X obj 26 103 *; +#X obj 44 81 cos; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 3 1 6 0; +#X connect 3 1 8 0; +#X connect 4 0 2 1; +#X connect 5 0 7 0; +#X connect 5 1 4 0; +#X connect 6 0 4 1; +#X connect 7 0 2 0; +#X connect 8 0 7 1; +#X restore 28 165 pd poltocar; +#X obj 28 48 inlet; +#X obj 73 48 inlet; +#X obj 205 48 inlet; +#X obj 340 48 inlet, f 45; +#X obj 28 188 set \$0-t-scope-value-g x y, f 30; +#X obj 205 85 element \$0-t-scope bufg; +#X obj 28 99 min 0; +#X obj 28 121 * -1; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 2 0 8 0; +#X connect 3 0 0 1; +#X connect 4 0 7 0; +#X connect 5 0 7 1; +#X connect 7 0 6 2; +#X connect 8 0 9 0; +#X connect 9 0 0 0; +#X restore 17 424 pd set_negative; +#X obj 17 181 spigot 0; +#X obj 62 115 loadbang; +#X obj 62 158 != 0; +#X obj 17 16 hoa.in~; +#X obj 62 136 f \$3; +#X obj 211 68 array define \$6-buffer-\$4 180; +#X connect 0 0 1 0; +#X connect 1 0 17 0; +#X connect 2 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 13 0; +#X connect 6 0 16 0; +#X connect 6 1 13 2; +#X connect 6 1 14 0; +#X connect 6 1 16 2; +#X connect 9 0 1 0; +#X connect 10 0 0 1; +#X connect 11 0 5 1; +#X connect 11 1 13 3; +#X connect 11 1 16 3; +#X connect 12 0 2 0; +#X connect 12 1 3 0; +#X connect 14 0 15 0; +#X connect 15 0 13 1; +#X connect 15 0 16 1; +#X connect 17 0 12 0; +#X connect 18 0 21 0; +#X connect 19 0 17 1; +#X connect 20 0 0 0; +#X connect 21 0 19 0; diff --git a/Package/Hoa/helps/hoa.3d.wider~-help.pd b/hoa/hoa.3d.wider~-help.pd similarity index 95% rename from Package/Hoa/helps/hoa.3d.wider~-help.pd rename to hoa/hoa.3d.wider~-help.pd index 1b32ab2..609cf57 100644 --- a/Package/Hoa/helps/hoa.3d.wider~-help.pd +++ b/hoa/hoa.3d.wider~-help.pd @@ -5,7 +5,7 @@ #X msg 406 166 \$1 20; #X text 467 149 between 0 and 1; #X text 467 137 Widen value; -#X obj 406 143 c.number @size 53 17 @fontname "Helvetica" @fontweight +#X obj 406 143 nbx @size 53 17 @fontname "Helvetica" @fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" @presetname "(null)" @min 0 @max 1 @minmax 0 1 @decimal 6 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; @@ -40,14 +40,14 @@ way to have linear changes.; #X obj 125 714 hoa.dac~ 1:20 -----------------------; #X obj 125 227 hoa.3d.wider~ 3 ---------------------; #X obj 125 201 hoa.3d.encoder~ 3 ----------------; -#X obj 225 153 c.number @size 53 17 @fontname "Helvetica" @fontweight +#X obj 225 153 nbx @size 53 17 @fontname "Helvetica" @fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" @presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" @decimal 6 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 1; #X obj 225 175 hoa.pi 0; #X obj 225 130 c.loadmess 0; -#X obj 326 153 c.number @size 53 17 @fontname "Helvetica" @fontweight +#X obj 326 153 nbx @size 53 17 @fontname "Helvetica" @fontweight "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" @presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" @decimal 6 @bgcolor 0.7 0.7 0.7 1 @bdcolor 0.5 0.5 0.5 1 @textcolor diff --git a/hoa/hoa.connect-help.pd b/hoa/hoa.connect-help.pd new file mode 100644 index 0000000..7c1fb99 --- /dev/null +++ b/hoa/hoa.connect-help.pd @@ -0,0 +1,24 @@ +#N canvas 412 450 627 298 10; +#X declare -path ..; +#X obj 404 186 hoa.connect; +#X obj 404 167 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 404 128 key; +#X obj 404 147 sel 32; +#X text 12 34 hoa.connect hepls to connect the hoa objects together. +; +#X text 356 64 Select the objects you want to connect; +#X text 356 74 then bang hoa.connect. In this example \,; +#X text 356 84 we use the space key to generate the bang.; +#X obj 19 239 declare -path ..; +#X obj 19 262 hoa.credits; +#X obj 99 262 hoa-help; +#X obj 10 9 cnv 15 200 20 empty empty hoa.connect 4 10 0 14 -233017 +-66577 0; +#X obj 38 131 hoa.2d.decoder~ 7 regular 16, f 45; +#X obj 38 80 hoa.2d.encoder~ 7, f 45; +#X obj 38 184 hoa.dac~ 1:16, f 45; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X coords 0 298 1 297 100 60 0; diff --git a/hoa/hoa.dac~-help.pd b/hoa/hoa.dac~-help.pd new file mode 100644 index 0000000..d3b3e5f --- /dev/null +++ b/hoa/hoa.dac~-help.pd @@ -0,0 +1,18 @@ +#N canvas 186 414 334 308 10; +#X declare -path ..; +#X text 9 39 hoa.dac~ facilitates the routing of large array of loudspeakers. +; +#X text 11 111 Channels 1 to 8 :; +#X text 11 151 Channels 16 to 1 :; +#X obj 12 211 hoa.dac~ 9:16 10 22 6:1 ------------------; +#X text 11 191 Channels 9 to 16 \, 10 \, 22 and 6 to 1 :; +#X text 11 71 Channels 1 2 :; +#X obj 12 171 hoa.dac~ 16:1 ----------------------------; +#X obj 12 131 hoa.dac~ 1:8 -----------------------------; +#X obj 12 91 hoa.dac~ 1 2 -----------------------------; +#X obj 10 14 cnv 15 200 20 empty empty hoa.dac~ 4 10 0 14 -233017 -66577 +0; +#X obj 12 247 declare -path ..; +#X obj 12 270 hoa.credits; +#X obj 92 270 hoa-help; +#X coords 0 308 1 307 100 60 0; diff --git a/hoa/hoa.io-help.pd b/hoa/hoa.io-help.pd new file mode 100644 index 0000000..b160376 --- /dev/null +++ b/hoa/hoa.io-help.pd @@ -0,0 +1,206 @@ +#N canvas 1 23 1397 669 10; +#X declare -path ..; +#X obj 40 229 hoa.in; +#X text 5 48 The inlet and outlet to use in the hoa.process~'s patchers +; +#X obj 187 229 hoa.in~; +#X obj 110 229 hoa.in; +#X obj 110 308 hoa.out; +#X obj 40 308 hoa.out; +#X obj 187 309 hoa.out~; +#X obj 287 229 hoa.in~; +#X obj 287 309 hoa.out~; +#X obj 410 229 hoa.in extra 1; +#X obj 410 309 hoa.out extra 1; +#X obj 627 229 hoa.in~ extra 1; +#X obj 520 229 hoa.in extra 3; +#X obj 520 309 hoa.out extra 4; +#X obj 627 309 hoa.out~ extra 1; +#X obj 747 229 hoa.in~ extra 2; +#X obj 747 309 hoa.out~ extra 2; +#X text 39 165 hoa.in~ and hoa.in share the same parent inlet but the +signal is routed to the hoa.in~ and the other messages are routed to +hoa.in.; +#X text 8 425 With the above hoa.io configuration \, the hoa.process~ +have one inlet per instance \, that send messages to the two hoa.in +and the signal to the two hoa.in~ \, and two outlet per instance \, +the first one outputs the sum of the signal received by the hoa.out~ +and the second one outputs the message received by the hoa.out.; +#X text 439 165 hoa.in~ and hoa.in with the same extra argument share +the same parent inlet but the signal is routed to the hoa.in~ and the +other messages are routed to hoa.in.; +#X obj 910 314 sig~ 1; +#X obj 981 294 sig~ 2; +#X obj 1052 264 sig~ 3; +#X text 886 498 instance.; +#X obj 1195 284 sig~ 1.5; +#X obj 910 346 hoa.2d.process~ 3 hoa.ioexample~ planewaves ---------------- +; +#X text 886 468 The 3 instance; +#X text 886 478 signal outlets \,; +#X text 886 488 one for each; +#X text 886 508 Each instance; +#X text 886 518 have two hoa.out~; +#X text 886 528 that sum the; +#X text 886 538 signals of the; +#X text 886 548 hoa.in~.; +#X text 999 468 The 2 extra; +#X text 999 478 signal outlets.; +#X text 999 498 outputs the; +#X text 999 508 sum of the; +#X text 999 518 signals received; +#X text 999 548 extra hoa.out~; +#X text 999 488 Each one; +#X text 999 528 by the; +#X text 999 538 corresponding; +#X obj 1124 314 sig~ 0.333333; +#X text 1106 498 instance.; +#X text 1106 468 The 3 instance; +#X text 1106 488 one for each; +#X text 1106 478 messages outlets \,; +#X text 1106 508 Each one outputs; +#X text 1106 518 the messages; +#X text 1106 528 received by the; +#X text 1106 538 hoa.out~ of; +#X text 1106 548 its instance.; +#X obj 869 267 c.loadmess 1; +#X obj 934 237 c.loadmess 2; +#X obj 1006 207 c.loadmess 3; +#X text 856 78 The hoa.io configuration of this patch inside a hoa.process~ +in planewaves mode with 3 instance.; +#X text 8 75 hoa.io without arguments create an inlet for each instance +of the process. You can have several hoa.io without arguments in a +patcher but they will share the same parent inlet and outlet.; +#X text 439 356 hoa.out~ and hoa.out with the same extra argument have +separated parent outlets for signal or other messages.; +#X text 39 376 hoa.out~ and hoa.out have separated parent outlets for +signal or other messages.; +#X text 428 75 hoa.io with the argument extra and a number (or default +1) create an extra inlet or outlet that will be shared by all the instances. +You can have several hoa.io with the same extra argument in a patcher +but they will share the same parent inlet and outlet.; +#X text 428 405 With the above hoa.io configuration \, the hoa.process~ +have 3 extra inlets and 6 extra outlets \, 2 for the signal and 4 for +the messages. The extra hoa.in~ receives the signals from the extra +inlets 1 and 2 of the hoa.process~ and the extra hoa.in receives the +messages from the extra inlets 1 and 3 (note that if you target the +hoa.process~ only the target instace receive the messages). The extra +signal outlets output the sum of the extra hoa.out~ of all the instances +that correspond to their index. The extra message outlet 1 outputs +the messages received by the hoa.out extra 1 of all the instance and +the extra message outlet 4 outputs the messages received by the hoa.out +extra 4 of all the instance. Note that the messages sent to the extra +inlet 2 are not received because there is no hoa.in extra 2 and the +extra messages outlets 2 and 3 are useless because there are no hoa.out +extra 2 and 3; +#X text 1219 498 outputs the; +#X text 1219 488 Each one; +#X text 1219 518 by the; +#X text 1219 528 corresponding; +#X text 1219 468 The 4 extra; +#X text 1219 478 messages outlets.; +#X text 1219 508 messages received; +#X text 1219 538 extra hoa.out.; +#X text 1219 548 Then \, extra messages; +#X text 1219 558 outlet 2 and 3 are; +#X text 1219 568 useless.; +#X obj 1104 240 c.loadmess 69; +#X msg 540 275; +#X msg 1267 277 set Année érotique; +#X msg 1267 392 Année érotique; +#X msg 1267 367 set \$1 \$2; +#X text 886 118 The 3 instance signal and messages; +#X text 886 128 inlets \, one for each instance.; +#X text 886 138 The messages are sent to the hoa.in.; +#X text 886 148 The signals are sent to the hoa.in~.; +#X text 1126 118 The 3 extra signal and messages; +#X text 1126 128 inlets.; +#X text 1126 138 The extra inlet 1 \, send the messages; +#X text 1126 148 to the hoa.in extra 1 and the signal; +#X text 1126 158 to the hoa.in~ extra 1; +#X text 1126 168 The extra inlet 2 \, send the signal; +#X text 1126 178 to the hoa.in~ extra 2; +#X text 1126 188 The extra inlet 3 \, send the messages; +#X text 1126 198 to the hoa.in extra 3; +#X msg 594 27 \; pd dsp 1; +#X msg 658 27 \; pd dsp 0; +#X text 875 593 The hoa.io configuration of this patch is an example +made to show all the behaviors of the hoa.io. You would prefer to look +at the real uses of hoa.process~.; +#X obj 52 273 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 122 273 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 442 273 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 1006 238 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X obj 221 273 misc//hoa.number~; +#X obj 321 273 misc//hoa.number~; +#X obj 661 273 misc//hoa.number~; +#X obj 781 273 misc//hoa.number~; +#X obj 869 292 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 910 384 misc//hoa.number~; +#X obj 942 414 misc//hoa.number~; +#X obj 1007 384 misc//hoa.number~; +#X obj 974 444 misc//hoa.number~; +#X obj 1039 414 misc//hoa.number~; +#X obj 1072 384 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X obj 1104 414 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X obj 1169 393 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X obj 1137 444 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X obj 10 11 cnv 15 200 20 empty empty hoa.io 4 10 0 14 -233017 -66577 +0; +#X obj 12 534 declare -path ..; +#X obj 12 557 hoa.credits; +#X obj 92 557 hoa-help; +#X obj 934 268 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 1104 292 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 +10 -262144 -1 -1 0 256; +#X connect 0 0 5 0; +#X connect 0 0 94 0; +#X connect 2 0 6 0; +#X connect 2 0 98 0; +#X connect 3 0 4 0; +#X connect 3 0 95 0; +#X connect 7 0 8 0; +#X connect 7 0 99 0; +#X connect 9 0 10 0; +#X connect 9 0 96 0; +#X connect 11 0 14 0; +#X connect 11 0 100 0; +#X connect 12 0 13 0; +#X connect 12 0 74 0; +#X connect 15 0 16 0; +#X connect 15 0 101 0; +#X connect 20 0 25 0; +#X connect 21 0 25 1; +#X connect 22 0 25 2; +#X connect 24 0 25 4; +#X connect 25 0 103 0; +#X connect 25 1 104 0; +#X connect 25 2 106 0; +#X connect 25 3 105 0; +#X connect 25 4 107 0; +#X connect 25 5 108 0; +#X connect 25 6 109 0; +#X connect 25 7 111 0; +#X connect 25 8 110 0; +#X connect 25 11 77 0; +#X connect 43 0 25 3; +#X connect 53 0 102 0; +#X connect 54 0 116 0; +#X connect 55 0 97 0; +#X connect 73 0 117 0; +#X connect 75 0 25 5; +#X connect 77 0 76 0; +#X connect 97 0 25 2; +#X connect 102 0 25 0; +#X connect 116 0 25 1; +#X connect 117 0 25 3; diff --git a/hoa/hoa.pi-help.pd b/hoa/hoa.pi-help.pd new file mode 100644 index 0000000..3447c77 --- /dev/null +++ b/hoa/hoa.pi-help.pd @@ -0,0 +1,30 @@ +#N canvas 223 294 381 263 10; +#X declare -path ..; +#X obj 46 125 hoa.pi 0.25; +#X text 6 34 hoa.pi is for people that never remember more than 4 decimals +or want to initialize a good Pi number.; +#X obj 12 204 declare -path ..; +#X obj 150 95 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 1.03 256; +#X obj 236 95 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 46 155 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0.785398 256; +#X obj 150 155 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 3.23584 256; +#X obj 236 155 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 3.14159 256; +#X obj 46 97 loadbang; +#X obj 12 227 hoa.credits; +#X obj 10 11 cnv 15 200 20 empty empty hoa.pi 4 10 0 14 -233017 -66577 +0; +#X obj 92 227 hoa-help; +#X obj 236 125 hoa.pi; +#X obj 150 124 hoa.pi; +#X connect 0 0 5 0; +#X connect 3 0 13 0; +#X connect 4 0 12 0; +#X connect 8 0 0 0; +#X connect 12 0 7 0; +#X connect 13 0 6 0; +#X coords 0 263 1 262 100 60 0; diff --git a/hoa/hoa.pi~-help.pd b/hoa/hoa.pi~-help.pd new file mode 100644 index 0000000..ad6de0f --- /dev/null +++ b/hoa/hoa.pi~-help.pd @@ -0,0 +1,25 @@ +#N canvas 147 97 379 291 10; +#X declare -path ..; +#X msg 264 176 \; pd dsp 1; +#X msg 264 211 \; pd dsp 0; +#X obj 102 135 hoa.pi~ 0.5; +#X obj 188 136 hoa.pi~ 2; +#X obj 188 113 phasor~ 0.1; +#X text 8 55 hoa.pi~ is for people that never remember more than 4 +decimals or want to initialize a good Pi number.; +#X obj 18 136 hoa.pi~; +#X obj 18 113 phasor~ 0.1; +#X obj 10 25 cnv 15 200 20 empty empty hoa.pi~ 4 10 0 14 -233017 -66577 +0; +#X obj 11 203 declare -path ..; +#X obj 11 226 hoa.credits; +#X obj 91 226 hoa-help; +#X obj 18 158 misc//hoa.number~; +#X obj 102 158 misc//hoa.number~; +#X obj 188 158 misc//hoa.number~; +#X connect 2 0 13 0; +#X connect 3 0 14 0; +#X connect 4 0 3 0; +#X connect 6 0 12 0; +#X connect 7 0 6 0; +#X coords 0 291 1 290 100 60 0; diff --git a/hoa/misc/hoa.credits.pd b/hoa/misc/hoa.credits.pd new file mode 100644 index 0000000..8b72925 --- /dev/null +++ b/hoa/misc/hoa.credits.pd @@ -0,0 +1,11 @@ +#N canvas 550 310 379 153 10; +#X text 14 13 HOA Library - CICM | Universite Paris 8 | Labex Arts +H2H; +#X text 14 126 http://www.mshparisnord.fr/hoalibrary/; +#X text 14 32 Authors:; +#X text 14 46 2012: P. Guillot \, E. Paris & J. Colafrancesco; +#X text 14 57 2012-2015 : P. Guillot & E. Paris; +#X text 14 69 2015 : P. Guillot \, E. Paris & T. Le Meur; +#X text 14 82 2016 : P. Guillot & E. Paris; +#X text 14 102 Pure Data implementation:; +#X text 14 115 2013-2016: P. Guillot \, E. Paris & T. Le Meur; diff --git a/hoa/misc/hoa.hgain~.pd b/hoa/misc/hoa.hgain~.pd new file mode 100644 index 0000000..bd5652c --- /dev/null +++ b/hoa/misc/hoa.hgain~.pd @@ -0,0 +1,18 @@ +#N canvas 619 271 450 300 10; +#X obj 85 77 inlet~; +#X obj 103 100 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 10000 1; +#X obj 193 50 loadbang; +#X obj 193 72 f 100; +#X obj 100 120 dbtorms; +#X obj 100 142 line~; +#X obj 85 165 *~; +#X obj 85 187 outlet~; +#X connect 0 0 6 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 5 0; +#X connect 5 0 6 1; +#X connect 6 0 7 0; +#X coords 0 -1 1 1 133 15 2 100 100; diff --git a/hoa/misc/hoa.number~.pd b/hoa/misc/hoa.number~.pd new file mode 100644 index 0000000..e15bb52 --- /dev/null +++ b/hoa/misc/hoa.number~.pd @@ -0,0 +1,20 @@ +#N canvas 619 271 450 300 10; +#X obj 100 100 nbx 5 14 -1e+37 1e+37 0 0 \$0-dummy-s \$0-dummy-r empty +0 -8 0 10 -262144 -1 -1 2.51063 256; +#X obj 100 47 inlet~; +#X obj 100 79 snapshot~; +#X obj 164 12 bang~; +#X obj 164 35 f 0; +#X obj 197 35 + 1; +#X obj 164 79 f 0; +#X obj 164 57 sel 30; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 4 0 7 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 6 0; +#X connect 7 0 2 0; +#X connect 7 1 5 0; +#X coords 0 -1 1 1 54 14 2 100 100; diff --git a/hoa/misc/hoa.vmeter~.pd b/hoa/misc/hoa.vmeter~.pd new file mode 100644 index 0000000..f6575b2 --- /dev/null +++ b/hoa/misc/hoa.vmeter~.pd @@ -0,0 +1,23 @@ +#N canvas 619 271 450 300 10; +#X obj 100 55 inlet~; +#X obj 101 152 vu 12 80 empty empty 0 0 0 4 -262144 -262144 1 0; +#X obj 100 81 snapshot~; +#X obj 164 14 bang~; +#X obj 164 37 f 0; +#X obj 197 37 + 1; +#X obj 164 81 f 0; +#X obj 164 59 sel 30; +#X obj 100 103 rmstodb; +#X obj 100 125 - 100; +#X connect 0 0 2 0; +#X connect 2 0 8 0; +#X connect 3 0 4 0; +#X connect 4 0 7 0; +#X connect 5 0 4 1; +#X connect 6 0 4 1; +#X connect 7 0 6 0; +#X connect 7 0 2 0; +#X connect 7 1 5 0; +#X connect 8 0 9 0; +#X connect 9 0 1 0; +#X coords 0 -1 1 1 14 84 2 100 150; diff --git a/Package/Hoa/patchers/hoa.fx.2d.decoder~.pd b/hoa/temp/hoa.fx.2d.decoder~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.2d.decoder~.pd rename to hoa/temp/hoa.fx.2d.decoder~.pd diff --git a/Package/Hoa/patchers/hoa.fx.2d.rotate~.pd b/hoa/temp/hoa.fx.2d.rotate~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.2d.rotate~.pd rename to hoa/temp/hoa.fx.2d.rotate~.pd diff --git a/Package/Hoa/helps/hoa.fx.convolve~-help.pd b/hoa/temp/hoa.fx.convolve~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.convolve~-help.pd rename to hoa/temp/hoa.fx.convolve~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.convolve~.pd b/hoa/temp/hoa.fx.convolve~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.convolve~.pd rename to hoa/temp/hoa.fx.convolve~.pd diff --git a/Package/Hoa/patchers/hoa.fx.delay2~.pd b/hoa/temp/hoa.fx.delay2~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.delay2~.pd rename to hoa/temp/hoa.fx.delay2~.pd diff --git a/Package/Hoa/helps/hoa.fx.dephaser~-help.pd b/hoa/temp/hoa.fx.dephaser~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.dephaser~-help.pd rename to hoa/temp/hoa.fx.dephaser~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.dephaser~.pd b/hoa/temp/hoa.fx.dephaser~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.dephaser~.pd rename to hoa/temp/hoa.fx.dephaser~.pd diff --git a/Package/Hoa/helps/hoa.fx.freeverb~-help.pd b/hoa/temp/hoa.fx.freeverb~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.freeverb~-help.pd rename to hoa/temp/hoa.fx.freeverb~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.freeverb~.pd b/hoa/temp/hoa.fx.freeverb~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.freeverb~.pd rename to hoa/temp/hoa.fx.freeverb~.pd diff --git a/Package/Hoa/helps/hoa.fx.gain~-help.pd b/hoa/temp/hoa.fx.gain~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.gain~-help.pd rename to hoa/temp/hoa.fx.gain~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.gain~.pd b/hoa/temp/hoa.fx.gain~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.gain~.pd rename to hoa/temp/hoa.fx.gain~.pd diff --git a/Package/Hoa/helps/hoa.fx.mirror~-help.pd b/hoa/temp/hoa.fx.mirror~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.mirror~-help.pd rename to hoa/temp/hoa.fx.mirror~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.mirror~.pd b/hoa/temp/hoa.fx.mirror~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.mirror~.pd rename to hoa/temp/hoa.fx.mirror~.pd diff --git a/Package/Hoa/patchers/hoa.fx.optim~.pd b/hoa/temp/hoa.fx.optim~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.optim~.pd rename to hoa/temp/hoa.fx.optim~.pd diff --git a/Package/Hoa/helps/hoa.fx.ringmod~-help.pd b/hoa/temp/hoa.fx.ringmod~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.fx.ringmod~-help.pd rename to hoa/temp/hoa.fx.ringmod~-help.pd diff --git a/Package/Hoa/patchers/hoa.fx.ringmod~.pd b/hoa/temp/hoa.fx.ringmod~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.ringmod~.pd rename to hoa/temp/hoa.fx.ringmod~.pd diff --git a/Package/Hoa/patchers/hoa.fx.sum~.pd b/hoa/temp/hoa.fx.sum~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.sum~.pd rename to hoa/temp/hoa.fx.sum~.pd diff --git a/Package/Hoa/patchers/hoa.fx.wider~.pd b/hoa/temp/hoa.fx.wider~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.fx.wider~.pd rename to hoa/temp/hoa.fx.wider~.pd diff --git a/hoa/temp/hoa.proc.ex.pd b/hoa/temp/hoa.proc.ex.pd new file mode 100644 index 0000000..bcb2954 --- /dev/null +++ b/hoa/temp/hoa.proc.ex.pd @@ -0,0 +1,4 @@ +#N canvas 386 267 499 330 10; +#X obj 89 278 hoa.out~ 1; +#X obj 89 47 hoa.in~ 1; +#X connect 1 0 0 0; diff --git a/hoa/temp/hoa.proc.ex2.pd b/hoa/temp/hoa.proc.ex2.pd new file mode 100644 index 0000000..7eb0f6d --- /dev/null +++ b/hoa/temp/hoa.proc.ex2.pd @@ -0,0 +1,7 @@ +#N canvas 386 267 499 330 10; +#X obj 129 278 hoa.out~ 1; +#X obj 49 47 hoa.in~; +#X obj 49 278 hoa.out~; +#X obj 129 47 hoa.in~ 2; +#X connect 1 0 2 0; +#X connect 3 0 0 0; diff --git a/hoa/temp/hoa.proc.harmo.ex.pd b/hoa/temp/hoa.proc.harmo.ex.pd new file mode 100644 index 0000000..933dda1 --- /dev/null +++ b/hoa/temp/hoa.proc.harmo.ex.pd @@ -0,0 +1,12 @@ +#N canvas 386 267 499 330 10; +#X obj 89 47 hoa.in 1; +#X obj 239 108 hoa.out 1; +#X obj 89 76 print \$1 \$2 \$3 \$4 \$5; +#X obj 239 47 hoa.in 2; +#X obj 89 108 hoa.out 2; +#X obj 348 42 hoa.in~; +#X obj 408 42 hoa.in~ 1; +#X obj 375 120 hoa.out~; +#X connect 0 0 2 0; +#X connect 0 0 4 0; +#X connect 3 0 1 0; diff --git a/hoa/temp/hoa.proc.plwav.ex.pd b/hoa/temp/hoa.proc.plwav.ex.pd new file mode 100644 index 0000000..855c30c --- /dev/null +++ b/hoa/temp/hoa.proc.plwav.ex.pd @@ -0,0 +1,7 @@ +#N canvas 386 267 499 330 10; +#X obj 89 47 hoa.in 1; +#X obj 89 278 hoa.out 1; +#X obj 89 96 print \$1 \$2 \$3 \$4; +#X obj 260 63 hoa.in~; +#X obj 320 63 hoa.in~ 1; +#X connect 0 0 2 0; diff --git a/Package/Hoa/patchers/hoa.syn.2d.encoder~.pd b/hoa/temp/hoa.syn.2d.encoder~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.syn.2d.encoder~.pd rename to hoa/temp/hoa.syn.2d.encoder~.pd diff --git a/Package/Hoa/patchers/hoa.syn.3d.encoder~.pd b/hoa/temp/hoa.syn.3d.encoder~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.syn.3d.encoder~.pd rename to hoa/temp/hoa.syn.3d.encoder~.pd diff --git a/Package/Hoa/helps/hoa.syn.delay~-help.pd b/hoa/temp/hoa.syn.delay~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.syn.delay~-help.pd rename to hoa/temp/hoa.syn.delay~-help.pd diff --git a/Package/Hoa/patchers/hoa.syn.delay~.pd b/hoa/temp/hoa.syn.delay~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.syn.delay~.pd rename to hoa/temp/hoa.syn.delay~.pd diff --git a/Package/Hoa/helps/hoa.syn.grain~-help.pd b/hoa/temp/hoa.syn.grain~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.syn.grain~-help.pd rename to hoa/temp/hoa.syn.grain~-help.pd diff --git a/Package/Hoa/patchers/hoa.syn.grain~.pd b/hoa/temp/hoa.syn.grain~.pd similarity index 100% rename from Package/Hoa/patchers/hoa.syn.grain~.pd rename to hoa/temp/hoa.syn.grain~.pd diff --git a/Package/Hoa/helps/hoa.syn.ringmod~-help.pd b/hoa/temp/hoa.syn.ringmod~-help.pd similarity index 100% rename from Package/Hoa/helps/hoa.syn.ringmod~-help.pd rename to hoa/temp/hoa.syn.ringmod~-help.pd diff --git a/Package/Hoa/patchers/hoa.syn.ringmod~.pd b/hoa/temp/hoa.syn.ringmod~.pd similarity index 65% rename from Package/Hoa/patchers/hoa.syn.ringmod~.pd rename to hoa/temp/hoa.syn.ringmod~.pd index 41b96dd..2ffe125 100644 --- a/Package/Hoa/patchers/hoa.syn.ringmod~.pd +++ b/hoa/temp/hoa.syn.ringmod~.pd @@ -1,6 +1,5 @@ #N canvas 314 82 771 461 10; #X obj 88 414 hoa.out~; -#X obj 6 8 c.loadmess; #X text 62 306 Receive the signal; #X text 64 436 Output the signal; #X text 318 109 Input messages selector; @@ -26,7 +25,6 @@ the ring modulation \, is multiplied by a factor depending on the intance. The factor is 1 for the highest harmonic and decreases toward 0 for the lower harmonics.; #X obj 282 137 sel done; -#X obj 88 328 hoa.in~ extra 1; #X obj 6 55 hoa.thisprocess~ 20; #X obj 189 110 route float list; #X obj 188 79 f 20; @@ -37,35 +35,37 @@ plane waves domain).; #X text 233 18 This hoa.processing synthesizes a sound field with ring modulation.; #X obj 256 310 random 1000; -#X obj 256 286 c.loadmess; #X obj 256 333 / 1000; -#X obj 224 64 hoa.in extra 2; -#X connect 1 0 24 0; -#X connect 5 0 6 1; -#X connect 6 0 12 1; -#X connect 6 1 11 0; -#X connect 6 1 15 1; -#X connect 7 0 0 0; -#X connect 8 0 7 1; +#X obj 88 328 hoa.in~ 1; +#X obj 224 64 hoa.in 2; +#X obj 6 8 loadbang; +#X obj 256 286 loadbang; +#X connect 4 0 5 1; +#X connect 5 0 11 1; +#X connect 5 1 10 0; +#X connect 5 1 14 1; +#X connect 6 0 0 0; +#X connect 7 0 6 1; +#X connect 8 0 7 0; #X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 11 0 12 0; -#X connect 12 0 17 1; -#X connect 12 0 20 0; -#X connect 15 1 16 0; -#X connect 16 0 10 0; -#X connect 17 0 10 0; -#X connect 22 0 26 0; -#X connect 23 0 7 0; -#X connect 24 0 6 0; -#X connect 24 1 5 0; -#X connect 24 2 26 0; -#X connect 24 3 25 0; -#X connect 25 0 17 0; -#X connect 25 1 15 0; -#X connect 25 2 22 0; -#X connect 26 0 25 0; -#X connect 30 0 32 0; -#X connect 31 0 30 0; -#X connect 32 0 8 1; -#X connect 33 0 25 0; +#X connect 10 0 11 0; +#X connect 11 0 16 1; +#X connect 11 0 19 0; +#X connect 14 1 15 0; +#X connect 15 0 9 0; +#X connect 16 0 9 0; +#X connect 21 0 24 0; +#X connect 22 0 5 0; +#X connect 22 1 4 0; +#X connect 22 2 24 0; +#X connect 22 3 23 0; +#X connect 23 0 16 0; +#X connect 23 1 14 0; +#X connect 23 2 21 0; +#X connect 24 0 23 0; +#X connect 28 0 29 0; +#X connect 29 0 7 1; +#X connect 30 0 6 0; +#X connect 31 0 23 0; +#X connect 32 0 22 0; +#X connect 33 0 28 0; diff --git a/Package/Hoa/tutorials/Tutorial_1.pd b/hoa/tutorials/Tutorial_1.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_1.pd rename to hoa/tutorials/Tutorial_1.pd diff --git a/Package/Hoa/tutorials/Tutorial_10.pd b/hoa/tutorials/Tutorial_10.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_10.pd rename to hoa/tutorials/Tutorial_10.pd diff --git a/Package/Hoa/tutorials/Tutorial_2.pd b/hoa/tutorials/Tutorial_2.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_2.pd rename to hoa/tutorials/Tutorial_2.pd diff --git a/Package/Hoa/tutorials/Tutorial_3.pd b/hoa/tutorials/Tutorial_3.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_3.pd rename to hoa/tutorials/Tutorial_3.pd diff --git a/Package/Hoa/tutorials/Tutorial_4.pd b/hoa/tutorials/Tutorial_4.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_4.pd rename to hoa/tutorials/Tutorial_4.pd diff --git a/Package/Hoa/tutorials/Tutorial_5.pd b/hoa/tutorials/Tutorial_5.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_5.pd rename to hoa/tutorials/Tutorial_5.pd diff --git a/Package/Hoa/tutorials/Tutorial_6.pd b/hoa/tutorials/Tutorial_6.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_6.pd rename to hoa/tutorials/Tutorial_6.pd diff --git a/Package/Hoa/tutorials/Tutorial_7.pd b/hoa/tutorials/Tutorial_7.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_7.pd rename to hoa/tutorials/Tutorial_7.pd diff --git a/Package/Hoa/tutorials/Tutorial_8.pd b/hoa/tutorials/Tutorial_8.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_8.pd rename to hoa/tutorials/Tutorial_8.pd diff --git a/Package/Hoa/tutorials/Tutorial_9.pd b/hoa/tutorials/Tutorial_9.pd similarity index 100% rename from Package/Hoa/tutorials/Tutorial_9.pd rename to hoa/tutorials/Tutorial_9.pd diff --git a/Package/Hoa/tutorials/hoa.tools.2d.pd b/hoa/tutorials/hoa.2d.tools.pd similarity index 60% rename from Package/Hoa/tutorials/hoa.tools.2d.pd rename to hoa/tutorials/hoa.2d.tools.pd index acf5e96..848b776 100644 --- a/Package/Hoa/tutorials/hoa.tools.2d.pd +++ b/hoa/tutorials/hoa.2d.tools.pd @@ -1,41 +1,11 @@ -#N canvas 212 82 888 666 10; -#X obj 15 17 c.canvasinfos; -#X obj 26 18 loadbang; -#X obj 201 605 hoa.help.pub; -#X obj 6 7 hoa.tuto.header; +#N canvas 34 105 888 666 10; +#X declare -path ..; #X text 14 296 Number of harmonics; -#X obj 19 190 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 19 270 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; #X obj 19 217 * 2; #X obj 19 243 + 1; -#X obj 199 190 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "nharmo" @send "(null)" -@presetname "(null)" @min 3 @max "(null)" @minmax 3 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 199 270 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; #X text 194 166 Number of harmonics; #X obj 199 217 - 1; #X obj 199 243 / 2; -#X obj 219 442 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 379 29 s norder; -#X obj 462 28 s nharmo; #X msg 219 522 0 -1 1 -2 2 -3 3; #N canvas 0 50 450 300 hoaNumbering 0; #X obj 95 63 until; @@ -69,13 +39,6 @@ #X connect 12 0 8 0; #X connect 12 1 9 1; #X restore 219 477 pd hoaNumbering; -#X obj 379 8 c.loadmess 7; -#X obj 462 7 c.loadmess 15; -#X obj 19 442 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X msg 19 522 0 1 1 2 2 3 3; #N canvas 0 50 450 300 hoaNumbering 0; #X obj 95 63 until; @@ -107,11 +70,6 @@ #X connect 11 0 8 0; #X connect 11 1 8 1; #X restore 19 477 pd hoaNumbering; -#X obj 497 190 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X msg 497 270 0 1 2 3 4 5 6 7; #N canvas 0 50 450 300 hoaNumbering 0; #X obj 95 133 until; @@ -194,11 +152,6 @@ #X connect 18 0 19 0; #X connect 19 0 5 0; #X restore 499 477 pd hoaNumbering; -#X obj 499 442 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X text 8 53 A set of tools to understand the numbering of the harmonics channels in 2d.; #X text 493 548 Letter codes of the harmonics; @@ -220,21 +173,48 @@ to the ACN even if the use of the degrees and the orders is preferred: ; #X text 486 359 The letter codes of the harmonics are not in the alphabetic order:; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 5 0 7 0; -#X connect 7 0 8 0; -#X connect 8 0 6 0; -#X connect 9 0 12 0; -#X connect 12 0 13 0; -#X connect 13 0 10 0; -#X connect 14 0 18 0; -#X connect 18 0 17 0; -#X connect 19 0 15 0; -#X connect 20 0 16 0; -#X connect 21 0 23 0; -#X connect 23 0 22 0; -#X connect 24 0 26 0; -#X connect 26 0 25 0; -#X connect 29 0 28 0; -#X connect 30 0 29 0; +#X obj 19 190 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 7 256; +#X obj 199 190 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-nhamo empty 0 -8 +0 10 -262144 -1 -1 15 256; +#X obj 497 190 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 7 256; +#X obj 19 270 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 15 256; +#X obj 199 270 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 7 256; +#X obj 19 442 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 7 256; +#X obj 219 442 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 7 256; +#X obj 499 442 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 7 256; +#X obj 379 49 s \$0-order; +#X obj 462 48 s \$0-nhamo; +#X obj 462 7 loadbang; +#X msg 462 29 15; +#X obj 379 8 loadbang; +#X msg 379 30 7; +#X obj 20 594 declare -path ..; +#X obj 20 617 hoa.credits; +#X obj 100 617 hoa-help; +#X obj 10 11 cnv 15 200 20 empty empty hoa.2d.tools 4 10 0 14 -233017 +-66577 0; +#X connect 1 0 2 0; +#X connect 2 0 32 0; +#X connect 4 0 5 0; +#X connect 5 0 33 0; +#X connect 7 0 6 0; +#X connect 9 0 8 0; +#X connect 11 0 10 0; +#X connect 14 0 13 0; +#X connect 29 0 1 0; +#X connect 30 0 4 0; +#X connect 31 0 11 0; +#X connect 34 0 9 0; +#X connect 35 0 7 0; +#X connect 36 0 14 0; +#X connect 39 0 40 0; +#X connect 40 0 38 0; +#X connect 41 0 42 0; +#X connect 42 0 37 0; diff --git a/Package/Hoa/tutorials/hoa.tools.3d.pd b/hoa/tutorials/hoa.3d.tools.pd similarity index 66% rename from Package/Hoa/tutorials/hoa.tools.3d.pd rename to hoa/tutorials/hoa.3d.tools.pd index 0a7dd15..a3aec1d 100644 --- a/Package/Hoa/tutorials/hoa.tools.3d.pd +++ b/hoa/tutorials/hoa.3d.tools.pd @@ -1,37 +1,7 @@ #N canvas 379 86 888 663 10; -#X obj 12 14 c.canvasinfos; -#X obj 23 15 loadbang; -#X obj 198 602 hoa.help.pub; -#X obj 3 4 hoa.tuto.header; +#X declare -path ..; #X text 11 293 Number of harmonics; -#X obj 16 187 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 16 267 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; -#X obj 196 187 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "nharmo" @send "(null)" -@presetname "(null)" @min 3 @max "(null)" @minmax 3 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 196 267 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" -@presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" -@decimal 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor -0 0 0 1; #X text 191 163 Number of harmonics; -#X obj 216 439 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; -#X obj 376 26 s norder; -#X obj 459 25 s nharmo; #X msg 216 519 0 -1 0 1 -2 -1 0 1 2 -3 -2 -1 0 1 2 3; #N canvas 0 50 463 390 hoaNumbering 0; #X obj 95 63 until; @@ -74,11 +44,6 @@ #X connect 15 0 13 1; #X connect 16 0 13 1; #X restore 216 474 pd hoaNumbering; -#X obj 16 439 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X msg 16 519 0 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3; #N canvas 0 50 462 402 hoaNumbering 0; #X obj 95 63 until; @@ -116,11 +81,6 @@ #X connect 14 0 11 0; #X connect 14 1 13 1; #X restore 16 474 pd hoaNumbering; -#X obj 494 187 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X msg 494 267 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; #N canvas 480 120 450 300 hoaNumbering 0; #X obj 95 133 until; @@ -238,20 +198,13 @@ #X connect 29 0 27 0; #X connect 30 0 0 0; #X restore 496 474 pd hoaNumbering; -#X obj 496 439 c.number @size 53 17 @fontname "Helvetica" @fontweight -"normal" @fontslant "roman" @fontsize 11 @receive "norder" @send "(null)" -@presetname "(null)" @min 1 @max "(null)" @minmax 1 "(null)" @decimal -0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @textcolor 0 0 0 -1; #X text 490 545 Letter codes of the harmonics; #X text 5 50 A set of tools to understand the numbering of the harmonics channels in 3d.; #X obj 16 214 + 1; -#X obj 376 5 c.loadmess 3; #X obj 16 240 pow 2; #X obj 196 214 sqrt; #X obj 196 240 - 1; -#X obj 459 4 c.loadmess 16; #X text 11 163 Order of decomposition N; #X text 191 293 Order of decomposition N; #X text 489 163 Order of decomposition N; @@ -269,21 +222,48 @@ order:; #X text 481 104 The numbering of the harmonics channels is similar to the ACN even if the use of the degrees and the orders is preferred: ; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 5 0 27 0; -#X connect 7 0 30 0; -#X connect 10 0 14 0; -#X connect 14 0 13 0; -#X connect 15 0 17 0; -#X connect 17 0 16 0; -#X connect 18 0 20 0; -#X connect 20 0 19 0; -#X connect 23 0 22 0; -#X connect 24 0 23 0; -#X connect 27 0 29 0; -#X connect 28 0 11 0; -#X connect 29 0 6 0; -#X connect 30 0 31 0; -#X connect 31 0 8 0; -#X connect 32 0 12 0; +#X obj 16 187 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 3 256; +#X obj 196 187 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-nharmo empty 0 -8 +0 10 -262144 -1 -1 16 256; +#X obj 494 187 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 3 256; +#X obj 196 267 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 3 256; +#X obj 16 267 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 16 256; +#X obj 16 439 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 3 256; +#X obj 216 439 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 3 256; +#X obj 496 439 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-order empty 0 -8 +0 10 -262144 -1 -1 3 256; +#X msg 376 27 3; +#X obj 376 46 s \$0-order; +#X obj 459 45 s \$0-nharmo; +#X msg 459 26 16; +#X obj 459 4 loadbang; +#X obj 376 5 loadbang; +#X obj 10 11 cnv 15 200 20 empty empty hoa.3d.tools 4 10 0 14 -233017 +-66577 0; +#X obj 20 594 declare -path ..; +#X obj 20 617 hoa.credits; +#X obj 100 617 hoa-help; +#X connect 3 0 2 0; +#X connect 5 0 4 0; +#X connect 7 0 6 0; +#X connect 10 0 9 0; +#X connect 13 0 14 0; +#X connect 14 0 33 0; +#X connect 15 0 16 0; +#X connect 16 0 32 0; +#X connect 29 0 13 0; +#X connect 30 0 15 0; +#X connect 31 0 7 0; +#X connect 34 0 5 0; +#X connect 35 0 3 0; +#X connect 36 0 10 0; +#X connect 37 0 38 0; +#X connect 40 0 39 0; +#X connect 41 0 40 0; +#X connect 42 0 37 0; diff --git a/m4/.gitignore b/m4/.gitignore deleted file mode 100644 index 72e8ffc..0000000 --- a/m4/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/pd b/pd new file mode 160000 index 0000000..3e1a3f2 --- /dev/null +++ b/pd @@ -0,0 +1 @@ +Subproject commit 3e1a3f2e4b83c224fc988239d8af272e3e27bd87 diff --git a/pd.build b/pd.build new file mode 160000 index 0000000..b8535cf --- /dev/null +++ b/pd.build @@ -0,0 +1 @@ +Subproject commit b8535cfcd34a4f31343e92981f5084aba73933c9 diff --git a/sources/2d/hoa.2d.decoder_tilde.cpp b/sources/2d/hoa.2d.decoder_tilde.cpp new file mode 100644 index 0000000..491cacd --- /dev/null +++ b/sources/2d/hoa.2d.decoder_tilde.cpp @@ -0,0 +1,255 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_decoder +{ + t_hoa_processor f_obj; + float f_f; + hoa::Decoder* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_2d_decoder; + +static t_class *hoa_2d_decoder_class; +static t_symbol* hoa_sym_regular; +static t_symbol* hoa_sym_irregular; +static t_symbol* hoa_sym_binaural; + +static t_symbol* hoa_sym_tcrop; +static t_symbol* hoa_sym_acrop; + +static t_symbol* hoa_sym_toffset; +static t_symbol* hoa_sym_aoffset; + +static t_symbol* hoa_sym_tangles; +static t_symbol* hoa_sym_aangles; + +static void *hoa_2d_decoder_new(t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_2d_decoder *x = (t_hoa_2d_decoder *)pd_new(hoa_2d_decoder_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + const t_symbol* mode = atom_getsymbolarg(1, argc, argv); + if(mode == hoa_sym_regular) + { + size_t nplws = atom_getfloatarg(2, argc, argv); + if(nplws < order * 2 + 1) + { + pd_error(x, "hoa.2d.decoder~: bad argument : number of planewaves must be at least 2 * order + 1."); + nplws = order * 2 + 1; + } + x->f_processor = new hoa::DecoderRegular(order, nplws); + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_toffset || atom_getsymbol(argv+i) == hoa_sym_aoffset) + { + if(i+1 < argc && argv[i+1].a_type == A_FLOAT) + { + x->f_processor->setPlanewavesRotation(0, 0,atom_getfloat(argv+i+1) / 360. * HOA_2PI); + } + else + { + pd_error(x, "hoa.2d.decoder~: -offset bad argument for the attribute."); + } + } + break; + } + } + x->f_processor->setPlanewavesRotation(0., 0., atom_getfloatarg(3, argc, argv) / 360. * HOA_2PI); + } + else if(mode == hoa_sym_irregular) + { + size_t nplws = atom_getfloatarg(2, argc, argv); + if(nplws < 1) + { + pd_error(x, "hoa.2d.decoder~: bad argument : number of planewaves must be at least 1."); + nplws = 1; + } + x->f_processor = new hoa::DecoderIrregular(order, nplws); + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_toffset || atom_getsymbol(argv+i) == hoa_sym_aoffset) + { + if(i+1 < argc && argv[i+1].a_type == A_FLOAT) + { + x->f_processor->setPlanewavesRotation(0, 0,atom_getfloat(argv+i+1)); + } + else + { + pd_error(x, "hoa.2d.decoder~: -offset bad argument for the attribute."); + } + } + break; + } + } + + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_tangles || atom_getsymbol(argv+i) == hoa_sym_aangles) + { + for(int j = i+1, k = 0; j < argc && k < (int)nplws; ++i, ++j) + { + if(argv[j].a_type == A_FLOAT) + { + x->f_processor->setPlanewaveAzimuth(size_t(k), atom_getfloat(argv+j) / 360. * HOA_2PI); + } + else + { + pd_error(x, "hoa.2d.decoder~: -angles bad argument for the attribute."); + } + } + } + break; + } + } + } + else + { + x->f_processor = new hoa::DecoderBinaural(order); + if(mode != hoa_sym_binaural) + { + pd_error(x, "hoa.2d.decoder~: bad argument : mode must be regular, irregular or binaural."); + } + for(int i = 2; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_tcrop || atom_getsymbol(argv+i) == hoa_sym_acrop) + { + if(i+1 < argc && argv[i+1].a_type == A_FLOAT) + { + reinterpret_cast *>(x->f_processor)->setCropSize(atom_getfloat(argv+i+1)); + } + else + { + pd_error(x, "hoa.2d.decoder~: -crop bad argument for the attribute."); + } + } + break; + } + } + } + + + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfPlanewaves() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics(), x->f_processor->getNumberOfPlanewaves()); + } + return x; +} + +static void hoa_2d_decoder_free(t_hoa_2d_decoder *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_decoder_perform_regular(t_hoa_2d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < nins; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, size_t(nins)); + } + for(long i = 0; i < sampleframes; i++) + { + (static_cast*>(x->f_processor))->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa:: Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +static void hoa_2d_decoder_perform_irregular(t_hoa_2d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < nins; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, size_t(nins)); + } + for(long i = 0; i < sampleframes; i++) + { + (static_cast*>(x->f_processor))->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa::Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +static void hoa_2d_decoder_perform_binaural(t_hoa_2d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + (static_cast*>(x->f_processor))->processBlock((const t_sample**)ins, outs); +} + + + +static void hoa_2d_decoder_dsp(t_hoa_2d_decoder *x, t_signal **sp) +{ + x->f_processor->prepare((size_t)sp[0]->s_n); + if(x->f_processor->getMode() == hoa::Decoder::BinauralMode) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_decoder_perform_binaural, sp); + } + else if(x->f_processor->getMode() == hoa::Decoder::IrregularMode) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_decoder_perform_irregular, sp); + } + else + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_decoder_perform_regular, sp); + } +} + +extern "C" void setup_hoa0x2e2d0x2edecoder_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.decoder~"), (t_newmethod)hoa_2d_decoder_new, (t_method)hoa_2d_decoder_free, + (size_t)sizeof(t_hoa_2d_decoder), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_decoder, f_f); + class_addmethod(c, (t_method)hoa_2d_decoder_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_decoder_new, gensym("hoa.decoder~"), A_GIMME, 0); + } + hoa_2d_decoder_class = c; + + hoa_sym_regular = gensym("regular"); + hoa_sym_irregular = gensym("irregular"); + hoa_sym_binaural = gensym("binaural"); + + hoa_sym_tcrop = gensym("-crop"); + hoa_sym_acrop = gensym("@crop"); + + hoa_sym_toffset = gensym("-offset"); + hoa_sym_aoffset = gensym("@offset"); + + hoa_sym_tangles = gensym("-angles"); + hoa_sym_aangles = gensym("@angles"); +} + + + + diff --git a/sources/2d/hoa.2d.encoder_tilde.cpp b/sources/2d/hoa.2d.encoder_tilde.cpp new file mode 100644 index 0000000..4c26cb2 --- /dev/null +++ b/sources/2d/hoa.2d.encoder_tilde.cpp @@ -0,0 +1,75 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_encoder +{ + t_hoa_processor f_obj; + float f_f; + hoa::Encoder* f_processor; + t_sample* f_signals; +} t_hoa_2d_encoder; + +static t_class *hoa_2d_encoder_class; + +static void *hoa_2d_encoder_new(t_float f) +{ + t_hoa_2d_encoder *x = (t_hoa_2d_encoder *)pd_new(hoa_2d_encoder_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)f); + x->f_processor = new hoa::Encoder(order); + x->f_signals = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, 2, x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_2d_encoder_free(t_hoa_2d_encoder *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_signals; +} + +static void hoa_2d_encoder_perform(t_hoa_2d_encoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < sampleframes; i++) + { + x->f_processor->setAzimuth(ins[1][i]); + x->f_processor->process(ins[0]+i, x->f_signals + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_signals+i, nouts, outs[i], 1); + } +} + +static void hoa_2d_encoder_dsp(t_hoa_2d_encoder *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_encoder_perform, sp); +} + +extern "C" void setup_hoa0x2e2d0x2eencoder_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.encoder~"), (t_newmethod)hoa_2d_encoder_new, (t_method)hoa_2d_encoder_free, + (size_t)sizeof(t_hoa_2d_encoder), CLASS_DEFAULT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_encoder, f_f); + class_addmethod(c, (t_method)hoa_2d_encoder_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_encoder_new, gensym("hoa.encoder~"), A_FLOAT, 0); + } + hoa_2d_encoder_class = c; +} + diff --git a/sources/2d/hoa.2d.map_tilde.cpp b/sources/2d/hoa.2d.map_tilde.cpp new file mode 100644 index 0000000..1eb98f7 --- /dev/null +++ b/sources/2d/hoa.2d.map_tilde.cpp @@ -0,0 +1,278 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_map_tilde +{ + t_hoa_processor f_obj; + hoa::EncoderMulti* f_map; + hoa::PolarLines* f_lines; + t_sample* f_ins; + t_sample* f_outs; + t_sample* f_lines_vector; + float f_ramp; + t_symbol* f_mode; +} t_hoa_map_tilde; + +static t_class *hoa_map_tilde_class; +static t_symbol* hoa_sym_car; +static t_symbol* hoa_sym_cartesian; +static t_symbol* hoa_sym_polar; + +static void *hoa_map_tilde_new(t_symbol *s, int argc, t_atom *argv) +{ + t_hoa_map_tilde *x = (t_hoa_map_tilde *)pd_new(hoa_map_tilde_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + const size_t nsrcs = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(1, argc, argv)); + const t_symbol* m = atom_getsymbolarg(2, argc, argv); + x->f_mode = (m == hoa_sym_car || m == hoa_sym_cartesian) ? hoa_sym_cartesian : hoa_sym_polar; + + x->f_ramp = 100; + x->f_map = new hoa::EncoderMulti(order, nsrcs); + x->f_lines = new hoa::PolarLines(x->f_map->getNumberOfSources()); + x->f_lines->setRamp(0.1 * sys_getsr()); + + for(size_t i = 0; i < x->f_map->getNumberOfSources(); i++) + { + x->f_lines->setRadiusDirect(i, 1); + x->f_lines->setAzimuthDirect(i, 0.); + } + const size_t nins = (x->f_map->getNumberOfSources() == 1) ? 3 : x->f_map->getNumberOfSources(); + hoa_processor_init(x, nins, x->f_map->getNumberOfHarmonics()); + x->f_ins = new t_sample[nins * 81092]; + x->f_outs = new t_sample[x->f_map->getNumberOfHarmonics() * 81092]; + x->f_lines_vector = new t_sample[x->f_map->getNumberOfSources() * 2]; + + return x; + } + + return NULL; +} + +static void hoa_map_tilde_list(t_hoa_map_tilde *x, t_symbol* s, int argc, t_atom* argv) +{ + if(argc > 2 && argv && atom_gettype(argv) == A_LONG && atom_gettype(argv+1) == A_SYM) + { + long index = atom_getlong(argv); + if(index < 1 || (ulong)index > x->f_map->getNumberOfSources()) + return; + + if(argc > 3 && (atom_getsym(argv+1) == hoa_sym_polar || atom_getsym(argv+1) == hoa_sym_pol)) + { + x->f_lines->setRadius(ulong(index-1), atom_getfloat(argv+2)); + x->f_lines->setAzimuth(ulong(index-1), atom_getfloat(argv+3)); + } + else if(argc > 3 && (atom_getsym(argv+1) == hoa_sym_cartesian || atom_getsym(argv+1) == hoa_sym_car)) + { + x->f_lines->setRadius(ulong(index-1), Math::radius(atom_getfloat(argv+2), atom_getfloat(argv+3))); + x->f_lines->setAzimuth(ulong(index-1), Math::azimuth(atom_getfloat(argv+2), atom_getfloat(argv+3))); + } + else if(argc > 2 && atom_getsym(argv+1) == hoa_sym_mute) + { + x->f_map->setMute(ulong(index-1), atom_getlong(argv+2)); + } + } +} + +static t_pd_err hoa_map_tilde_ramp_set(t_hoa_map_tilde *x, t_object *attr, int argc, t_atom *argv) +{ + if(argc && argv) + { + if(atom_gettype(argv) == A_LONG || atom_gettype(argv) == A_FLOAT) + { + x->f_ramp = pd_clip_min(atom_getfloat(argv), 0); + x->f_lines->setRamp(x->f_ramp / 1000. * sys_getsr()); + } + } + return 0; +} + +static void hoa_map_tilde_perform_multisources(t_hoa_map_tilde *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) +{ + ulong nsources = x->f_map->getNumberOfSources(); + for(long i = 0; i < numins; i++) + { + Signal::copy(ulong(sampleframes), ins[i], 1, x->f_sig_ins+i, ulong(numins)); + } + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + for(ulong j = 0; j < nsources; j++) + x->f_map->setRadius(j, x->f_lines_vector[j]); + for(ulong j = 0; j < nsources; j++) + x->f_map->setAzimuth(j, x->f_lines_vector[j + nsources]); + + x->f_map->process(x->f_sig_ins + numins * i, x->f_sig_outs + numouts * i); + } + for(long i = 0; i < numouts; i++) + { + Signal::copy(ulong(sampleframes), x->f_sig_outs+i, ulong(numouts), outs[i], 1); + } +} + +static void hoa_map_tilde_perform(t_hoa_map_tilde *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) +{ + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + x->f_map->setRadius(0, x->f_lines_vector[0]); + x->f_map->setAzimuth(0, x->f_lines_vector[1]); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + for(long i = 0; i < numouts; i++) + { + Signal::copy(ulong(sampleframes), x->f_sig_outs+i, ulong(numouts), outs[i], 1); + } +} + +static void hoa_map_tilde_perform_in1(t_hoa_map_tilde *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) +{ + if(!x->f_mode) + { + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + x->f_map->setRadius(0, ins[1][i]); + x->f_map->setAzimuth(0, x->f_lines_vector[1]); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + } + else + { + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + x->f_map->setAzimuth(0, Math::azimuth(ins[1][i], x->f_lines_vector[1])); + x->f_map->setRadius(0, Math::radius(ins[1][i], x->f_lines_vector[1])); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + } + for(long i = 0; i < numouts; i++) + { + Signal::copy(ulong(sampleframes), x->f_sig_outs+i, ulong(numouts), outs[i], 1); + } +} + +static void hoa_map_tilde_perform_in2(t_hoa_map_tilde *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) +{ + if(!x->f_mode) + { + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + x->f_map->setRadius(0, x->f_lines_vector[0]); + x->f_map->setAzimuth(0, ins[2][i]); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + } + else + { + for(long i = 0; i < sampleframes; i++) + { + x->f_lines->process(x->f_lines_vector); + x->f_map->setAzimuth(0, Math::azimuth(x->f_lines_vector[0], ins[2][i])); + x->f_map->setRadius(0, Math::radius(x->f_lines_vector[0], ins[2][i])); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + } + for(long i = 0; i < numouts; i++) + { + Signal::copy(ulong(sampleframes), x->f_sig_outs+i, ulong(numouts), outs[i], 1); + } +} + +static void hoa_map_tilde_perform_in1_in2(t_hoa_map_tilde *x, t_object *dsp64, t_sample **ins, long numins, t_sample **outs, long numouts, long sampleframes, long flags, void *userparam) +{ + if(!x->f_mode) + { + for(long i = 0; i < sampleframes; i++) + { + x->f_map->setRadius(0, ins[1][i]); + x->f_map->setAzimuth(0, ins[2][i]); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + } + } + else + { + for(long i = 0; i < sampleframes; i++) + { + x->f_map->setAzimuth(0, Math::azimuth(ins[1][i], ins[2][i])); + x->f_map->setRadius(0, Math::radius(ins[1][i], ins[2][i])); + x->f_map->process(&ins[0][i], x->f_sig_outs + numouts * i); + + } + } + for(long i = 0; i < numouts; i++) + { + Signal::copy(ulong(sampleframes), x->f_sig_outs+i, ulong(numouts), outs[i], 1); + } +} + +static void hoa_map_tilde_dsp(t_hoa_map_tilde *x, t_object *dsp, short *count, double samplerate, long maxvectorsize, long flags) +{ + x->f_lines->setRamp(x->f_ramp / 1000. * samplerate); + if(x->f_map->getNumberOfSources() == 1) + { + if(count[1] && count[2]) + object_method(dsp, gensym("dsp_add64"), x, (method)hoa_map_tilde_perform_in1_in2, 0, NULL); + else if(count[1] && !count[2]) + object_method(dsp, gensym("dsp_add64"), x, (method)hoa_map_tilde_perform_in1, 0, NULL); + else if(!count[1] && count[2]) + object_method(dsp, gensym("dsp_add64"), x, (method)hoa_map_tilde_perform_in2, 0, NULL); + else if(!count[1] && !count[2]) + object_method(dsp, gensym("dsp_add"), x, (method)hoa_map_tilde_perform, 0, NULL); + } + else + { + object_method(dsp, gensym("dsp_add"), x, (method)hoa_map_tilde_perform_multisources, 0, NULL); + } +} + +static void hoa_map_tilde_free(t_hoa_map_tilde *x) +{ + eobj_dspfree(x); + delete x->f_lines; + delete x->f_map; + Signal::free(x->f_sig_ins); + Signal::free(x->f_sig_outs); + Signal::free(x->f_lines_vector); +} + +extern "C" void setup_hoa0x2e2d0x2emap_tilde(void) +{ + t_eclass* c; + + c = eclass_new("hoa.2d.map~", (method)hoa_map_tilde_new, (method)hoa_map_tilde_free, (short)sizeof(t_hoa_map_tilde), 0L, A_GIMME, 0); + class_addcreator((t_newmethod)hoa_map_tilde_new, gensym("hoa.map~"), A_GIMME, 0); + + eclass_dspinit(c); + + eclass_addmethod(c, (method)hoa_map_tilde_dsp, "dsp", A_CANT, 0); + eclass_addmethod(c, (method)hoa_map_tilde_list, "list", A_GIMME, 0); + eclass_addmethod(c, (method)hoa_map_tilde_float, "float", A_FLOAT, 0); + + CLASS_ATTR_FLOAT (c, "ramp", 0, t_hoa_map_tilde, f_ramp); + CLASS_ATTR_CATEGORY (c, "ramp", 0, "Behavior"); + CLASS_ATTR_LABEL (c, "ramp", 0, "Ramp Time (ms)"); + CLASS_ATTR_ORDER (c, "ramp", 0, "2"); + CLASS_ATTR_ACCESSORS (c, "ramp", NULL, hoa_map_tilde_ramp_set); + CLASS_ATTR_SAVE (c, "ramp", 1); + + eclass_register(CLASS_OBJ, c); + hoa_map_tilde_class = c; + + hoa_sym_car = gensym("car") + hoa_sym_cartesian = gensym("cartesian") + hoa_sym_polar = gensym("polar"); +} + diff --git a/sources/2d/hoa.2d.optim_tilde.cpp b/sources/2d/hoa.2d.optim_tilde.cpp new file mode 100644 index 0000000..7e90e20 --- /dev/null +++ b/sources/2d/hoa.2d.optim_tilde.cpp @@ -0,0 +1,109 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_optim +{ + t_hoa_processor f_obj; + float f_f; + hoa::Optim* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_2d_optim; + +static t_class *hoa_2d_optim_class; +static t_symbol* hoa_sym_basic; +static t_symbol* hoa_sym_maxRe; +static t_symbol* hoa_sym_maxre; +static t_symbol* hoa_sym_inPhase; +static t_symbol* hoa_sym_inphase; + +static void *hoa_2d_optim_new(t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_2d_optim *x = (t_hoa_2d_optim *)pd_new(hoa_2d_optim_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + s = atom_getsymbolarg(1, argc, argv); + x->f_processor = new hoa::Optim(order); + if(s == hoa_sym_basic) + { + x->f_processor->setMode(hoa::Optim::Basic); + } + else if(s == hoa_sym_maxRe || s == hoa_sym_maxre) + { + x->f_processor->setMode(hoa::Optim::MaxRe); + } + else + { + x->f_processor->setMode(hoa::Optim::InPhase); + if(s != hoa_sym_inPhase && s != hoa_sym_inphase) + { + pd_error(x, "hoa.2d.optim: bad argument."); + } + } + + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics(), x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_2d_optim_free(t_hoa_2d_optim *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_optim_perform(t_hoa_2d_optim *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, nins); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_2d_optim_dsp(t_hoa_2d_optim *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_optim_perform, sp); +} + +extern "C" void setup_hoa0x2e2d0x2eoptim_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.optim~"), (t_newmethod)hoa_2d_optim_new, (t_method)hoa_2d_optim_free, + (size_t)sizeof(t_hoa_2d_optim), CLASS_DEFAULT, A_GIMME, 0); // A_FLOAT A_SYMBOL not supported + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_optim, f_f); + class_addmethod(c, (t_method)hoa_2d_optim_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_optim_new, gensym("hoa.optim~"), A_GIMME, 0); // A_FLOAT A_SYMBOL not supported + } + hoa_2d_optim_class = c; + hoa_sym_basic = gensym("basic"); + hoa_sym_maxRe = gensym("maxRe"); + hoa_sym_maxre = gensym("maxre"); + hoa_sym_inPhase = gensym("inPhase"); + hoa_sym_inphase = gensym("inphase"); +} + diff --git a/sources/2d/hoa.2d.process_tilde.c b/sources/2d/hoa.2d.process_tilde.c new file mode 100644 index 0000000..934964a --- /dev/null +++ b/sources/2d/hoa.2d.process_tilde.c @@ -0,0 +1,638 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#include "../hoa.pd.h" +#include +#include +#include + +static t_class* hoa_process_inlet_class; + +struct _hoa_process_inlet; + +typedef struct _hoa_process +{ + t_hoa_processor f_obj; + t_float f_f; + t_symbol* f_domain; + t_canvas* f_canvas; + t_object* f_block; + t_bangmethod f_method; + t_hoa_process_instance* f_instances; + size_t f_ninstances; + size_t f_target; + + size_t f_nins; + struct _hoa_process_inlet* f_ins; + size_t f_nsigout; + t_sample* f_sigout; + size_t f_nsigin; + t_sample* f_sigin; +} t_hoa_2d_process_tilde; + +typedef struct _hoa_process_inlet +{ + t_class* x_pd; + size_t x_index; + t_hoa_2d_process_tilde* x_owner; +} t_hoa_process_inlet; + + +static t_class* hoa_2d_process_tilde_class; +static t_symbol* hoa_sym_switch; +static t_symbol* hoa_sym_block; +static t_symbol* hoa_sym_obj; +static t_symbol* hoa_sym_harmonics; +static t_symbol* hoa_sym_planewaves; +static t_symbol* hoa_sym_2d; + +static void hoa_2d_process_tilde_perform(t_hoa_2d_process_tilde *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + size_t i; + memset(x->f_sigout, 0, nouts * (size_t)sampleframes * sizeof(t_sample)); + for(i = 0; i < nins; i++) + { + memcpy(x->f_sigin+i*sampleframes, ins[i], (size_t)sampleframes * sizeof(t_sample)); + } + x->f_method((t_pd *)x->f_block); + for(i = 0; i < nouts; i++) + { + memcpy(outs[i], x->f_sigout+i*sampleframes, (size_t)sampleframes * sizeof(t_sample)); + } +} + + +static void hoa_2d_process_tilde_dsp(t_hoa_2d_process_tilde *x, t_signal **sp) +{ + size_t i, j, offset, nsamples; + char hasin = 0, hasout = 0; + size_t nins = 0, nouts = 0; + char thasin, thasout; + size_t tnins, tnouts; + if(x->f_block && x->f_method) + { + for(i = 0; i < x->f_ninstances; ++i) + { + thasin = hoa_process_instance_has_inputs_sig_static(x->f_instances+i); + thasout = hoa_process_instance_has_outputs_sig_static(x->f_instances+i); + tnins = hoa_process_instance_get_ninputs_sig_extra(x->f_instances+i); + tnouts = hoa_process_instance_get_noutputs_sig_extra(x->f_instances+i); + + hasin = thasin != 0 ? 1 : hasin; + hasout = thasout != 0 ? 1 : hasout; + nins = tnins > nins ? tnins : nins; + nouts = tnouts > nouts ? tnouts : nouts; + } + + if(x->f_sigin && x->f_nsigin) + { + freebytes(x->f_sigin, x->f_nsigin * sizeof(t_sample)); + x->f_sigin = NULL; + x->f_nsigin = 0; + } + if(nins || hasin) + { + nsamples = (x->f_ninstances * (size_t)hasin + nins) * (size_t)sp[0]->s_n; + x->f_sigin = (t_sample *)getbytes(nsamples * sizeof(t_sample)); + if(x->f_sigin) + { + x->f_nsigin = nsamples; + if(hasin) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = i * (size_t)sp[0]->s_n; + hoa_process_instance_set_inlet_sig(x->f_instances+i, 0, x->f_sigin + nsamples); + } + } + if(nins) + { + offset = (size_t)hasin * x->f_ninstances; + for(j = 0; j < nins; ++j) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = (offset + j) * (size_t)sp[0]->s_n; + hoa_process_instance_set_inlet_sig(x->f_instances+i, j+1, x->f_sigin + nsamples); + } + } + } + } + else + { + pd_error(x, "hoa.2d.process~ can't allocate memory."); + return; + } + } + + + if(x->f_sigout && x->f_nsigout) + { + freebytes(x->f_sigout, x->f_nsigout * sizeof(t_sample)); + x->f_sigout = NULL; + x->f_nsigout = 0; + } + + if(nouts || hasout) + { + nsamples = (x->f_ninstances * (size_t)hasout + nouts) * (size_t)sp[0]->s_n; + x->f_sigout = (t_sample *)getbytes(nsamples * sizeof(t_sample)); + if(x->f_sigout) + { + x->f_nsigout = nsamples; + if(hasout) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = i * (size_t)sp[0]->s_n; + hoa_process_instance_set_outlet_sig(x->f_instances+i, 0, x->f_sigout + nsamples); + } + } + if(nouts) + { + offset = (size_t)hasout * x->f_ninstances; + for(j = 0; j < nouts; ++j) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = (offset + j) * (size_t)sp[0]->s_n; + hoa_process_instance_set_outlet_sig(x->f_instances+i, j+1, x->f_sigout + nsamples); + } + } + } + } + else + { + pd_error(x, "hoa.2d.process~ can't allocate memory."); + return; + } + } + + mess0((t_pd *)x->f_canvas, gensym("dsp")); + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_process_tilde_perform, sp); + } + else + { + pd_error(x, "hoa.2d.process~ not initialized can't compile DSP chain."); + } +} + +static void hoa_2d_process_tilde_click(t_hoa_2d_process_tilde *x) +{ + if(x->f_instances) + { + hoa_process_instance_show(x->f_instances); + } +} + +static void hoa_2d_process_tilde_open(t_hoa_2d_process_tilde *x, t_float f1, t_float f2) +{ + size_t i, index; + if(f1 < 0) + { + for(i = 0; i < x->f_ninstances; ++i) + { + hoa_process_instance_show(x->f_instances+i); + } + } + else + { + if(x->f_domain == hoa_sym_harmonics) + { + index = hoa_2d_get_index((size_t)f1, f2); + } + else + { + index = (size_t)f1; + } + if(index < x->f_ninstances) + { + hoa_process_instance_show(x->f_instances+index); + } + else + { + pd_error(x, "hoa.2d.process~: open argument out of bounds."); + } + } +} + +static void hoa_2d_process_tilde_target(t_hoa_2d_process_tilde *x, t_float f1, t_float f2) +{ + if(f1 < 0) + { + x->f_target = (size_t)-1; + } + else + { + if(x->f_domain == hoa_sym_harmonics) + { + x->f_target = hoa_2d_get_index((size_t)f1, f2); + } + else + { + x->f_target = (size_t)f1; + } + if(x->f_target >= x->f_ninstances) + { + x->f_target = -1; + pd_error(x, "hoa.2d.process~: open argument out of bounds."); + } + } +} + +static char hoa_2d_process_tilde_init(t_hoa_2d_process_tilde* x) +{ + t_atom av[3]; + x->f_block = (t_object *)NULL; + x->f_method = (t_bangmethod)NULL; + x->f_instances = (t_hoa_process_instance *)NULL; + x->f_canvas = canvas_new(NULL, gensym(""), 0, NULL); + x->f_ins = NULL; + x->f_nins = 0; + x->f_target = (size_t)-1; + x->f_sigout = NULL; + x->f_nsigout = 0; + if(x->f_canvas) + { + pd_popsym((t_pd *)x->f_canvas); + canvas_vis(x->f_canvas, 0); + SETFLOAT(av, 10.f); + SETFLOAT(av+1, 10.f); + SETSYMBOL(av+2, hoa_sym_switch); + + pd_typedmess((t_pd *)x->f_canvas, hoa_sym_obj, 3, av); + if(x->f_canvas->gl_list->g_pd->c_name == hoa_sym_block) + { + x->f_block = (t_object *)x->f_canvas->gl_list; + x->f_method = x->f_block->te_g.g_pd->c_bangmethod; + return 1; + } + } + return 0; +} + + +static char hoa_2d_process_tilde_load_planewaves(t_hoa_2d_process_tilde* x, size_t nplws, t_symbol* name, int argc, t_atom *argv) +{ + int ac; + t_atom* av; + size_t i; + size_t ninstance = nplws; + x->f_instances = (t_hoa_process_instance *)getbytes(nplws * sizeof(t_hoa_process_instance)); + if(x->f_instances) + { + ac = 4 + argc; + av = (t_atom *)getbytes(ac * sizeof(t_atom)); + if(ac && av) + { + SETSYMBOL(av, hoa_sym_2d); + SETSYMBOL(av+1, hoa_sym_planewaves); + SETFLOAT(av+2, (float)nplws); + memcpy(av+4, argv, argc * sizeof(t_atom)); + for(i = 0; i < ninstance; ++i) + { + SETFLOAT(av+3, (float)i); + if(!hoa_process_instance_init(x->f_instances+i, x->f_canvas, name, ac, av)) + { + freebytes(av, ac * sizeof(t_atom)); + freebytes(x->f_instances, nplws * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + } + x->f_ninstances = ninstance; + freebytes(av, ac * sizeof(t_atom)); + return 1; + } + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + return 0; +} + +static char hoa_2d_process_tilde_load_harmonics(t_hoa_2d_process_tilde* x, size_t order, t_symbol* name, int argc, t_atom *argv) +{ + int ac; + t_atom* av; + size_t i; + size_t ninstance = hoa_2d_get_number_of_harmonics(order); + x->f_instances = (t_hoa_process_instance *)getbytes(ninstance * sizeof(t_hoa_process_instance)); + if(x->f_instances) + { + ac = 5 + argc; + av = (t_atom *)getbytes(ac * sizeof(t_atom)); + if(ac && av) + { + SETSYMBOL(av, hoa_sym_2d); + SETSYMBOL(av+1, hoa_sym_harmonics); + SETFLOAT(av+2, (float)order); + memcpy(av+5, argv, argc * sizeof(t_atom)); + for(i = 0; i < ninstance; ++i) + { + SETFLOAT(av+3, (float)hoa_2d_get_degree(i)); + SETFLOAT(av+4, (float)hoa_2d_get_azimuthal_order(i)); + if(!hoa_process_instance_init(x->f_instances+i, x->f_canvas, name, ac, av)) + { + freebytes(av, ac * sizeof(t_atom)); + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + } + x->f_ninstances = ninstance; + freebytes(av, ac * sizeof(t_atom)); + return 1; + } + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + return 0; +} + +static void hoa_2d_process_tilde_alloc_inlets(t_hoa_2d_process_tilde* x) +{ + size_t i = 0; + size_t ninlets = 0, newval = 0; + + for(i = 0; i < x->f_ninstances; ++i) + { + newval = hoa_process_instance_get_ninputs(x->f_instances+i); + if(newval > ninlets) + { + ninlets = newval; + } + } + if(ninlets) + { + x->f_ins = (t_hoa_process_inlet *)getbytes(ninlets * sizeof(t_hoa_process_inlet)); + if(x->f_ins) + { + x->f_nins = ninlets; + for(i = 0; i < x->f_nins; ++i) + { + x->f_ins[i].x_index = i+1; + x->f_ins[i].x_pd = hoa_process_inlet_class; + x->f_ins[i].x_owner = x; + inlet_new((t_object *)x, &(x->f_ins[i].x_pd), 0, 0); + } + } + } +} + +static void hoa_2d_process_tilde_alloc_outlets(t_hoa_2d_process_tilde* x) +{ + size_t i = 0, j = 0; + size_t noutlets = 0, newval = 0; + t_outlet* outlet; + for(i = 0; i < x->f_ninstances; ++i) + { + newval = hoa_process_instance_get_noutputs(x->f_instances+i); + if(newval > noutlets) + { + noutlets = newval; + } + } + for(i = 0; i < noutlets; ++i) + { + outlet = outlet_new((t_object *)x, NULL); + for(j = 0; j < x->f_ninstances; ++j) + { + hoa_process_instance_set_outlet(x->f_instances+j, i+1, outlet); + } + } +} + +static void hoa_2d_process_tilde_alloc_signals(t_hoa_2d_process_tilde* x) +{ + size_t i; + char hasin = 0, hasout = 0; + size_t nins = 0, nouts = 0; + char thasin, thasout; + size_t tnins, tnouts; + for(i = 0; i < x->f_ninstances; ++i) + { + thasin = hoa_process_instance_has_inputs_sig_static(x->f_instances+i); + thasout = hoa_process_instance_has_outputs_sig_static(x->f_instances+i); + tnins = hoa_process_instance_get_ninputs_sig_extra(x->f_instances+i); + tnouts = hoa_process_instance_get_noutputs_sig_extra(x->f_instances+i); + + hasin = thasin != 0 ? 1 : hasin; + hasout = thasout != 0 ? 1 : hasout; + nins = tnins > nins ? tnins : nins; + nouts = tnouts > nouts ? tnouts : nouts; + } + + hoa_processor_init(x, x->f_ninstances * (size_t)hasin + nins, x->f_ninstances * (size_t)hasout + nouts); +} + +static void hoa_2d_process_tilde_free(t_hoa_2d_process_tilde *x) +{ + if(x->f_canvas) + { + canvas_free(x->f_canvas); + } + if(x->f_instances && x->f_ninstances) + { + freebytes(x->f_instances, x->f_ninstances * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + } + if(x->f_ins && x->f_nins) + { + freebytes(x->f_ins, x->f_nins * sizeof(t_hoa_process_inlet)); + x->f_ins = NULL; + } + if(x->f_sigout && x->f_nsigout) + { + freebytes(x->f_sigout, x->f_nsigout * sizeof(t_sample)); + x->f_sigout = NULL; + } + hoa_processor_clear(x); +} + +static void *hoa_2d_process_tilde_new(t_symbol *s, int argc, t_atom *argv) +{ + size_t order, nplws; + t_symbol *patch, *domain; + + t_canvas* current = canvas_getcurrent(); + t_hoa_2d_process_tilde *x = (t_hoa_2d_process_tilde *)pd_new(hoa_2d_process_tilde_class); + if(x) + { + patch = atom_getsymbolarg(1, argc, argv); + domain = atom_getsymbolarg(2, argc, argv); + if(hoa_2d_process_tilde_init(x)) + { + if(patch) + { + if(domain == hoa_sym_harmonics) + { + order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + if(!hoa_2d_process_tilde_load_harmonics(x, order, patch, argc < 3 ? 0 : argc-3, argv+3)) + { + pd_error(x, "hoa.2d.process~: can't load the patch %s.pd.", patch->s_name); + } + x->f_domain = hoa_sym_harmonics; + } + else + { + nplws = hoa_processor_clip_nplanewaves(x, (size_t)atom_getfloatarg(0, argc, argv)); + if(!hoa_2d_process_tilde_load_planewaves(x, nplws, patch, argc < 3 ? 0 : argc-3, argv+3)) + { + pd_error(x, "hoa.2d.process~: can't load the patch %s.pd.", patch->s_name); + } + if(domain != hoa_sym_planewaves) + { + pd_error(x, "hoa.2d.process~: bad argument, third argument must harmonics or planewaves."); + } + x->f_domain = hoa_sym_planewaves; + } + hoa_2d_process_tilde_alloc_signals(x); + hoa_2d_process_tilde_alloc_inlets(x); + hoa_2d_process_tilde_alloc_outlets(x); + } + else + { + pd_error(x, "hoa.2d.process~: bad argument, second argument must be a patch name."); + } + } + } + canvas_setcurrent(current); + return x; +} + + + + + + + + +static void hoa_process_inlet_bang(t_hoa_process_inlet *x) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_bang(x->x_owner->f_instances+target, x->x_index); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_bang(x->x_owner->f_instances+i, x->x_index); + } + } +} + +static void hoa_process_inlet_float(t_hoa_process_inlet *x, float f) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_float(x->x_owner->f_instances+target, x->x_index, f); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_float(x->x_owner->f_instances+i, x->x_index, f); + } + } +} + +static void hoa_process_inlet_symbol(t_hoa_process_inlet *x, t_symbol* s) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_symbol(x->x_owner->f_instances+target, x->x_index, s); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_symbol(x->x_owner->f_instances+i, x->x_index, s); + } + } +} + +static void hoa_process_inlet_list(t_hoa_process_inlet *x, t_symbol* s, int argc, t_atom* argv) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_list(x->x_owner->f_instances+target, x->x_index, s, argc, argv); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_list(x->x_owner->f_instances+i, x->x_index, s, argc, argv); + } + } +} + +static void hoa_process_inlet_anything(t_hoa_process_inlet *x, t_symbol* s, int argc, t_atom* argv) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_anything(x->x_owner->f_instances+target, x->x_index, s, argc, argv); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_anything(x->x_owner->f_instances+i, x->x_index, s, argc, argv); + } + } +} + +extern void setup_hoa0x2e2d0x2eprocess_tilde(void) +{ + t_class* c = class_new(gensym("hoa.2d.process~"), (t_newmethod)hoa_2d_process_tilde_new, (t_method)hoa_2d_process_tilde_free, + (size_t)sizeof(t_hoa_2d_process_tilde), CLASS_DEFAULT, A_GIMME, 0); + + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_process_tilde, f_f); + class_addcreator((t_newmethod)hoa_2d_process_tilde_new, gensym("hoa.process~"), A_GIMME, 0); + class_addmethod(c, (t_method)hoa_2d_process_tilde_click, gensym("click"), A_NULL, 0); + class_addmethod(c, (t_method)hoa_2d_process_tilde_open, gensym("open"), A_FLOAT, A_DEFFLOAT, 0); + class_addmethod(c, (t_method)hoa_2d_process_tilde_target, gensym("target"), A_FLOAT, A_DEFFLOAT, 0); + class_addmethod(c, (t_method)hoa_2d_process_tilde_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_2d_process_tilde_class = c; + + hoa_sym_switch = gensym("switch~"); + hoa_sym_block = gensym("block~"); + hoa_sym_obj = gensym("obj"); + hoa_sym_harmonics = gensym("harmonics"); + hoa_sym_planewaves = gensym("planewaves"); + hoa_sym_2d = gensym("2d"); + + hoa_process_instance_setup(); + + c = class_new(gensym("hoa.2d.process.inlet"), 0, 0, sizeof(t_hoa_process_inlet), CLASS_PD, 0); + if(c) + { + class_addbang(c, (t_method)hoa_process_inlet_bang); + class_addfloat(c, (t_method)hoa_process_inlet_float); + class_addsymbol(c, (t_method)hoa_process_inlet_symbol); + class_addlist(c, (t_method)hoa_process_inlet_list); + class_addanything(c,(t_method)hoa_process_inlet_anything); + } + hoa_process_inlet_class = c; +} + diff --git a/sources/2d/hoa.2d.projector_tilde.cpp b/sources/2d/hoa.2d.projector_tilde.cpp new file mode 100644 index 0000000..10267be --- /dev/null +++ b/sources/2d/hoa.2d.projector_tilde.cpp @@ -0,0 +1,81 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_projector +{ + t_hoa_processor f_obj; + float f_f; + hoa::DecoderRegular* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_2d_projector; + +static t_class *hoa_2d_projector_class; + +static void *hoa_2d_projector_new(t_float f1, t_float f2) +{ + t_hoa_2d_projector *x = (t_hoa_2d_projector *)pd_new(hoa_2d_projector_class); + if(x) + { + const size_t order = (size_t)(f1) < 1 ? 1 : (size_t)(f1); + const size_t nplws = (size_t)(f2) < (order * 2 + 1) ? (order * 2 + 1) : (size_t)(f2); + x->f_processor = new hoa::DecoderRegular(order, nplws); + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfPlanewaves() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics(), x->f_processor->getNumberOfPlanewaves()); + } + return x; +} + +static void hoa_2d_projector_free(t_hoa_2d_projector *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_projector_perform(t_hoa_2d_projector *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, nins); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_2d_projector_dsp(t_hoa_2d_projector *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_projector_perform, sp); +} + +extern "C" void setup_hoa0x2e2d0x2eprojector_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.projector~"), (t_newmethod)hoa_2d_projector_new, (t_method)hoa_2d_projector_free, + (size_t)sizeof(t_hoa_2d_projector), CLASS_DEFAULT, A_FLOAT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_projector, f_f); + class_addmethod(c, (t_method)hoa_2d_projector_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_projector_new, gensym("hoa.projector~"), A_FLOAT, A_FLOAT, 0); + } + hoa_2d_projector_class = c; +} diff --git a/sources/2d/hoa.2d.recomposer_tilde.cpp b/sources/2d/hoa.2d.recomposer_tilde.cpp new file mode 100644 index 0000000..1b00d0d --- /dev/null +++ b/sources/2d/hoa.2d.recomposer_tilde.cpp @@ -0,0 +1,212 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_recomposer +{ + t_hoa_processor f_obj; + t_float f_f; + hoa::MultiEncoder* f_processor; + hoa::PolarLines* f_lines; + t_sample* f_lines_vector; + t_sample* f_ins; + t_sample* f_outs; + t_symbol* f_mode; + t_sample f_ramp; + +} t_hoa_2d_recomposer; + +static t_class *hoa_2d_recomposer_class; +static t_symbol* hoa_sym_fixe; +static t_symbol* hoa_sym_fisheye; +static t_symbol* hoa_sym_free; + +static void *hoa_2d_recomposer_new(t_symbol *s, int argc, t_atom *argv) +{ + t_hoa_2d_recomposer *x = (t_hoa_2d_recomposer *)pd_new(hoa_2d_recomposer_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + size_t nplws = atom_getfloatarg(1, argc, argv); + if(nplws < order * 2 + 1) + { + pd_error(x, "hoa.2d.recomposer~: bad argument : number of planewaves must be at least 2 * order + 1."); + nplws = order * 2 + 1; + } + x->f_mode = atom_getsymbolarg(2, argc, argv); + x->f_processor = new hoa::MultiEncoder(order, nplws); + if(x->f_mode == hoa_sym_free) + { + x->f_lines = new hoa::PolarLines(nplws); + x->f_lines->setRamp(0.1 * sys_getsr()); + for(size_t i = 0; i < x->f_processor->getNumberOfSources(); i++) + { + x->f_lines->setRadiusDirect(i, x->f_processor->getWidening(i)); + x->f_lines->setAzimuthDirect(i, x->f_processor->getAzimuth(i)); + } + + x->f_lines_vector = hoa::Signal::alloc(x->f_processor->getNumberOfSources() * 2); + } + if(x->f_mode != hoa_sym_free && x->f_mode != hoa_sym_fisheye && x->f_mode != hoa_sym_fixe) + { + pd_error(x, "hoa.2d.recomposer~: bad argument : mode must be fixe, free or fisheye."); + x->f_mode = hoa_sym_fixe; + } + + x->f_ramp = 100; + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfSources() * 81092]; + hoa_processor_init(x, + x->f_processor->getNumberOfSources() + static_cast(x->f_mode == hoa_sym_fisheye), + x->f_processor->getNumberOfHarmonics()); + } + + return x; +} + +static void hoa_2d_recomposer_free(t_hoa_2d_recomposer *x) +{ + hoa_processor_clear(x); + if(x->f_mode == hoa_sym_free) + { + delete x->f_lines; + hoa::Signal::free(x->f_lines_vector); + } + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_recomposer_angle(t_hoa_2d_recomposer *x, t_symbol *s, int argc, t_atom *argv) +{ + for(size_t i = 0; i < x->f_processor->getNumberOfSources() && i < size_t(argc); i++) + { + x->f_lines->setAzimuth(i, atom_getfloatarg(i, argc, argv)); + } +} + +static void hoa_2d_recomposer_wide(t_hoa_2d_recomposer *x, t_symbol *s, int argc, t_atom *argv) +{ + for(size_t i = 0; i < x->f_processor->getNumberOfSources() && i < size_t(argc); i++) + { + x->f_lines->setRadius(i, atom_getfloatarg(i, argc, argv)); + } +} + +static void hoa_2d_recomposer_perform_fixe(t_hoa_2d_recomposer *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + hoa::MultiEncoder* proc = static_cast< hoa::MultiEncoder* >(x->f_processor); + for(size_t i = 0; i < nins; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, size_t(nins)); + } + for(size_t i = 0; i < sampleframes; i++) + { + proc->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +static void hoa_2d_recomposer_perform_fisheye(t_hoa_2d_recomposer *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + const size_t numberOfPlanewaves = nins - 1; + hoa::MultiEncoder* proc = static_cast< hoa::MultiEncoder* >(x->f_processor); + for(size_t i = 0; i < numberOfPlanewaves; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, numberOfPlanewaves); + } + for(size_t i = 0; i < sampleframes; i++) + { + proc->setFisheye(ins[numberOfPlanewaves][i]); + proc->process(x->f_ins + numberOfPlanewaves * i, x->f_outs + size_t(nouts) * i); + } + for(long i = 0; i < nouts; i++) + { + hoa::Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +static void hoa_2d_recomposer_perform_free(t_hoa_2d_recomposer *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + hoa::MultiEncoder* proc = static_cast< hoa::MultiEncoder* >(x->f_processor); + for(size_t i = 0; i < size_t(nins); i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, nins); + } + for(size_t i = 0; i < size_t(sampleframes); i++) + { + x->f_lines->process(x->f_lines_vector); + for(size_t j = 0; j < nins; j++) + proc->setWidening(j, x->f_lines_vector[j]); + for(size_t j = 0; j < nins; j++) + proc->setAzimuth(j, x->f_lines_vector[j + nins]); + proc->process(x->f_ins + nins * i, x->f_outs + size_t(nouts) * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +static void hoa_2d_recomposer_dsp(t_hoa_2d_recomposer *x, t_signal **sp) +{ + if(x->f_mode == hoa_sym_fixe) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_recomposer_perform_fixe, sp); + } + else if(x->f_mode == hoa_sym_fisheye) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_recomposer_perform_fisheye, sp); + } + else if(x->f_mode == hoa_sym_free) + { + x->f_lines->setRamp(x->f_ramp / 1000. * sp[0]->s_sr); + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_recomposer_perform_free, sp); + } +} + +static void hoa_2d_recomposer_ramp(t_hoa_2d_recomposer *x, t_float f) +{ + x->f_ramp = (f < 0.) ? 0. : f; + x->f_lines->setRamp(x->f_ramp / 1000. * sys_getsr()); +} + +extern "C" void setup_hoa0x2e2d0x2erecomposer_tilde(void) +{ + t_class* c = class_new(gensym("hoa.2d.recomposer~"), (t_newmethod)hoa_2d_recomposer_new, (t_method)hoa_2d_recomposer_free, + (size_t)sizeof(t_hoa_2d_recomposer), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_recomposer, f_f); + class_addcreator((t_newmethod)hoa_2d_recomposer_new, gensym("hoa.recomposer~"), A_GIMME, 0); + class_addmethod(c, (t_method)hoa_2d_recomposer_dsp, gensym("dsp"), A_CANT, 0); + class_addmethod(c, (t_method)hoa_2d_recomposer_angle, gensym("angle"), A_GIMME,0); + class_addmethod(c, (t_method)hoa_2d_recomposer_wide, gensym("wide"), A_GIMME,0); + class_addmethod(c, (t_method)hoa_2d_recomposer_ramp, gensym("ramp"), A_FLOAT,0); + } + + hoa_sym_fixe = gensym("fixe"); + hoa_sym_fisheye = gensym("fisheye"); + hoa_sym_free = gensym("free"); + hoa_2d_recomposer_class = c; +} + + + diff --git a/sources/2d/hoa.2d.rotate_tilde.cpp b/sources/2d/hoa.2d.rotate_tilde.cpp new file mode 100644 index 0000000..0e2bb50 --- /dev/null +++ b/sources/2d/hoa.2d.rotate_tilde.cpp @@ -0,0 +1,81 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_rotate +{ + t_hoa_processor f_obj; + float f_f; + hoa::Rotate* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_2d_rotate; + +static t_class *hoa_2d_rotate_class; + +static void *hoa_2d_rotate_new(t_float f) +{ + t_hoa_2d_rotate *x = (t_hoa_2d_rotate *)pd_new(hoa_2d_rotate_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)f); + x->f_processor = new hoa::Rotate(order); + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics() + 1, x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_2d_rotate_free(t_hoa_2d_rotate *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_rotate_perform(t_hoa_2d_rotate *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins - 1; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, (nins - 1)); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->setYaw(ins[nins - 1][i]); + x->f_processor->process(x->f_ins + (nins - 1) * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_2d_rotate_dsp(t_hoa_2d_rotate *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_rotate_perform, sp); +} + +extern "C" void setup_hoa0x2e2d0x2erotate_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.rotate~"), (t_newmethod)hoa_2d_rotate_new, (t_method)hoa_2d_rotate_free, + (size_t)sizeof(t_hoa_2d_rotate), CLASS_DEFAULT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_rotate, f_f); + class_addmethod(c, (t_method)hoa_2d_rotate_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_rotate_new, gensym("hoa.rotate~"), A_FLOAT, 0); + } + hoa_2d_rotate_class = c; +} diff --git a/sources/2d/hoa.2d.wider_tilde.cpp b/sources/2d/hoa.2d.wider_tilde.cpp new file mode 100644 index 0000000..fa5b5d3 --- /dev/null +++ b/sources/2d/hoa.2d.wider_tilde.cpp @@ -0,0 +1,81 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_2d_wider +{ + t_hoa_processor f_obj; + float f_f; + hoa::Wider* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_2d_wider; + +static t_class *hoa_2d_wider_class; + +static void *hoa_2d_wider_new(t_float f) +{ + t_hoa_2d_wider *x = (t_hoa_2d_wider *)pd_new(hoa_2d_wider_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)f); + x->f_processor = new hoa::Wider(order); + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics() + 1, x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_2d_wider_free(t_hoa_2d_wider *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_2d_wider_perform(t_hoa_2d_wider *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins - 1; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, (nins - 1)); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->setWidening(ins[nins - 1][i]); + x->f_processor->process(x->f_ins + (nins - 1) * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_2d_wider_dsp(t_hoa_2d_wider *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_2d_wider_perform, sp); +} + +extern "C" void setup_hoa0x2e2d0x2ewider_tilde(void) +{ + t_class *c = class_new(gensym("hoa.2d.wider~"), (t_newmethod)hoa_2d_wider_new, (t_method)hoa_2d_wider_free, + (size_t)sizeof(t_hoa_2d_wider), CLASS_DEFAULT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_2d_wider, f_f); + class_addmethod(c, (t_method)hoa_2d_wider_dsp, gensym("dsp"), A_CANT, 0); + class_addcreator((t_newmethod)hoa_2d_wider_new, gensym("hoa.wider~"), A_FLOAT, 0); + } + hoa_2d_wider_class = c; +} diff --git a/sources/3d/hoa.3d.decoder_tilde.cpp b/sources/3d/hoa.3d.decoder_tilde.cpp new file mode 100644 index 0000000..f00a42b --- /dev/null +++ b/sources/3d/hoa.3d.decoder_tilde.cpp @@ -0,0 +1,286 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_3d_decoder +{ + t_hoa_processor f_obj; + float f_f; + hoa::Decoder* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_3d_decoder; + +static t_class *hoa_3d_decoder_class; +static t_symbol* hoa_sym_regular; +static t_symbol* hoa_sym_irregular; +static t_symbol* hoa_sym_binaural; + +static t_symbol* hoa_sym_tcrop; +static t_symbol* hoa_sym_acrop; + +static t_symbol* hoa_sym_toffset; +static t_symbol* hoa_sym_aoffset; + +static t_symbol* hoa_sym_tangles; +static t_symbol* hoa_sym_aangles; + +static void *hoa_3d_decoder_new(t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_3d_decoder *x = (t_hoa_3d_decoder *)pd_new(hoa_3d_decoder_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + const t_symbol* mode = atom_getsymbolarg(1, argc, argv); + if(mode == hoa_sym_regular) + { + size_t nplws = atom_getfloatarg(2, argc, argv); + if(nplws < order * 2 + 1) + { + pd_error(x, "hoa.3d.decoder~: bad argument : number of planewaves must be at least 2 * order + 1."); + nplws = order * 2 + 1; + } + x->f_processor = new hoa::DecoderRegular(order, nplws); + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_toffset || atom_getsymbol(argv+i) == hoa_sym_aoffset) + { + if(i+3 < argc && + argv[i+1].a_type == A_FLOAT && + argv[i+2].a_type == A_FLOAT && + argv[i+3].a_type == A_FLOAT) + { + x->f_processor->setPlanewavesRotation(atom_getfloat(argv+i+1) / 360. * HOA_2PI, + atom_getfloat(argv+i+2) / 360. * HOA_2PI, + atom_getfloat(argv+i+3) / 360. * HOA_2PI); + } + else + { + pd_error(x, "hoa.3d.decoder~: -offset bad argument for the attribute."); + } + } + break; + } + } + + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_tangles || atom_getsymbol(argv+i) == hoa_sym_aangles) + { + for(int j = i+1, k = 0; j+1 < argc && k < (int)nplws; i+=2, ++j) + { + if(argv[j].a_type == A_FLOAT && argv[j+1].a_type == A_FLOAT) + { + x->f_processor->setPlanewaveAzimuth(size_t(k), atom_getfloat(argv+j) / 360. * HOA_2PI); + x->f_processor->setPlanewaveElevation(size_t(k), atom_getfloat(argv+j+1) / 360. * HOA_2PI); + } + else + { + pd_error(x, "hoa.3d.decoder~: -angles bad argument for the attribute."); + } + } + } + break; + } + } + x->f_processor->setPlanewavesRotation(0., 0., atom_getfloatarg(3, argc, argv) / 360. * HOA_2PI); + } + else if(mode == hoa_sym_irregular) + { + pd_error(x, "hoa.3d.decoder~: irregular mode not available"); + return NULL; + size_t nplws = atom_getfloatarg(2, argc, argv); + if(nplws < 1) + { + pd_error(x, "hoa.3d.decoder~: bad argument : number of planewaves must be at least 1."); + nplws = 1; + } + //x->f_processor = new hoa::DecoderIrregular(order, nplws); + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_toffset || atom_getsymbol(argv+i) == hoa_sym_aoffset) + { + if(i+1 < argc && argv[i+1].a_type == A_FLOAT) + { + x->f_processor->setPlanewavesRotation(0, 0,atom_getfloat(argv+i+1)); + } + else + { + pd_error(x, "hoa.3d.decoder~: -offset bad argument for the attribute."); + } + } + break; + } + } + + for(int i = 3; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_tangles || atom_getsymbol(argv+i) == hoa_sym_aangles) + { + for(int j = i+1, k = 0; j < argc && k < (int)nplws; ++i, ++j) + { + if(argv[j].a_type == A_FLOAT) + { + x->f_processor->setPlanewaveAzimuth(size_t(k), atom_getfloat(argv+j) / 360. * HOA_2PI); + } + else + { + pd_error(x, "hoa.3d.decoder~: -angles bad argument for the attribute."); + } + } + } + break; + } + } + } + else + { + x->f_processor = new hoa::DecoderBinaural(order); + if(mode != hoa_sym_binaural) + { + pd_error(x, "hoa.3d.decoder~: bad argument : mode must be regular, irregular or binaural."); + } + for(int i = 2; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + if(atom_getsymbol(argv+i) == hoa_sym_tcrop || atom_getsymbol(argv+i) == hoa_sym_acrop) + { + if(i+1 < argc && argv[i+1].a_type == A_FLOAT) + { + reinterpret_cast *>(x->f_processor)->setCropSize(atom_getfloat(argv+i+1)); + } + else + { + pd_error(x, "hoa.3d.decoder~: -crop bad argument for the attribute."); + } + } + break; + } + } + } + + + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfPlanewaves() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics(), x->f_processor->getNumberOfPlanewaves()); + } + return x; +} + +static void hoa_3d_decoder_free(t_hoa_3d_decoder *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_3d_decoder_perform_regular(t_hoa_3d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < nins; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, size_t(nins)); + } + for(long i = 0; i < sampleframes; i++) + { + (static_cast*>(x->f_processor))->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa:: Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + +/* +static void hoa_3d_decoder_perform_irregular(t_hoa_3d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < nins; i++) + { + hoa::Signal::copy(size_t(sampleframes), ins[i], 1, x->f_ins+i, size_t(nins)); + } + for(long i = 0; i < sampleframes; i++) + { + (static_cast*>(x->f_processor))->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa::Signal::copy(size_t(sampleframes), x->f_outs+i, size_t(nouts), outs[i], 1); + } +} + */ + +static void hoa_3d_decoder_perform_binaural(t_hoa_3d_decoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + (static_cast*>(x->f_processor))->processBlock((const t_sample**)ins, outs); +} + + + +static void hoa_3d_decoder_dsp(t_hoa_3d_decoder *x, t_signal **sp) +{ + x->f_processor->prepare((size_t)sp[0]->s_n); + if(x->f_processor->getMode() == hoa::Decoder::BinauralMode) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_decoder_perform_binaural, sp); + }/* + else if(x->f_processor->getMode() == hoa::Decoder::IrregularMode) + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_decoder_perform_irregular, sp); + }*/ + else + { + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_decoder_perform_regular, sp); + } +} + +extern "C" void setup_hoa0x2e3d0x2edecoder_tilde(void) +{ + t_class *c = class_new(gensym("hoa.3d.decoder~"), (t_newmethod)hoa_3d_decoder_new, (t_method)hoa_3d_decoder_free, + (size_t)sizeof(t_hoa_3d_decoder), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_3d_decoder, f_f); + class_addmethod(c, (t_method)hoa_3d_decoder_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_3d_decoder_class = c; + + hoa_sym_regular = gensym("regular"); + hoa_sym_irregular = gensym("irregular"); + hoa_sym_binaural = gensym("binaural"); + + hoa_sym_tcrop = gensym("-crop"); + hoa_sym_acrop = gensym("@crop"); + + hoa_sym_toffset = gensym("-offset"); + hoa_sym_aoffset = gensym("@offset"); + + hoa_sym_tangles = gensym("-angles"); + hoa_sym_aangles = gensym("@angles"); +} + + + + diff --git a/sources/3d/hoa.3d.encoder_tilde.cpp b/sources/3d/hoa.3d.encoder_tilde.cpp new file mode 100644 index 0000000..1169a45 --- /dev/null +++ b/sources/3d/hoa.3d.encoder_tilde.cpp @@ -0,0 +1,97 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_3d_encoder +{ + t_hoa_processor f_obj; + float f_f; + hoa::Encoder* f_processor; + t_sample* f_signals; +} t_hoa_3d_encoder; + +static t_class *hoa_3d_encoder_class; + +static void *hoa_3d_encoder_new(t_float f) +{ + t_hoa_3d_encoder *x = (t_hoa_3d_encoder *)pd_new(hoa_3d_encoder_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)f); + x->f_processor = new hoa::Encoder(order); + x->f_signals = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, 3, x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_3d_encoder_free(t_hoa_3d_encoder *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_signals; +} + +static inline t_sample hoa_3d_encoder_wrap_pi(t_sample value) +{ + while(value < (t_sample)(-HOA_PI)) + { + value += (t_sample)(HOA_2PI); + } + while(value >= HOA_PI) + { + value -= (t_sample)(HOA_2PI); + } + return value; +} + +static void hoa_3d_encoder_perform(t_hoa_3d_encoder *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(long i = 0; i < sampleframes; i++) + { + const t_sample azimuth = ins[1][i]; + const t_sample elevation = hoa_3d_encoder_wrap_pi(ins[2][i]); + if(elevation >= -HOA_PI2 && elevation <= HOA_PI2) + { + x->f_processor->setAzimuth(azimuth); + x->f_processor->setElevation(elevation); + } + else + { + x->f_processor->setAzimuth(azimuth + HOA_PI); + x->f_processor->setElevation(elevation); + } + x->f_processor->process(ins[0]+i, x->f_signals + nouts * i); + } + for(long i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_signals+i, nouts, outs[i], 1); + } +} + +static void hoa_3d_encoder_dsp(t_hoa_3d_encoder *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_encoder_perform, sp); +} + +extern "C" void setup_hoa0x2e3d0x2eencoder_tilde(void) +{ + t_class *c = class_new(gensym("hoa.3d.encoder~"), (t_newmethod)hoa_3d_encoder_new, (t_method)hoa_3d_encoder_free, + (size_t)sizeof(t_hoa_3d_encoder), CLASS_DEFAULT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_3d_encoder, f_f); + class_addmethod(c, (t_method)hoa_3d_encoder_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_3d_encoder_class = c; +} diff --git a/Sources/hoa.map_tilde.cpp b/sources/3d/hoa.3d.map_tilde.cpp similarity index 99% rename from Sources/hoa.map_tilde.cpp rename to sources/3d/hoa.3d.map_tilde.cpp index 57870fa..1a404fa 100644 --- a/Sources/hoa.map_tilde.cpp +++ b/sources/3d/hoa.3d.map_tilde.cpp @@ -1,5 +1,5 @@ /* - // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. + // Copyright (c) 2012-2015 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. // For information on usage and redistribution, and for a DISCLAIMER OF ALL // WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ diff --git a/sources/3d/hoa.3d.optim_tilde.cpp b/sources/3d/hoa.3d.optim_tilde.cpp new file mode 100644 index 0000000..dc8c9d8 --- /dev/null +++ b/sources/3d/hoa.3d.optim_tilde.cpp @@ -0,0 +1,108 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_3d_optim +{ + t_hoa_processor f_obj; + float f_f; + hoa::Optim* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_3d_optim; + +static t_class *hoa_3d_optim_class; +static t_symbol* hoa_sym_basic; +static t_symbol* hoa_sym_maxRe; +static t_symbol* hoa_sym_maxre; +static t_symbol* hoa_sym_inPhase; +static t_symbol* hoa_sym_inphase; + +static void *hoa_3d_optim_new(t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_3d_optim *x = (t_hoa_3d_optim *)pd_new(hoa_3d_optim_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + s = atom_getsymbolarg(1, argc, argv); + x->f_processor = new hoa::Optim(order); + if(s == hoa_sym_basic) + { + x->f_processor->setMode(hoa::Optim::Basic); + } + else if(s == hoa_sym_maxRe || s == hoa_sym_maxre) + { + x->f_processor->setMode(hoa::Optim::MaxRe); + } + else + { + x->f_processor->setMode(hoa::Optim::InPhase); + if(s != hoa_sym_inPhase || s == hoa_sym_inphase) + { + pd_error(x, "hoa.3d.optim: bad argument."); + } + } + + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics(), x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_3d_optim_free(t_hoa_3d_optim *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_3d_optim_perform(t_hoa_3d_optim *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, nins); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->process(x->f_ins + nins * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_3d_optim_dsp(t_hoa_3d_optim *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_optim_perform, sp); +} + +extern "C" void setup_hoa0x2e3d0x2eoptim_tilde(void) +{ + t_class *c = class_new(gensym("hoa.3d.optim~"), (t_newmethod)hoa_3d_optim_new, (t_method)hoa_3d_optim_free, + (size_t)sizeof(t_hoa_3d_optim), CLASS_DEFAULT, A_GIMME, 0); // A_FLOAT A_SYMBOL not supported + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_3d_optim, f_f); + class_addmethod(c, (t_method)hoa_3d_optim_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_3d_optim_class = c; + hoa_sym_basic = gensym("basic"); + hoa_sym_maxRe = gensym("maxRe"); + hoa_sym_maxre = gensym("maxre"); + hoa_sym_inPhase = gensym("inPhase"); + hoa_sym_inphase = gensym("inphase"); +} + diff --git a/sources/3d/hoa.3d.process_tilde.c b/sources/3d/hoa.3d.process_tilde.c new file mode 100644 index 0000000..70abb05 --- /dev/null +++ b/sources/3d/hoa.3d.process_tilde.c @@ -0,0 +1,637 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#include "../hoa.pd.h" +#include +#include +#include + +static t_class* hoa_process_inlet_class; + +struct _hoa_process_inlet; + +typedef struct _hoa_process +{ + t_hoa_processor f_obj; + t_float f_f; + t_symbol* f_domain; + t_canvas* f_canvas; + t_object* f_block; + t_bangmethod f_method; + t_hoa_process_instance* f_instances; + size_t f_ninstances; + size_t f_target; + + size_t f_nins; + struct _hoa_process_inlet* f_ins; + size_t f_nsigout; + t_sample* f_sigout; + size_t f_nsigin; + t_sample* f_sigin; +} t_hoa_3d_process_tilde; + +typedef struct _hoa_process_inlet +{ + t_class* x_pd; + size_t x_index; + t_hoa_3d_process_tilde* x_owner; +} t_hoa_process_inlet; + + +static t_class* hoa_3d_process_tilde_class; +static t_symbol* hoa_sym_switch; +static t_symbol* hoa_sym_block; +static t_symbol* hoa_sym_obj; +static t_symbol* hoa_sym_harmonics; +static t_symbol* hoa_sym_planewaves; +static t_symbol* hoa_sym_3d; + +static void hoa_3d_process_tilde_perform(t_hoa_3d_process_tilde *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + size_t i; + memset(x->f_sigout, 0, nouts * (size_t)sampleframes * sizeof(t_sample)); + for(i = 0; i < nins; i++) + { + memcpy(x->f_sigin+i*sampleframes, ins[i], (size_t)sampleframes * sizeof(t_sample)); + } + x->f_method((t_pd *)x->f_block); + for(i = 0; i < nouts; i++) + { + memcpy(outs[i], x->f_sigout+i*sampleframes, (size_t)sampleframes * sizeof(t_sample)); + } +} + + +static void hoa_3d_process_tilde_dsp(t_hoa_3d_process_tilde *x, t_signal **sp) +{ + size_t i, j, offset, nsamples; + char hasin = 0, hasout = 0; + size_t nins = 0, nouts = 0; + char thasin, thasout; + size_t tnins, tnouts; + if(x->f_block && x->f_method) + { + for(i = 0; i < x->f_ninstances; ++i) + { + thasin = hoa_process_instance_has_inputs_sig_static(x->f_instances+i); + thasout = hoa_process_instance_has_outputs_sig_static(x->f_instances+i); + tnins = hoa_process_instance_get_ninputs_sig_extra(x->f_instances+i); + tnouts = hoa_process_instance_get_noutputs_sig_extra(x->f_instances+i); + + hasin = thasin != 0 ? 1 : hasin; + hasout = thasout != 0 ? 1 : hasout; + nins = tnins > nins ? tnins : nins; + nouts = tnouts > nouts ? tnouts : nouts; + } + + if(x->f_sigin && x->f_nsigin) + { + freebytes(x->f_sigin, x->f_nsigin * sizeof(t_sample)); + x->f_sigin = NULL; + x->f_nsigin = 0; + } + if(nins || hasin) + { + nsamples = (x->f_ninstances * (size_t)hasin + nins) * (size_t)sp[0]->s_n; + x->f_sigin = (t_sample *)getbytes(nsamples * sizeof(t_sample)); + if(x->f_sigin) + { + x->f_nsigin = nsamples; + if(hasin) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = i * (size_t)sp[0]->s_n; + hoa_process_instance_set_inlet_sig(x->f_instances+i, 0, x->f_sigin + nsamples); + } + } + if(nins) + { + offset = (size_t)hasin * x->f_ninstances; + for(j = 0; j < nins; ++j) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = (offset + j) * (size_t)sp[0]->s_n; + hoa_process_instance_set_inlet_sig(x->f_instances+i, j+1, x->f_sigin + nsamples); + } + } + } + } + else + { + pd_error(x, "hoa.3d.process~ can't allocate memory."); + return; + } + } + + + if(x->f_sigout && x->f_nsigout) + { + freebytes(x->f_sigout, x->f_nsigout * sizeof(t_sample)); + x->f_sigout = NULL; + x->f_nsigout = 0; + } + + if(nouts || hasout) + { + nsamples = (x->f_ninstances * (size_t)hasout + nouts) * (size_t)sp[0]->s_n; + x->f_sigout = (t_sample *)getbytes(nsamples * sizeof(t_sample)); + if(x->f_sigout) + { + x->f_nsigout = nsamples; + if(hasout) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = i * (size_t)sp[0]->s_n; + hoa_process_instance_set_outlet_sig(x->f_instances+i, 0, x->f_sigout + nsamples); + } + } + if(nouts) + { + offset = (size_t)hasout * x->f_ninstances; + for(j = 0; j < nouts; ++j) + { + for(i = 0; i < x->f_ninstances; ++i) + { + nsamples = (offset + j) * (size_t)sp[0]->s_n; + hoa_process_instance_set_outlet_sig(x->f_instances+i, j+1, x->f_sigout + nsamples); + } + } + } + } + else + { + pd_error(x, "hoa.3d.process~ can't allocate memory."); + return; + } + } + + mess0((t_pd *)x->f_canvas, gensym("dsp")); + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_process_tilde_perform, sp); + } + else + { + pd_error(x, "hoa.3d.process~ not initialized can't compile DSP chain."); + } +} + +static void hoa_3d_process_tilde_click(t_hoa_3d_process_tilde *x) +{ + if(x->f_instances) + { + hoa_process_instance_show(x->f_instances); + } +} + +static void hoa_3d_process_tilde_open(t_hoa_3d_process_tilde *x, t_float f1, t_float f2) +{ + size_t i, index; + if(f1 < 0) + { + for(i = 0; i < x->f_ninstances; ++i) + { + hoa_process_instance_show(x->f_instances+i); + } + } + else + { + if(x->f_domain == hoa_sym_harmonics) + { + index = hoa_3d_get_index((size_t)f1, f2); + } + else + { + index = (size_t)f1; + } + if(index < x->f_ninstances) + { + hoa_process_instance_show(x->f_instances+index); + } + else + { + pd_error(x, "hoa.3d.process~: open argument out of bounds."); + } + } +} + +static void hoa_3d_process_tilde_target(t_hoa_3d_process_tilde *x, t_float f1, t_float f2) +{ + if(f1 < 0) + { + x->f_target = (size_t)-1; + } + else + { + if(x->f_domain == hoa_sym_harmonics) + { + x->f_target = hoa_3d_get_index((size_t)f1, f2); + } + else + { + x->f_target = (size_t)f1; + } + if(x->f_target >= x->f_ninstances) + { + x->f_target = -1; + pd_error(x, "hoa.3d.process~: open argument out of bounds."); + } + } +} + +static char hoa_3d_process_tilde_init(t_hoa_3d_process_tilde* x) +{ + t_atom av[3]; + x->f_block = (t_object *)NULL; + x->f_method = (t_bangmethod)NULL; + x->f_instances = (t_hoa_process_instance *)NULL; + x->f_canvas = canvas_new(NULL, gensym(""), 0, NULL); + x->f_ins = NULL; + x->f_nins = 0; + x->f_target = (size_t)-1; + x->f_sigout = NULL; + x->f_nsigout = 0; + if(x->f_canvas) + { + pd_popsym((t_pd *)x->f_canvas); + canvas_vis(x->f_canvas, 0); + SETFLOAT(av, 10.f); + SETFLOAT(av+1, 10.f); + SETSYMBOL(av+2, hoa_sym_switch); + + pd_typedmess((t_pd *)x->f_canvas, hoa_sym_obj, 3, av); + if(x->f_canvas->gl_list->g_pd->c_name == hoa_sym_block) + { + x->f_block = (t_object *)x->f_canvas->gl_list; + x->f_method = x->f_block->te_g.g_pd->c_bangmethod; + return 1; + } + } + return 0; +} + + +static char hoa_3d_process_tilde_load_planewaves(t_hoa_3d_process_tilde* x, size_t nplws, t_symbol* name, int argc, t_atom *argv) +{ + int ac; + t_atom* av; + size_t i; + size_t ninstance = nplws; + x->f_instances = (t_hoa_process_instance *)getbytes(nplws * sizeof(t_hoa_process_instance)); + if(x->f_instances) + { + ac = 4 + argc; + av = (t_atom *)getbytes(ac * sizeof(t_atom)); + if(ac && av) + { + SETSYMBOL(av, hoa_sym_3d); + SETSYMBOL(av+1, hoa_sym_planewaves); + SETFLOAT(av+2, (float)nplws); + memcpy(av+4, argv, argc * sizeof(t_atom)); + for(i = 0; i < ninstance; ++i) + { + SETFLOAT(av+3, (float)i); + if(!hoa_process_instance_init(x->f_instances+i, x->f_canvas, name, ac, av)) + { + freebytes(av, ac * sizeof(t_atom)); + freebytes(x->f_instances, nplws * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + } + x->f_ninstances = ninstance; + freebytes(av, ac * sizeof(t_atom)); + return 1; + } + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + return 0; +} + +static char hoa_3d_process_tilde_load_harmonics(t_hoa_3d_process_tilde* x, size_t order, t_symbol* name, int argc, t_atom *argv) +{ + int ac; + t_atom* av; + size_t i; + size_t ninstance = hoa_3d_get_number_of_harmonics(order); + x->f_instances = (t_hoa_process_instance *)getbytes(ninstance * sizeof(t_hoa_process_instance)); + if(x->f_instances) + { + ac = 5 + argc; + av = (t_atom *)getbytes(ac * sizeof(t_atom)); + if(ac && av) + { + SETSYMBOL(av, hoa_sym_3d); + SETSYMBOL(av+1, hoa_sym_harmonics); + SETFLOAT(av+2, (float)order); + memcpy(av+5, argv, argc * sizeof(t_atom)); + for(i = 0; i < ninstance; ++i) + { + SETFLOAT(av+3, (float)hoa_3d_get_degree(i)); + SETFLOAT(av+4, (float)hoa_3d_get_azimuthal_order(i)); + if(!hoa_process_instance_init(x->f_instances+i, x->f_canvas, name, ac, av)) + { + freebytes(av, ac * sizeof(t_atom)); + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + } + x->f_ninstances = ninstance; + freebytes(av, ac * sizeof(t_atom)); + return 1; + } + freebytes(x->f_instances, ninstance * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + return 0; + } + return 0; +} + +static void hoa_3d_process_tilde_alloc_inlets(t_hoa_3d_process_tilde* x) +{ + size_t i = 0; + size_t ninlets = 0, newval = 0; + + for(i = 0; i < x->f_ninstances; ++i) + { + newval = hoa_process_instance_get_ninputs(x->f_instances+i); + if(newval > ninlets) + { + ninlets = newval; + } + } + if(ninlets) + { + x->f_ins = (t_hoa_process_inlet *)getbytes(ninlets * sizeof(t_hoa_process_inlet)); + if(x->f_ins) + { + x->f_nins = ninlets; + for(i = 0; i < x->f_nins; ++i) + { + x->f_ins[i].x_index = i+1; + x->f_ins[i].x_pd = hoa_process_inlet_class; + x->f_ins[i].x_owner = x; + inlet_new((t_object *)x, &(x->f_ins[i].x_pd), 0, 0); + } + } + } +} + +static void hoa_3d_process_tilde_alloc_outlets(t_hoa_3d_process_tilde* x) +{ + size_t i = 0, j = 0; + size_t noutlets = 0, newval = 0; + t_outlet* outlet; + for(i = 0; i < x->f_ninstances; ++i) + { + newval = hoa_process_instance_get_noutputs(x->f_instances+i); + if(newval > noutlets) + { + noutlets = newval; + } + } + for(i = 0; i < noutlets; ++i) + { + outlet = outlet_new((t_object *)x, NULL); + for(j = 0; j < x->f_ninstances; ++j) + { + hoa_process_instance_set_outlet(x->f_instances+j, i+1, outlet); + } + } +} + +static void hoa_3d_process_tilde_alloc_signals(t_hoa_3d_process_tilde* x) +{ + size_t i; + char hasin = 0, hasout = 0; + size_t nins = 0, nouts = 0; + char thasin, thasout; + size_t tnins, tnouts; + for(i = 0; i < x->f_ninstances; ++i) + { + thasin = hoa_process_instance_has_inputs_sig_static(x->f_instances+i); + thasout = hoa_process_instance_has_outputs_sig_static(x->f_instances+i); + tnins = hoa_process_instance_get_ninputs_sig_extra(x->f_instances+i); + tnouts = hoa_process_instance_get_noutputs_sig_extra(x->f_instances+i); + + hasin = thasin != 0 ? 1 : hasin; + hasout = thasout != 0 ? 1 : hasout; + nins = tnins > nins ? tnins : nins; + nouts = tnouts > nouts ? tnouts : nouts; + } + + hoa_processor_init(x, x->f_ninstances * (size_t)hasin + nins, x->f_ninstances * (size_t)hasout + nouts); +} + +static void hoa_3d_process_tilde_free(t_hoa_3d_process_tilde *x) +{ + if(x->f_canvas) + { + canvas_free(x->f_canvas); + } + if(x->f_instances && x->f_ninstances) + { + freebytes(x->f_instances, x->f_ninstances * sizeof(t_hoa_process_instance)); + x->f_instances = NULL; + } + if(x->f_ins && x->f_nins) + { + freebytes(x->f_ins, x->f_nins * sizeof(t_hoa_process_inlet)); + x->f_ins = NULL; + } + if(x->f_sigout && x->f_nsigout) + { + freebytes(x->f_sigout, x->f_nsigout * sizeof(t_sample)); + x->f_sigout = NULL; + } + hoa_processor_clear(x); +} + +static void *hoa_3d_process_tilde_new(t_symbol *s, int argc, t_atom *argv) +{ + size_t order, nplws; + t_symbol *patch, *domain; + + t_canvas* current = canvas_getcurrent(); + t_hoa_3d_process_tilde *x = (t_hoa_3d_process_tilde *)pd_new(hoa_3d_process_tilde_class); + if(x) + { + patch = atom_getsymbolarg(1, argc, argv); + domain = atom_getsymbolarg(2, argc, argv); + if(hoa_3d_process_tilde_init(x)) + { + if(patch) + { + if(domain == hoa_sym_harmonics) + { + order = hoa_processor_clip_order(x, (size_t)atom_getfloatarg(0, argc, argv)); + if(!hoa_3d_process_tilde_load_harmonics(x, order, patch, argc < 3 ? 0 : argc-3, argv+3)) + { + pd_error(x, "hoa.3d.process~: can't load the patch %s.pd.", patch->s_name); + } + x->f_domain = hoa_sym_harmonics; + } + else + { + nplws = hoa_processor_clip_nplanewaves(x, (size_t)atom_getfloatarg(0, argc, argv)); + if(!hoa_3d_process_tilde_load_planewaves(x, nplws, patch, argc < 3 ? 0 : argc-3, argv+3)) + { + pd_error(x, "hoa.3d.process~: can't load the patch %s.pd.", patch->s_name); + } + if(domain != hoa_sym_planewaves) + { + pd_error(x, "hoa.3d.process~: bad argument, third argument must harmonics or planewaves."); + } + x->f_domain = hoa_sym_planewaves; + } + hoa_3d_process_tilde_alloc_signals(x); + hoa_3d_process_tilde_alloc_inlets(x); + hoa_3d_process_tilde_alloc_outlets(x); + } + else + { + pd_error(x, "hoa.3d.process~: bad argument, second argument must be a patch name."); + } + } + } + canvas_setcurrent(current); + return x; +} + + + + + + + + +static void hoa_process_inlet_bang(t_hoa_process_inlet *x) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_bang(x->x_owner->f_instances+target, x->x_index); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_bang(x->x_owner->f_instances+i, x->x_index); + } + } +} + +static void hoa_process_inlet_float(t_hoa_process_inlet *x, float f) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_float(x->x_owner->f_instances+target, x->x_index, f); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_float(x->x_owner->f_instances+i, x->x_index, f); + } + } +} + +static void hoa_process_inlet_symbol(t_hoa_process_inlet *x, t_symbol* s) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_symbol(x->x_owner->f_instances+target, x->x_index, s); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_symbol(x->x_owner->f_instances+i, x->x_index, s); + } + } +} + +static void hoa_process_inlet_list(t_hoa_process_inlet *x, t_symbol* s, int argc, t_atom* argv) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_list(x->x_owner->f_instances+target, x->x_index, s, argc, argv); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_list(x->x_owner->f_instances+i, x->x_index, s, argc, argv); + } + } +} + +static void hoa_process_inlet_anything(t_hoa_process_inlet *x, t_symbol* s, int argc, t_atom* argv) +{ + size_t i; + const size_t target = x->x_owner->f_target; + if(target != (size_t)-1) + { + hoa_process_instance_send_anything(x->x_owner->f_instances+target, x->x_index, s, argc, argv); + } + else + { + for(i = 0; i < x->x_owner->f_ninstances; ++i) + { + hoa_process_instance_send_anything(x->x_owner->f_instances+i, x->x_index, s, argc, argv); + } + } +} + +extern void setup_hoa0x2e3d0x2eprocess_tilde(void) +{ + t_class* c = class_new(gensym("hoa.3d.process~"), (t_newmethod)hoa_3d_process_tilde_new, (t_method)hoa_3d_process_tilde_free, + (size_t)sizeof(t_hoa_3d_process_tilde), CLASS_DEFAULT, A_GIMME, 0); + + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_3d_process_tilde, f_f); + class_addmethod(c, (t_method)hoa_3d_process_tilde_click, gensym("click"), A_NULL, 0); + class_addmethod(c, (t_method)hoa_3d_process_tilde_open, gensym("open"), A_FLOAT, A_DEFFLOAT, 0); + class_addmethod(c, (t_method)hoa_3d_process_tilde_target, gensym("target"), A_FLOAT, A_DEFFLOAT, 0); + class_addmethod(c, (t_method)hoa_3d_process_tilde_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_3d_process_tilde_class = c; + + hoa_sym_switch = gensym("switch~"); + hoa_sym_block = gensym("block~"); + hoa_sym_obj = gensym("obj"); + hoa_sym_harmonics = gensym("harmonics"); + hoa_sym_planewaves = gensym("planewaves"); + hoa_sym_3d = gensym("3d"); + + hoa_process_instance_setup(); + + c = class_new(gensym("hoa.3d.process.inlet"), 0, 0, sizeof(t_hoa_process_inlet), CLASS_PD, 0); + if(c) + { + class_addbang(c, (t_method)hoa_process_inlet_bang); + class_addfloat(c, (t_method)hoa_process_inlet_float); + class_addsymbol(c, (t_method)hoa_process_inlet_symbol); + class_addlist(c, (t_method)hoa_process_inlet_list); + class_addanything(c,(t_method)hoa_process_inlet_anything); + } + hoa_process_inlet_class = c; +} + diff --git a/sources/3d/hoa.3d.wider_tilde.cpp b/sources/3d/hoa.3d.wider_tilde.cpp new file mode 100644 index 0000000..11e3aec --- /dev/null +++ b/sources/3d/hoa.3d.wider_tilde.cpp @@ -0,0 +1,80 @@ +/* + // Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +extern "C" +{ +#include "../hoa.pd.h" +} +#include + +typedef struct _hoa_3d_wider +{ + t_hoa_processor f_obj; + float f_f; + hoa::Wider* f_processor; + t_sample* f_ins; + t_sample* f_outs; +} t_hoa_3d_wider; + +static t_class *hoa_3d_wider_class; + +static void *hoa_3d_wider_new(t_float f) +{ + t_hoa_3d_wider *x = (t_hoa_3d_wider *)pd_new(hoa_3d_wider_class); + if(x) + { + const size_t order = hoa_processor_clip_order(x, (size_t)f); + x->f_processor = new hoa::Wider(order); + x->f_ins = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + x->f_outs = new t_sample[x->f_processor->getNumberOfHarmonics() * 81092]; + hoa_processor_init(x, x->f_processor->getNumberOfHarmonics() + 1, x->f_processor->getNumberOfHarmonics()); + } + return x; +} + +static void hoa_3d_wider_free(t_hoa_3d_wider *x) +{ + hoa_processor_clear(x); + delete x->f_processor; + delete [] x->f_ins; + delete [] x->f_outs; +} + +static void hoa_3d_wider_perform(t_hoa_3d_wider *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs) +{ + for(size_t i = 0; i < nins - 1; i++) + { + hoa::Signal::copy(sampleframes, ins[i], 1, x->f_ins+i, (nins - 1)); + } + for(size_t i = 0; i < sampleframes; i++) + { + x->f_processor->setWidening(ins[nins - 1][i]); + x->f_processor->process(x->f_ins + (nins - 1) * i, x->f_outs + nouts * i); + } + for(size_t i = 0; i < nouts; i++) + { + hoa::Signal::copy(sampleframes, x->f_outs+i, nouts, outs[i], 1); + } +} + +static void hoa_3d_wider_dsp(t_hoa_3d_wider *x, t_signal **sp) +{ + hoa_processor_prepare(x, (t_hoa_processor_perfm)hoa_3d_wider_perform, sp); +} + +extern "C" void setup_hoa0x2e3d0x2ewider_tilde(void) +{ + t_class *c = class_new(gensym("hoa.3d.wider~"), (t_newmethod)hoa_3d_wider_new, (t_method)hoa_3d_wider_free, + (size_t)sizeof(t_hoa_3d_wider), CLASS_DEFAULT, A_FLOAT, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_3d_wider, f_f); + class_addmethod(c, (t_method)hoa_3d_wider_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_3d_wider_class = c; +} diff --git a/sources/common/hoa.connect.c b/sources/common/hoa.connect.c new file mode 100644 index 0000000..37fc8ea --- /dev/null +++ b/sources/common/hoa.connect.c @@ -0,0 +1,79 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include +#include +#include +#include + +typedef struct _hoa_connect +{ + t_object s_object; + t_canvas* s_canvas; +} t_hoa_connect; + +static t_class* hoa_connect_class; + +static void *hoa_connect_new() +{ + t_hoa_connect* x = (t_hoa_connect *)pd_new(hoa_connect_class); + if(x) + { + x->s_canvas = canvas_getcurrent(); + } + return x; +} + +static void hoa_connect_bang(t_hoa_connect *x) +{ + int nouts, nins, i; + t_object *first = NULL, *second = NULL; + int visible = (x->s_canvas) ? glist_isvisible(x->s_canvas) : 0; + t_editor* ed = (x->s_canvas) ? x->s_canvas->gl_editor : NULL; + t_selection *sel; + t_outconnect *oc; + if(ed && visible) + { + for(sel = ed->e_selection; sel; sel = sel->sel_next) + { + if(!strncmp((const char *)class_getname(sel->sel_what->g_pd), "hoa", 3)) + { + if(first) + { + second = (t_object *)sel->sel_what; + nouts= obj_noutlets(second); + nins = obj_ninlets(first); + for(i = 0; i < nouts && i < nins; ++i) + { + obj_disconnect(second, i, first, i); + oc = obj_connect(second, i, first, i); + sys_vgui((char *)".x%lx.c create line %d %d %d %d -width %d -fill black -tags [list l%lx cord]\n", + x->s_canvas, 0, 0, 0, 0, (obj_issignaloutlet(second, i) ? 2 : 1), oc); + } + canvas_fixlinesfor(x->s_canvas, (t_text *)second); + first = second; + second = NULL; + } + else + { + first = (t_object *)sel->sel_what; + } + } + } + canvas_dirty(x->s_canvas, 1); + } +} + +extern void setup_hoa0x2econnect(void) +{ + t_class* c = class_new(gensym("hoa.connect"), (t_newmethod)hoa_connect_new, NULL, (short)sizeof(t_hoa_connect), 0, 0); + if(c) + { + class_addbang(c, hoa_connect_bang); + } + hoa_connect_class = c; +} + diff --git a/sources/common/hoa.dac_tilde.c b/sources/common/hoa.dac_tilde.c new file mode 100644 index 0000000..cc26e6b --- /dev/null +++ b/sources/common/hoa.dac_tilde.c @@ -0,0 +1,127 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include +#include + +#define DEFDACBLKSIZE 64 +EXTERN t_sample* sys_soundout; + +typedef struct _hoa_dac +{ + t_object x_obj; + t_int x_n; + t_int* x_vec; + t_float x_f; +} t_hoa_dac; + +static t_class *hoa_dac_class; + +static void *hoa_dac_new(t_symbol *s, int argc, t_atom *argv) +{ + int i, j; + int min, max; + t_atom channels[512]; + t_hoa_dac *x = (t_hoa_dac *)pd_new(hoa_dac_class); + + if(!argc) + { + x->x_n = 2; + x->x_vec = (t_int *)getbytes(2 * sizeof(*x->x_vec)); + x->x_vec[0] = 1; + x->x_vec[1] = 2; + } + else + { + x->x_n = 0; + for(i = 0; i < argc; i++) + { + if(argv[i].a_type == A_FLOAT) + { + SETFLOAT(channels + x->x_n, (int)atom_getfloat(argv+i)); + x->x_n++; + } + else if(argv[i].a_type == A_SYMBOL) + { + min = atoi(atom_getsymbol(argv+i)->s_name); + if(min > 0 && min <= 512) + { + if (min < 10) + max = atoi(atom_getsymbol(argv+i)->s_name+2); + else if (min < 100) + max = atoi(atom_getsymbol(argv+i)->s_name+3); + else if (min < 1000) + max = atoi(atom_getsymbol(argv+i)->s_name+4); + else + max = atoi(atom_getsymbol(argv+i)->s_name+5); + if(max > 0 && max <= 512) + { + if(max > min) + { + for(j = min; j <= max; j++) + { + SETFLOAT(channels + x->x_n, j); + x->x_n++; + } + } + else + { + for(j = min; j >= max; j--) + { + SETFLOAT(channels + x->x_n, j); + x->x_n++; + } + } + } + } + } + } + x->x_vec = (t_int *)getbytes((size_t)(x->x_n ? x->x_n : 1) * sizeof(*x->x_vec)); + for (i = 0; i < x->x_n; i++) + { + x->x_vec[i] = atom_getintarg(i, (int)(x->x_n), channels); + } + } + + for (i = 1; i < x->x_n; i++) + inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); + x->x_f = 0; + return (x); +} + +static void hoa_dac_dsp(t_hoa_dac *x, t_signal **sp) +{ + t_int i, *ip; + t_signal **sp2; + for (i = x->x_n, ip = x->x_vec, sp2 = sp; i--; ip++, sp2++) + { + int ch = (int)(*ip - 1); + if ((*sp2)->s_n != DEFDACBLKSIZE) + error("hoa.dac~: bad vector size"); + else if (ch >= 0 && ch < sys_get_outchannels()) + dsp_add(plus_perform, 4, sys_soundout + DEFDACBLKSIZE*ch, + (*sp2)->s_vec, sys_soundout + DEFDACBLKSIZE*ch, DEFDACBLKSIZE); + } +} + +static void hoa_dac_free(t_hoa_dac *x) +{ + freebytes(x->x_vec, x->x_n * sizeof(t_atom)); +} + +extern void setup_hoa0x2edac_tilde(void) +{ + t_class* c = class_new(gensym("hoa.dac~"), (t_newmethod)hoa_dac_new, (t_method)hoa_dac_free, + (size_t)sizeof(t_hoa_dac), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_dac, x_f); + class_addmethod(c, (t_method)hoa_dac_dsp, gensym("dsp"), A_CANT, 0); + } + hoa_dac_class = c; +} + + diff --git a/sources/common/hoa.in.c b/sources/common/hoa.in.c new file mode 100644 index 0000000..566d1f6 --- /dev/null +++ b/sources/common/hoa.in.c @@ -0,0 +1,72 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include "../hoa.pd.h" + +static t_class* hoa_in_class; +static t_symbol* hoa_sym_extra; + +static void *hoa_in_new(t_float f) +{ + t_hoa_in *x = (t_hoa_in *)pd_new(hoa_in_class); + if(x) + { + x->f_extra = f; + outlet_new((t_object *)x, NULL); + if(x->f_extra < 1) + { + pd_error(x, "hoa.in: bad argument, extra index must be at least 1."); + pd_free((t_pd *)x); + return NULL; + } + } + return x; +} + +static void hoa_in_bang(t_hoa_in *x) +{ + outlet_bang(x->f_obj.ob_outlet); +} + +static void hoa_in_float(t_hoa_in *x, float f) +{ + outlet_float(x->f_obj.ob_outlet, f); +} + +static void hoa_in_symbol(t_hoa_in *x, t_symbol* s) +{ + outlet_symbol(x->f_obj.ob_outlet, s); +} + +static void hoa_in_list(t_hoa_in *x, t_symbol* s, int argc, t_atom* argv) +{ + outlet_list(x->f_obj.ob_outlet, s, argc, argv); +} + +static void hoa_in_anything(t_hoa_in *x, t_symbol* s, int argc, t_atom* argv) +{ + outlet_anything(x->f_obj.ob_outlet, s, argc, argv); +} + +extern void setup_hoa0x2ein(void) +{ + t_class* c = class_new(gensym("hoa.in"), (t_newmethod)hoa_in_new, (t_method)NULL, + (size_t)sizeof(t_hoa_in), CLASS_NOINLET, A_FLOAT, 0); + + if(c) + { + class_sethelpsymbol((t_class *)c, gensym("hoa.io")); + class_addmethod(c, (t_method)hoa_in_bang, gensym("bang"), A_NULL, 0); + class_addmethod(c, (t_method)hoa_in_float, gensym("float"), A_FLOAT, 0); + class_addmethod(c, (t_method)hoa_in_symbol, gensym("symbol"), A_SYMBOL,0); + class_addmethod(c, (t_method)hoa_in_list, gensym("list"), A_GIMME, 0); + class_addmethod(c, (t_method)hoa_in_anything, gensym("anything"), A_GIMME, 0); + } + + hoa_in_class = c; + hoa_sym_extra = gensym("extra"); +} + diff --git a/sources/common/hoa.in_tilde.c b/sources/common/hoa.in_tilde.c new file mode 100644 index 0000000..caa3e01 --- /dev/null +++ b/sources/common/hoa.in_tilde.c @@ -0,0 +1,59 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include "../hoa.pd.h" + +static t_class* hoa_in_tilde_class; +static t_symbol* hoa_sym_extra; + +static void *hoa_in_tilde_new(t_float f) +{ + t_hoa_io_tilde *x = (t_hoa_io_tilde *)pd_new(hoa_in_tilde_class); + if(x) + { + x->f_extra = 0; + x->f_signal = NULL; + x->f_extra = f; + outlet_new((t_object *)x, &s_signal); + if(x->f_extra < 0) + { + pd_error(x, "hoa.in: bad argument, extra index must be at least 1."); + pd_free((t_pd *)x); + return NULL; + } + } + + return x; +} + +static void hoa_in_tilde_dsp(t_hoa_io_tilde *x, t_signal **sp) +{ + if(x->f_signal) + { + dsp_add_copy(x->f_signal, sp[0]->s_vec, sp[0]->s_n); + } + else + { + dsp_add_zero(sp[0]->s_vec, sp[0]->s_n); + } +} + +extern void setup_hoa0x2ein_tilde(void) +{ + t_class* c = class_new(gensym("hoa.in~"), (t_newmethod)hoa_in_tilde_new, (t_method)NULL, + (size_t)sizeof(t_hoa_io_tilde), CLASS_NOINLET, A_DEFFLOAT, 0); + + if(c) + { + class_sethelpsymbol((t_class *)c, gensym("help/hoa.io")); + class_addmethod(c, (t_method)hoa_in_tilde_dsp, gensym("dsp"), A_CANT, 0); + } + + hoa_in_tilde_class = c; + hoa_sym_extra = gensym("extra"); +} + + diff --git a/sources/common/hoa.out.c b/sources/common/hoa.out.c new file mode 100644 index 0000000..12d1332 --- /dev/null +++ b/sources/common/hoa.out.c @@ -0,0 +1,87 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include "../hoa.pd.h" + +static t_class* hoa_out_class; +static t_symbol* hoa_sym_extra; + +static void *hoa_out_new(t_float f) +{ + t_hoa_out *x = (t_hoa_out *)pd_new(hoa_out_class); + if(x) + { + x->f_extra = f; + x->f_outlet = NULL; + if(x->f_extra < 1) + { + pd_error(x, "hoa.in: bad argument, extra index must be at least 1."); + pd_free((t_pd *)x); + return NULL; + } + } + return x; +} + +static void hoa_out_bang(t_hoa_out *x) +{ + if(x->f_outlet) + { + outlet_bang(x->f_outlet); + } +} + +static void hoa_out_float(t_hoa_out *x, float f) +{ + if(x->f_outlet) + { + outlet_float(x->f_outlet, f); + } +} + +static void hoa_out_symbol(t_hoa_out *x, t_symbol* s) +{ + if(x->f_outlet) + { + outlet_symbol(x->f_outlet, s); + } +} + +static void hoa_out_list(t_hoa_out *x, t_symbol* s, int argc, t_atom* argv) +{ + if(x->f_outlet) + { + outlet_list(x->f_outlet, s, argc, argv); + } +} + +static void hoa_out_anything(t_hoa_out *x, t_symbol* s, int argc, t_atom* argv) +{ + if(x->f_outlet) + { + outlet_anything(x->f_outlet, s, argc, argv); + } +} + +extern void setup_hoa0x2eout(void) +{ + t_class* c = class_new(gensym("hoa.out"), (t_newmethod)hoa_out_new, (t_method)NULL, + (size_t)sizeof(t_hoa_out), CLASS_DEFAULT, A_FLOAT, 0); + + if(c) + { + class_sethelpsymbol((t_class *)c, gensym("hoa.io")); + class_addmethod(c, (t_method)hoa_out_bang, gensym("bang"), A_NULL, 0); + class_addmethod(c, (t_method)hoa_out_float, gensym("float"), A_FLOAT, 0); + class_addmethod(c, (t_method)hoa_out_symbol, gensym("symbol"), A_SYMBOL,0); + class_addmethod(c, (t_method)hoa_out_list, gensym("list"), A_GIMME, 0); + class_addmethod(c, (t_method)hoa_out_anything, gensym("anything"), A_GIMME, 0); + } + + hoa_out_class = c; + hoa_sym_extra = gensym("extra"); +} + diff --git a/sources/common/hoa.out_tilde.c b/sources/common/hoa.out_tilde.c new file mode 100644 index 0000000..1dec6cb --- /dev/null +++ b/sources/common/hoa.out_tilde.c @@ -0,0 +1,53 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include "../hoa.pd.h" + +static t_class* hoa_out_tilde_class; +static t_symbol* hoa_sym_extra; + +static void *hoa_out_tilde_new(t_float f) +{ + t_hoa_io_tilde *x = (t_hoa_io_tilde *)pd_new(hoa_out_tilde_class); + if(x) + { + x->f_extra = 0; + x->f_signal = NULL; + x->f_extra = f; + if(x->f_extra < 0) + { + pd_error(x, "hoa.in: bad argument, extra index must be at least 1."); + pd_free((t_pd *)x); + return NULL; + } + } + + return x; +} + +static void hoa_out_tilde_dsp(t_hoa_io_tilde *x, t_signal **sp) +{ + if(x->f_signal) + { + dsp_add_plus(sp[0]->s_vec, x->f_signal, x->f_signal, sp[0]->s_n); + } +} + +extern void setup_hoa0x2eout_tilde(void) +{ + t_class* c = class_new(gensym("hoa.out~"), (t_newmethod)hoa_out_tilde_new, (t_method)NULL, + (size_t)sizeof(t_hoa_io_tilde), CLASS_DEFAULT, A_DEFFLOAT, 0); + + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_io_tilde, f_f); + class_sethelpsymbol((t_class *)c, gensym("help/hoa.io")); + class_addmethod(c, (t_method)hoa_out_tilde_dsp, gensym("dsp"), A_CANT, 0); + } + + hoa_out_tilde_class = c; + hoa_sym_extra = gensym("extra"); +} diff --git a/sources/common/hoa.pi.c b/sources/common/hoa.pi.c new file mode 100644 index 0000000..7413d8f --- /dev/null +++ b/sources/common/hoa.pi.c @@ -0,0 +1,72 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 +#endif + +typedef struct _hoa_pi +{ + t_object p_obj; + t_float p_value; + t_outlet *p_outlet; +} t_hoa_pi; + +static t_class *hoa_pi_class; + +static void *hoa_pi_new(t_symbol *s, int argc, t_atom* argv) +{ + t_hoa_pi *x = (t_hoa_pi *)pd_new(hoa_pi_class); + if(x) + { + x->p_value = (t_float)M_PI; + if(argc && argv) + { + if(argv[0].a_type == A_FLOAT) + { + x->p_value *= atom_getfloat(argv); + } + else + { + pd_error(x, "hoa.pi: bad argument."); + } + if(argc > 1) + { + pd_error(x, "hoa.pi: extra arguments ignored."); + } + } + x->p_outlet = outlet_new((t_object *)x, &s_float); + } + return(x); +} + +static void hoa_pi_bang(t_hoa_pi *x) +{ + outlet_float(x->p_outlet, x->p_value); +} + +static void hoa_pi_float(t_hoa_pi *x, t_float f) +{ + x->p_value = (t_float)M_PI * f; + hoa_pi_bang(x); +} + +extern void setup_hoa0x2epi(void) +{ + t_class* c = class_new(gensym("hoa.pi"), (t_newmethod)hoa_pi_new, (t_method)NULL, + sizeof(t_hoa_pi), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + class_addbang(c, (t_method)hoa_pi_bang); + class_addfloat(c, (t_method)hoa_pi_float); + } + + hoa_pi_class = c; +} + diff --git a/sources/common/hoa.pi_tilde.c b/sources/common/hoa.pi_tilde.c new file mode 100644 index 0000000..b4ab277 --- /dev/null +++ b/sources/common/hoa.pi_tilde.c @@ -0,0 +1,102 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 +#endif + +typedef struct _hoa_pi_tilde +{ + t_object p_ob; + t_sample p_value; +} t_hoa_pi_tilde; + +static t_class *hoa_pi_tilde_class; + +static void *hoa_pi_tilde_new(t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_pi_tilde *x = (t_hoa_pi_tilde *)pd_new(hoa_pi_tilde_class); + if(x) + { + outlet_new((t_object *)x, &s_signal); + if(!argc) + { + x->p_value = 1; + } + else if(argv[0].a_type != A_FLOAT) + { + x->p_value = 1; + pd_error(x, "hoa.pi~: argument type error, expected float."); + } + else + { + x->p_value = atom_getfloat(argv); + } + if(argc > 1) + { + pd_error(x, "hoa.pi~: extra argument ignored."); + } + } + return(x); +} + +static t_int *hoa_pi_tilde_perform(t_int *w) +{ + t_sample *in = (t_sample *)(w[1]); + t_sample const g = (*(t_sample *)(w[2])) * (t_sample)M_PI; + t_sample *out = (t_sample *)(w[3]); + int n = (int)(w[4]); + while (n--) *out++ = *in++ * g; + return (w+5); +} + +static t_int *hoa_pi_tilde_perform8(t_int *w) +{ + t_sample *in = (t_sample *)(w[1]); + t_sample const g = (*(t_sample *)(w[2])) * (t_sample)M_PI; + t_sample *out = (t_sample *)(w[3]); + int n = (int)(w[4]); + + for (; n; n -= 8, in += 8, out += 8) + { + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + + out[0] = f0 * g; out[1] = f1 * g; + out[2] = f2 * g; out[3] = f3 * g; + out[4] = f4 * g; out[5] = f5 * g; + out[6] = f6 * g; out[7] = f7 * g; + } + return (w+5); +} + +static void hoa_pi_tilde_dsp(t_hoa_pi_tilde *x, t_signal **sp) +{ + if(sp[0]->s_n&7) + { + dsp_add(hoa_pi_tilde_perform, 4, sp[0]->s_vec, &x->p_value, sp[1]->s_vec, sp[0]->s_n); + } + else + { + dsp_add(hoa_pi_tilde_perform8, 4, sp[0]->s_vec, &x->p_value, sp[1]->s_vec, sp[0]->s_n); + } +} + +extern void setup_hoa0x2epi_tilde(void) +{ + t_class* c = class_new(gensym("hoa.pi~"), (t_newmethod)hoa_pi_tilde_new, (t_method)NULL, + sizeof(t_hoa_pi_tilde), CLASS_DEFAULT, A_GIMME, 0); + if(c) + { + CLASS_MAINSIGNALIN(c, t_hoa_pi_tilde, p_value); + class_addmethod(c, (t_method)hoa_pi_tilde_dsp, gensym("dsp"), A_CANT, 0); + } + + hoa_pi_tilde_class = c; +} diff --git a/sources/common/hoa.process_instance.c b/sources/common/hoa.process_instance.c new file mode 100644 index 0000000..7f3437e --- /dev/null +++ b/sources/common/hoa.process_instance.c @@ -0,0 +1,319 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#include "../hoa.pd.h" +#include +#include +#include + +static t_symbol* hoa_sym_canvas; +static t_symbol* hoa_sym_obj; + +static t_symbol* hoa_sym_hoa_thisprocess; +static t_symbol* hoa_sym_hoa_in; +static t_symbol* hoa_sym_hoa_out; +static t_symbol* hoa_sym_hoa_in_tilde; +static t_symbol* hoa_sym_hoa_out_tilde; + +static t_symbol* hoa_sym_harmonics; +static t_symbol* hoa_sym_planewaves; + +void hoa_process_instance_setup(void) +{ + hoa_sym_canvas = gensym("canvas"); + hoa_sym_obj = gensym("obj"); + + hoa_sym_hoa_thisprocess = gensym("hoa.thisprocess~"); + hoa_sym_hoa_in = gensym("hoa.in"); + hoa_sym_hoa_out = gensym("hoa.out"); + hoa_sym_hoa_in_tilde = gensym("hoa.in~"); + hoa_sym_hoa_out_tilde = gensym("hoa.out~"); + + hoa_sym_harmonics = gensym("harmonics"); + hoa_sym_planewaves = gensym("planewaves"); +} + +static void hoa_process_instance_get_hoas(t_hoa_process_instance* x, t_canvas* cnv) +{ + t_gobj *y; + t_symbol const* name; + for(y = cnv->gl_list; y; y = y->g_next) + { + name = y->g_pd->c_name; + if(name == hoa_sym_canvas) + { + hoa_process_instance_get_hoas(x, (t_canvas *)y); + } + else if(name == hoa_sym_hoa_in) + { + t_hoa_in* inlet = (t_hoa_in *)y; + inlet->f_next = x->f_ins; + x->f_ins = inlet; + } + else if(name == hoa_sym_hoa_out) + { + t_hoa_out* outlet = (t_hoa_out *)y; + outlet->f_next = x->f_outs; + x->f_outs = outlet; + } + else if(name == hoa_sym_hoa_in_tilde) + { + t_hoa_io_tilde* inlet_sig = (t_hoa_io_tilde *)y; + inlet_sig->f_next = x->f_ins_sig; + x->f_ins_sig = inlet_sig; + } + else if(name == hoa_sym_hoa_out_tilde) + { + t_hoa_io_tilde* outlet_sig = (t_hoa_io_tilde *)y; + outlet_sig->f_next = x->f_outs_sig; + x->f_outs_sig = outlet_sig; + } + } +} + +char hoa_process_instance_init(t_hoa_process_instance* x, t_canvas* parent, t_symbol* name, size_t argc, t_atom* argv) +{ + t_gobj* z; + t_atom* av; + x->f_canvas = NULL; + av = (t_atom *)getbytes((argc + 3) * sizeof(t_atom)); + if(av) + { + SETFLOAT(av, 10); + SETFLOAT(av+1, 10); + SETSYMBOL(av+2, name); + memcpy(av+3, argv, (size_t)argc * sizeof(t_atom)); + pd_typedmess((t_pd *)parent, hoa_sym_obj, (int)(argc + 3), av); + for(z = parent->gl_list; z->g_next; z = z->g_next) { + } + if(z && z->g_pd->c_name == hoa_sym_canvas) + { + x->f_canvas = (t_canvas *)z; + canvas_loadbang(x->f_canvas); + + hoa_process_instance_get_hoas(x, x->f_canvas); + freebytes(av, (argc + 3) * sizeof(t_atom)); + return 1; + } + freebytes(av, (argc + 3) * sizeof(t_atom)); + } + + return 0; +} + + + + + + +void hoa_process_instance_show(t_hoa_process_instance* x) +{ + if(x->f_canvas) + { + canvas_vis(x->f_canvas, 1); + } +} + +void hoa_process_instance_send_bang(t_hoa_process_instance* x, size_t extra) +{ + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra == extra) + { + pd_bang((t_pd *)in); + } + in = in->f_next; + } +} + +void hoa_process_instance_send_float(t_hoa_process_instance* x, size_t extra, float f) +{ + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra == extra) + { + pd_float((t_pd *)in, f); + } + in = in->f_next; + } +} + +void hoa_process_instance_send_symbol(t_hoa_process_instance* x, size_t extra, t_symbol* s) +{ + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra == extra) + { + pd_symbol((t_pd *)in, s); + } + in = in->f_next; + } +} + +void hoa_process_instance_send_list(t_hoa_process_instance* x, size_t extra, t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra == extra) + { + pd_list((t_pd *)in, s, argc, argv); + } + in = in->f_next; + } +} + +void hoa_process_instance_send_anything(t_hoa_process_instance* x, size_t extra, t_symbol* s, int argc, t_atom* argv) +{ + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra == extra) + { + pd_typedmess((t_pd *)in, s, argc, argv); + } + in = in->f_next; + } +} + +size_t hoa_process_instance_get_ninputs(t_hoa_process_instance* x) +{ + size_t index = 0; + t_hoa_in* in = x->f_ins; + while(in != NULL) + { + if(in->f_extra > index) + { + index = in->f_extra; + } + in = in->f_next; + } + return index; +} + +size_t hoa_process_instance_get_noutputs(t_hoa_process_instance* x) +{ + size_t index = 0; + t_hoa_out* out = x->f_outs; + while(out != NULL) + { + if(out->f_extra > index) + { + index = out->f_extra; + } + out = out->f_next; + } + return index; +} + +void hoa_process_instance_set_outlet(t_hoa_process_instance* x, size_t index, t_outlet* outlet) +{ + t_hoa_out* out = x->f_outs; + while(out != NULL) + { + if(out->f_extra == index) + { + out->f_outlet = outlet; + } + out = out->f_next; + } +} + +char hoa_process_instance_has_inputs_sig_static(t_hoa_process_instance* x) +{ + t_hoa_io_tilde* in = x->f_ins_sig; + while(in != NULL) + { + if(in->f_extra == 0) + { + return 1; + } + in = in->f_next; + } + return 0; +} + +size_t hoa_process_instance_get_ninputs_sig_extra(t_hoa_process_instance* x) +{ + size_t index = 0; + t_hoa_io_tilde* in = x->f_ins_sig; + while(in != NULL) + { + if(in->f_extra > index) + { + index = in->f_extra; + } + in = in->f_next; + } + return index; +} + +char hoa_process_instance_has_outputs_sig_static(t_hoa_process_instance* x) +{ + t_hoa_io_tilde* in = x->f_outs_sig; + while(in != NULL) + { + if(in->f_extra == 0) + { + return 1; + } + in = in->f_next; + } + return 0; +} + +size_t hoa_process_instance_get_noutputs_sig_extra(t_hoa_process_instance* x) +{ + size_t index = 0; + t_hoa_io_tilde* in = x->f_outs_sig; + while(in != NULL) + { + if(in->f_extra > index) + { + index = in->f_extra; + } + in = in->f_next; + } + return index; +} + +void hoa_process_instance_set_inlet_sig(t_hoa_process_instance* x, size_t index, t_sample* s) +{ + t_hoa_io_tilde* in = x->f_ins_sig; + while(in != NULL) + { + if(in->f_extra == index) + { + in->f_signal = s; + } + in = in->f_next; + } +} + +void hoa_process_instance_set_outlet_sig(t_hoa_process_instance* x, size_t index, t_sample* s) +{ + t_hoa_io_tilde* out = x->f_outs_sig; + while(out != NULL) + { + if(out->f_extra == index) + { + out->f_signal = s; + } + out = out->f_next; + } +} + + + + + + + + + diff --git a/sources/common/hoa.thisprocess_tilde.c b/sources/common/hoa.thisprocess_tilde.c new file mode 100644 index 0000000..a5fc697 --- /dev/null +++ b/sources/common/hoa.thisprocess_tilde.c @@ -0,0 +1,139 @@ +/* + // Copyright (c) 2012-2016 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +#include "../hoa.pd.h" + +static t_class *hoa_thisprocess_class; +static t_symbol* hoa_sym_done; + +static size_t hoa_get_attributes_offset(int argc, t_atom *argv) +{ + size_t i; + char a; + for(i = 0; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + a = atom_getsymbol(argv+i)->s_name[0]; + if(a == '@' || a == '-') + { + return i; + } + } + } + return (size_t)argc; +} + +static char hoa_get_atoms_get_attribtues_keys(int argc, t_atom *argv, size_t* nattrs, t_hoa_attr** attrs) +{ + size_t i, j; + char a; + char key_char[MAXPDSTRING]; + t_hoa_attr* temp; + for(i = 0, *nattrs = 0; i < argc; ++i) + { + if(argv[i].a_type == A_SYMBOL) + { + a = atom_getsymbol(argv+i)->s_name[0]; + if(a == '@' || a == '-') + { + if(*nattrs && *attrs) + { + temp = (t_hoa_attr *)resizebytes(*attrs, (*nattrs) * sizeof(t_hoa_attr), ((*nattrs) + 1) * sizeof(t_hoa_attr)); + if(temp) + { + (*nattrs)++; + *attrs = temp; + } + } + else + { + + } + } + } + } + return 0; +} + +static void *hoa_thisprocess_new(t_symbol *s, int argc, t_atom *argv) +{ + int i; + t_hoa_thisprocess *x = (t_hoa_thisprocess *)pd_new(hoa_thisprocess_class); + if(x) + { + // arg1 arg2 -size 100 -delay 1000 -feedback 0.5 -rarefaction 0 + x->f_argc = hoa_get_attributes_offset(argc, argv); + x->f_args = (t_atom *)getbytes(x->f_argc * sizeof(t_atom)); + for(i = 0; i < x->f_argc; i++) + { + x->f_args[i] = argv[i]; + } + + x->f_out_hoa_args = outlet_new((t_object *)x, &s_list); + x->f_out_hoa_mode = outlet_new((t_object *)x, NULL); + x->f_out_args = outlet_new((t_object *)x, NULL); + x->f_out_attrs = outlet_new((t_object *)x, NULL); + + x->f_time = clock_getsystime(); + } + + return x; +} + +static void hoa_thisprocess_bang(t_hoa_thisprocess *x) +{ + int i; + for(i = 0; i < x->f_nattrs; i++) + { + outlet_anything(x->f_out_attrs, x->f_attrs[i].name, (int)(x->f_attrs[i].size), x->f_attrs[i].values); + } + + if(x->f_argc && x->f_args) + { + outlet_list(x->f_out_args, &s_list, (int)x->f_argc, x->f_args); + } + outlet_list(x->f_out_hoa_mode, &s_list, 2, x->f_hoa_mode); + outlet_list(x->f_out_hoa_args, &s_list, 3, x->f_hoa_args); + outlet_symbol(x->f_out_attrs, hoa_sym_done); +} + +static void hoa_thisprocess_click(t_hoa_thisprocess *x) +{ + if(clock_gettimesince(x->f_time) < 250.) + hoa_thisprocess_bang(x); + x->f_time = clock_getsystime(); +} + +static void hoa_thisprocess_free(t_hoa_thisprocess *x) +{ + int i; + if(x->f_argc && x->f_args) + { + freebytes(x->f_args, x->f_argc * sizeof(t_atom)); + } + if(x->f_nattrs) + { + + } +} + +extern void setup_hoa0x2ethisprocess_tilde(void) +{ + t_class* c = class_new(gensym("hoa.thisprocess~"), (t_newmethod)hoa_thisprocess_new, (t_method)hoa_thisprocess_free, + (size_t)sizeof(t_hoa_thisprocess), CLASS_DEFAULT, A_GIMME, 0); + + if(c) + { + class_addmethod(c, (t_method)hoa_thisprocess_bang, gensym("bang"), A_NULL, 0); + class_addmethod(c, (t_method)hoa_thisprocess_click, gensym("click"), A_CANT, 0); + } + + hoa_thisprocess_class = c; + hoa_sym_done = gensym("done"); +} + + diff --git a/Sources/hoa.exchanger_tilde.cpp b/sources/deprecated/hoa.exchanger_tilde.cpp similarity index 100% rename from Sources/hoa.exchanger_tilde.cpp rename to sources/deprecated/hoa.exchanger_tilde.cpp diff --git a/sources/deprecated/hoa.normalize.cpp b/sources/deprecated/hoa.normalize.cpp new file mode 100644 index 0000000..e35e233 --- /dev/null +++ b/sources/deprecated/hoa.normalize.cpp @@ -0,0 +1,114 @@ +/* +// Copyright (c) 2012-2015 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#include "../hoa.library.hpp" +#include "../ThirdParty/HoaLibrary/Sources/Hoa.hpp" +using namespace hoa; + +typedef struct _hoa_normalize +{ + t_eobj f_obj; + t_float f_normalization; + t_float f_legendre; + t_outlet* f_normalization_out; + t_outlet* f_legendre_out; + t_outlet* f_sum_out; +} t_hoa_normalize; + +static t_eclass *hoa_normalize_class; + +static inline long double hoa_normalize_factorial(long n) +{ + long double result = n; + if(n == 0) + return 1; + while(--n > 0) + result *= n; + + return result; +} + +static void hoa_normalize_compute(t_hoa_normalize *x, ulong degree, long order) +{ + long i = 0; + float prevl1, prevl2; + if(order == 0) + { + x->f_normalization = (sqrt(hoa_normalize_factorial(long(degree) - long(abs(order))) / hoa_normalize_factorial(long(order) + long(abs(order))))) * (sqrt((1.) / (4. * 3.14159265358979323846264338327950288))); + } + else + { + x->f_normalization = (sqrt(hoa_normalize_factorial(long(degree) - abs(order)) / hoa_normalize_factorial(long(degree) + abs(order))) * sqrt((2.) / (4. * 3.14159265358979323846264338327950288))); + } + + x->f_normalization = hoa::Harmonic::getSemiNormalization(degree, order); + x->f_legendre = 1; + order = order < 0 ? -order : order; + for(i = 0; i < order; i++) + { + x->f_legendre *= -(2.f * float(i) + 1.f); + } + prevl2 = x->f_legendre; + if(order < degree) + { + i++; + prevl1 = x->f_legendre = prevl2 * (2.f * float(i) + 1.f); + if(order < degree) + { + for(; i < degree; i++) + { + x->f_legendre = (prevl1 * (2.f * float(i) + 1.f) - prevl2 * (i + float(order))) / (float(i) - float(order) + 1.f); + prevl2 = prevl1; + prevl1 = x->f_legendre; + } + } + } +} + +static void *hoa_normalize_new(t_symbol *s, int argc, t_atom *argv) +{ + t_hoa_normalize *x = (t_hoa_normalize *)eobj_new(hoa_normalize_class); + if (x) + { + hoa_normalize_compute(x, ulong(atom_getfloatarg(1, argc, argv)), long(atom_getfloatarg(2, argc, argv))); + x->f_sum_out = outlet_new((t_object *)x, &s_float); + x->f_normalization_out = outlet_new((t_object *)x, &s_float); + x->f_legendre_out = outlet_new((t_object *)x, &s_float); + return x; + } + return NULL; +} + +static void hoa_normalize_list(t_hoa_normalize *x, t_symbol* s, int argc, t_atom *argv) +{ + hoa_normalize_compute(x, ulong(atom_getfloatarg(1, argc, argv)), long(atom_getfloatarg(2, argc, argv))); + outlet_float(x->f_legendre_out, x->f_legendre); + outlet_float(x->f_normalization_out, x->f_normalization); + outlet_float(x->f_sum_out, x->f_normalization * x->f_legendre); +} + +static void hoa_normalize_bang(t_hoa_normalize *x) +{ + outlet_float(x->f_legendre_out, x->f_legendre); + outlet_float(x->f_normalization_out, x->f_normalization); + outlet_float(x->f_sum_out, x->f_normalization * x->f_legendre); +} + + +extern "C" void setup_hoa0x2enormalize(void) +{ + t_eclass *c = eclass_new("hoa.normalize",(method)hoa_normalize_new,(method)eobj_free, sizeof(t_hoa_normalize), 0L, A_GIMME, 0); + if(c) + { + eclass_addmethod(c, (method)hoa_normalize_bang, "bang", A_NULL, 0); + eclass_addmethod(c, (method)hoa_normalize_list, "list", A_NULL, 0); + eclass_register(CLASS_OBJ, c); + hoa_normalize_class = c; + } +} + + + diff --git a/Sources/hoa.map_gui.cpp b/sources/gui/hoa.map_gui.cpp similarity index 100% rename from Sources/hoa.map_gui.cpp rename to sources/gui/hoa.map_gui.cpp diff --git a/Sources/hoa.meter_gui_tilde.cpp b/sources/gui/hoa.meter_gui_tilde.cpp similarity index 99% rename from Sources/hoa.meter_gui_tilde.cpp rename to sources/gui/hoa.meter_gui_tilde.cpp index 55dd609..8527fc5 100644 --- a/Sources/hoa.meter_gui_tilde.cpp +++ b/sources/gui/hoa.meter_gui_tilde.cpp @@ -1,5 +1,5 @@ /* - // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. + // Copyright (c) 2012-2015 Eliott Paris & Pierre Guillot, CICM, Universite Paris 8. // For information on usage and redistribution, and for a DISCLAIMER OF ALL // WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ diff --git a/Sources/hoa.scope_gui_tilde.cpp b/sources/gui/hoa.scope_gui_tilde.cpp similarity index 100% rename from Sources/hoa.scope_gui_tilde.cpp rename to sources/gui/hoa.scope_gui_tilde.cpp diff --git a/Sources/hoa.space_gui.cpp b/sources/gui/hoa.space_gui.cpp similarity index 100% rename from Sources/hoa.space_gui.cpp rename to sources/gui/hoa.space_gui.cpp diff --git a/sources/hoa.pd.c b/sources/hoa.pd.c new file mode 100644 index 0000000..0e29c35 --- /dev/null +++ b/sources/hoa.pd.c @@ -0,0 +1,157 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#include "hoa.pd.h" +#include +#include + +static char hoaname[] = "hoa.library v2.3-beta"; +static char hoaversion[] = "v2.3-beta"; + +size_t hoa_2d_get_number_of_harmonics(size_t order) +{ + return order * 2 + 1; +} + +size_t hoa_2d_get_index(size_t degree, long order) +{ + return labs(order) * 2 - (long)(order < 0); +} + +long hoa_2d_get_azimuthal_order(size_t index) +{ + return (long)((long)(index + index % 2l) / 2l) * (1l - (long)(index % 2) * 2l); +} + +size_t hoa_2d_get_degree(size_t index) +{ + return (index + index % 2) / 2ul; +} + +size_t hoa_3d_get_number_of_harmonics(size_t order) +{ + return (order + 1) * (order + 1); +} + +size_t hoa_3d_get_index(size_t degree, long order) +{ + return (size_t)((long)(degree * (degree + 1)) + order); +} + +long hoa_3d_get_azimuthal_order(size_t index) +{ + return (long)(index) - ((long)(sqrt((double)(index))) * ((long)(sqrt((double)(index))) + 1)); +} + +size_t hoa_3d_get_degree(size_t index) +{ + return (size_t)(sqrt((double)(index))); +} + +size_t hoa_processor_clip_order(void* obj, size_t order) +{ + if(order < 1) + { + pd_error(obj, "%s: bad order of decomposition.", class_getname(*(t_pd *)obj)); + pd_error(obj, "%s: receive %i but expect at least 1.", class_getname(*(t_pd *)obj), (int)order); + return 1; + } + return order; +} + +size_t hoa_processor_clip_nplanewaves(void* obj, size_t nplanewaves) +{ + if(nplanewaves < 1) + { + pd_error(obj, "%s: bad number of planewaves.", class_getname(*(t_pd *)obj)); + pd_error(obj, "%s: receive %i but expect at least 1.", class_getname(*(t_pd *)obj), (int)nplanewaves); + return 1; + } + return nplanewaves; +} + +void hoa_processor_init(void* obj, size_t nins, size_t nouts) +{ + size_t i; + t_hoa_processor* x = (t_hoa_processor*)obj; + x->f_inputs = NULL; + x->f_nins = 0; + x->f_outputs= NULL; + x->f_nouts = 0; + if(nins) + { + x->f_nins = nins; + x->f_inputs = (t_sample **)getbytes(x->f_nins * sizeof(t_sample*)); + for(i = 0; i < nins - 1; ++i) + { + signalinlet_new((t_object *)obj, 0); + } + } + if(nouts) + { + x->f_nouts = nouts; + x->f_outputs = (t_sample **)getbytes(x->f_nouts * sizeof(t_sample*)); + for(i = 0; i < nouts; ++i) + { + outlet_new((t_object *)x, &s_signal); + } + } + + + if(gensym(hoaname)->s_thing == NULL) + { + verbose(0, + "HOA Library %s (%s) for Pure Data %i.%i\n\ + Organisation: CICM - Université Paris 8 - Labex Arts H2H\n\ + Authors:\n \ + 2012: Pierre Guillot, Eliott Paris & Julien Colafrancesco\n\ + 2012-2016: Pierre Guillot & Eliott Paris\n\ + 2015: Pierre Guillot, Eliott Paris & Thomas Le Meur (Light version)\n\ + 2016: Pierre Guillot & Eliott Paris (Light version)\n\ + Pure Data implementation: Pierre Guillot, Eliott Paris & Thomas Le Meur", + hoaversion, __DATE__, PD_MAJOR_VERSION, PD_MINOR_VERSION); + gensym("hoa.library v2.3-beta")->s_thing = (struct _class **)1; + } +} + +void hoa_processor_clear(void* obj) +{ + t_hoa_processor* x = (t_hoa_processor*)obj; + if(x->f_inputs && x->f_nins) + { + freebytes(x->f_inputs, x->f_nins * sizeof(t_sample*)); + } + if(x->f_outputs && x->f_nouts) + { + freebytes(x->f_outputs, x->f_nouts * sizeof(t_sample*)); + } +} + +static t_int *hoa_processor_perform(t_int *w) +{ + t_hoa_processor *x = (t_hoa_processor *)(w[1]); + x->f_method(x, x->f_vectorsize, x->f_nins, x->f_inputs, x->f_nouts, x->f_outputs); + return (w+2); +} + +void hoa_processor_prepare(void* obj, t_hoa_processor_perfm m, t_signal **sp) +{ + size_t i; + t_hoa_processor *x = (t_hoa_processor *)(obj); + x->f_method = m; + x->f_vectorsize = sp[0]->s_n; + for(i = 0; i < x->f_nins; ++i) + { + x->f_inputs[i] = sp[i]->s_vec; + } + for(i = 0; i < x->f_nouts; ++i) + { + x->f_outputs[i] = sp[i+x->f_nins]->s_vec; + } + dsp_add(hoa_processor_perform, 1, x); +} + + diff --git a/sources/hoa.pd.h b/sources/hoa.pd.h new file mode 100644 index 0000000..af1a535 --- /dev/null +++ b/sources/hoa.pd.h @@ -0,0 +1,100 @@ +/* +// Copyright (c) 2012-2016 Pierre Guillot, Eliott Paris & Thomas Le Meur CICM, Universite Paris 8. +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "LICENSE.txt," in this distribution. +*/ + +#ifndef HOA_2D_PD_INCLUDE +#define HOA_2D_PD_INCLUDE + +#include + +typedef void (*t_hoa_processor_perfm)(void *x, size_t sampleframes, + size_t nins, t_sample **ins, + size_t nouts, t_sample **outs); + +typedef struct _hoa_processor +{ + t_object f_obj; + size_t f_vectorsize; + size_t f_nins; + t_sample** f_inputs; + size_t f_nouts; + t_sample** f_outputs; + t_hoa_processor_perfm f_method; +} t_hoa_processor; + +size_t hoa_2d_get_number_of_harmonics(size_t order); +size_t hoa_2d_get_index(size_t degree, long order); +long hoa_2d_get_azimuthal_order(size_t index); +size_t hoa_2d_get_degree(size_t index); +size_t hoa_3d_get_number_of_harmonics(size_t order); +size_t hoa_3d_get_index(size_t degree, long order); +long hoa_3d_get_azimuthal_order(size_t index); +size_t hoa_3d_get_degree(size_t index); + +size_t hoa_processor_clip_order(void* obj, size_t order); +size_t hoa_processor_clip_nplanewaves(void* obj, size_t nplanewaves); + +void hoa_processor_init(void* obj, size_t nins, size_t nouts); +void hoa_processor_clear(void* obj); +void hoa_processor_prepare(void* obj, t_hoa_processor_perfm m, t_signal **sp); + + +typedef struct _hoa_in +{ + t_object f_obj; + int f_extra; + struct _hoa_in* f_next; +} t_hoa_in; + +typedef struct _hoa_out +{ + t_object f_obj; + int f_extra; + t_outlet* f_outlet; + struct _hoa_out* f_next; +} t_hoa_out; + +typedef struct _hoa_io_tilde +{ + t_object f_obj; + int f_extra; + t_sample* f_signal; + t_float f_f; + struct _hoa_io_tilde* f_next; +} t_hoa_io_tilde; + +typedef struct _hoa_process_instance +{ + t_canvas* f_canvas; + t_hoa_in* f_ins; + t_hoa_out* f_outs; + t_hoa_io_tilde* f_ins_sig; + t_hoa_io_tilde* f_outs_sig; +} t_hoa_process_instance; + +void hoa_process_instance_setup(void); + +char hoa_process_instance_init(t_hoa_process_instance* x, t_canvas* parent, t_symbol* name, size_t argc, t_atom* argv); + +void hoa_process_instance_show(t_hoa_process_instance* x); +void hoa_process_instance_send_bang(t_hoa_process_instance* x, size_t extra); +void hoa_process_instance_send_float(t_hoa_process_instance* x, size_t extra, float f); +void hoa_process_instance_send_symbol(t_hoa_process_instance* x, size_t extra, t_symbol* s); +void hoa_process_instance_send_list(t_hoa_process_instance* x, size_t extra, t_symbol* s, int argc, t_atom* argv); +void hoa_process_instance_send_anything(t_hoa_process_instance* x, size_t extra, t_symbol* s, int argc, t_atom* argv); + +size_t hoa_process_instance_get_ninputs(t_hoa_process_instance* x); +size_t hoa_process_instance_get_noutputs(t_hoa_process_instance* x); +void hoa_process_instance_set_outlet(t_hoa_process_instance* x, size_t index, t_outlet* outlet); +char hoa_process_instance_has_inputs_sig_static(t_hoa_process_instance* x); +size_t hoa_process_instance_get_ninputs_sig_extra(t_hoa_process_instance* x); +char hoa_process_instance_has_outputs_sig_static(t_hoa_process_instance* x); +size_t hoa_process_instance_get_noutputs_sig_extra(t_hoa_process_instance* x); + +void hoa_process_instance_set_inlet_sig(t_hoa_process_instance* x, size_t index, t_sample* s); +void hoa_process_instance_set_outlet_sig(t_hoa_process_instance* x, size_t index, t_sample* s); + + +#endif //HOA_2D_PD_INCLUDE pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy