Skip to content

Document PV UGens' interface #37

Description

@jamshark70

I attempted to build a PV plug-in using cookiecutter, and ran into trouble (below).

It looks like JMc's macros (PV_GET_BUF) are based on the old I/O macros, and that these are incompatible with the plug-in interface improvements recommended herein.

I'm not particularly skilled I am particularly unskilled in C++ so there's a fairly high likelihood that any attempt I might make would just be muddled, so I'll leave it with an issue report.

[ 25%] Building CXX object CMakeFiles/PV_FreezeMerge_scsynth.dir/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp.o
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:8:24: error: ‘ft’ was declared ‘extern’ and later ‘static’ [-fpermissive]
    8 | static InterfaceTable* ft;
      |                        ^~
In file included from /home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:5:
/home/xxxx/share/superc/include/plugin_interface/FFT_UGens.h:153:24: note: previous declaration of ‘ft’
  153 | extern InterfaceTable* ft;
      |                        ^~
In file included from /home/xxxx/share/superc/include/plugin_interface/SC_PlugIn.h:25,
                 from /home/xxxx/share/superc/include/plugin_interface/SC_PlugIn.hpp:25,
                 from /home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:4:
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp: In constructor ‘PV_FreezeMerge::PV_FreezeMerge::PV_FreezeMerge()’:
/home/xxxx/share/superc/include/plugin_interface/SC_Unit.h:68:21: error: ‘unit’ was not declared in this scope; did you mean ‘Unit’?
   68 | #define OUT(index) (unit->mOutBuf[index])
      |                     ^~~~
/home/xxxx/share/superc/include/plugin_interface/Unroll.h:133:19: note: in expansion of macro ‘OUT’
  133 | #define ZOUT0(i) (OUT(i)[0]) // get first sample
      |                   ^~~
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:14:9: note: in expansion of macro ‘ZOUT0’
   14 |         ZOUT0(0) = ZIN0(0);
      |         ^~~~~
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp: At global scope:
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:22:1: error: redefinition of ‘PV_FreezeMerge::PV_FreezeMerge::PV_FreezeMerge()’
   22 | PV_FreezeMerge::PV_FreezeMerge() {
      | ^~~~~~~~~~~~~~
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:12:1: note: ‘PV_FreezeMerge::PV_FreezeMerge::PV_FreezeMerge()’ previously defined here
   12 | PV_FreezeMerge::PV_FreezeMerge() {
      | ^~~~~~~~~~~~~~
In file included from /home/xxxx/share/superc/include/plugin_interface/SC_PlugIn.h:25,
                 from /home/xxxx/share/superc/include/plugin_interface/SC_PlugIn.hpp:25,
                 from /home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:4:
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp: In member function ‘void PV_FreezeMerge::PV_FreezeMerge::next(int)’:
/home/xxxx/share/superc/include/plugin_interface/SC_Unit.h:67:20: error: ‘unit’ was not declared in this scope; did you mean ‘Unit’?
   67 | #define IN(index) (unit->mInBuf[index])
      |                    ^~~~
/home/xxxx/share/superc/include/plugin_interface/Unroll.h:129:18: note: in expansion of macro ‘IN’
  129 | #define ZIN0(i) (IN(i)[0]) // get first sample
      |                  ^~
/home/xxxx/share/superc/include/plugin_interface/FFT_UGens.h:81:21: note: in expansion of macro ‘ZIN0’
   81 |     float fbufnum = ZIN0(0);                                                                                           \
      |                     ^~~~
/home/xxxx/share/tools/pvfreeze2/pv_freezemerge/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp:29:9: note: in expansion of macro ‘PV_GET_BUF’
   29 |         PV_GET_BUF
      |         ^~~~~~~~~~
gmake[2]: *** [CMakeFiles/PV_FreezeMerge_scsynth.dir/build.make:76: CMakeFiles/PV_FreezeMerge_scsynth.dir/plugins/PV_FreezeMerge/PV_FreezeMerge.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/PV_FreezeMerge_scsynth.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions