love-pd-audio module for interactive audio with PureData

Showcase your libraries, tools and other projects that help your fellow love users.
Post Reply
User avatar
ghoulsblade
Party member
Posts: 111
Joined: Sun Oct 31, 2010 6:11 pm

love-pd-audio module for interactive audio with PureData

Post by ghoulsblade » Tue Sep 11, 2012 8:37 pm

Hi all!

here is a new experimental toy for audio-lovers :
https://github.com/ghoulsblade/love-pd-audio
An audio module for lua / love2d (win.dll/linux.so/mac?) using puredata for interactive audio manipulation/generation.

warning, still experimental. Bugs are likely to creep up as we test the different functionalities. See also github page for list of known issues.

PureData files should make it possible to play midi files using sampled instruments, do realtime audio-generation and modification with configurable effect pipes like reverb etc,
as well as all do advanced audio feedback like modifying music dynamically based on game happenings, and using the current point in the music to customise sound effects to fit in better.

PureData is a tool to combine effects and generators in a visual way, usable by audio artists without any experience in text-based programming. The combinations are saved as *.pd files, which can be played in löve2D using this module. Signals can be sent and received to make the music interactive and/or tweak game elements based on the audio.

Some examples from MarioGalaxy or similar games that should be possible to realise using PureData:
* music speed and mood adapts to the speed of a player balancing/moving on some big round object
* time-limited power-up music becomes faster and more panicked as time runs out
* sound effects (gui:character-select/level-select, ingame jump-on-buttons) are adjusted to fit the currently playing notes in the music
* music instruments are modified when player enters/exits water, also reverb etc..
* bonus level with music being played/advanced as player collects a row of items
* enemy noises adjusted depending on distance to player
* music adjusted based on player hitpoints and current ingame mood/area (fight/peaceful/cave/plains/water/...)
* synching player steps or other game elements to music rythm or midi notes

Binaries for win(.dll) and ubuntu/debian(.so) are up now, see github page above for api and example code and download links.
Some more complex examples for pd files and using them in löve will be added here as we make them.
Last edited by ghoulsblade on Tue Sep 11, 2012 8:45 pm, edited 1 time in total.
love-android - gamejams

User avatar
Nixola
Inner party member
Posts: 1949
Joined: Tue Dec 06, 2011 7:11 pm
Location: Italy

Re: love-pd-audio module for interactive audio with PureData

Post by Nixola » Tue Sep 11, 2012 8:40 pm

Do I have to download OpenAL from your github?
lf = love.filesystem
ls = love.sound
la = love.audio
lp = love.physics
lt = love.thread
li = love.image
lg = love.graphics

User avatar
ghoulsblade
Party member
Posts: 111
Joined: Sun Oct 31, 2010 6:11 pm

Re: love-pd-audio module for interactive audio with PureData

Post by ghoulsblade » Tue Sep 11, 2012 8:43 pm

the OpenAL32.dll ? no, that's the one from love 0.8 32bit windows binary.
love-android - gamejams

coffee
Party member
Posts: 1206
Joined: Wed Nov 02, 2011 9:07 pm

Re: love-pd-audio module for interactive audio with PureData

Post by coffee » Tue Sep 11, 2012 9:48 pm

What's seems to be the problem with getting a dylib? There isn't none inside OSX distro package of puredata. Only a large amont of other audio dylibs.
I tried to compile your sources but I will need first the osx binary right? I got this error

Code: Select all

make -f Makefile
g++ -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./include -DHAVE_LIBDL -O3 -arch x86_64 -arch i386 -g   -c -o lovepdaudio.o lovepdaudio.cpp
lovepdaudio.cpp:104:63: error: OpenAL/alext.h: No such file or directory
lovepdaudio.cpp:104:63: error: OpenAL/alext.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/ow/ow26RRQaFhOwBJMxRcKOJE+++TI/-Tmp-//ccQt3bVG.out
make: *** [lovepdaudio.o] Error 1
EDITED: makefile is requesting OpenAL but only a AL folder is available. I renamed dir. I got a long list of undefined symbos. Give up, this (C++/compile) is not for me, lol

Code: Select all

make -f Makefile
g++ -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./include -DHAVE_LIBDL -O3 -arch x86_64 -arch i386 -g   -c -o lovepdaudio.o lovepdaudio.cpp
cc -o bin/lovepdaudio.dylib lovepdaudio.o -arch x86_64 -arch i386 -dynamiclib -ldl -lm 
Undefined symbols:
  "_libpd_getdollarzero", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
  "_libpd_aftertouch", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
  "operator delete(void*)", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alGetBufferi", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
  "_alGetError", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alGenBuffers", referenced from:
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
  "_lua_pushcclosure", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "___gxx_personality_v0", referenced from:
      cLuaAudioStream::setSource(unsigned int)in lovepdaudio.o
      cLuaAudioStream::rewindAtomic()       in lovepdaudio.o
      cLuaAudioStream::getFormat(int, int) constin lovepdaudio.o
      L_helloworld(lua_State*)      in lovepdaudio.o
      ParamLUData(lua_State*, int) in lovepdaudio.o
      ParamInt(lua_State*, int)in lovepdaudio.o
      PushLUData(lua_State*, void*)in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      _luaopen_lovepdaudio in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_clear_search_path(lua_State*)in lovepdaudio.o
      PushInt(lua_State*, int)in lovepdaudio.o
      ParamFloat(lua_State*, int) in lovepdaudio.o
      ParamString(lua_State*, int) in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_symbol(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_to_search_path(lua_State*)  in lovepdaudio.o
      GetMyAudio()     in lovepdaudio.o
      PCallWithErrFuncWrapper(lua_State*, int, int)in lovepdaudio.o
      cLuaAudioStream::streamAtomic(unsigned int, cLuaAudioDecoder*)in lovepdaudio.o
      cLuaAudioStream::isStopped() const in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
      cLuaAudioStream::resumePlayback()       in lovepdaudio.o
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_openfile(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bang(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_blocksize(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_arraysize(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_message(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_list(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_symbol(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_unbind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_closefile(lua_State*)  in lovepdaudio.o
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
      lua_libpd_hook(char const*, char const*, ...)in lovepdaudio.o
      callback_libpd_noteonhook(int, int, int)in lovepdaudio.o
      callback_libpd_symbolhook(char const*, char const*)in lovepdaudio.o
      callback_libpd_floathook(char const*, float)in lovepdaudio.o
      callback_libpd_printhook(char const*)in lovepdaudio.o
      callback_libpd_banghook(char const*)in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
      L_PureDataPlayer_Update(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      cLuaAudioDecoder::isFinished()       in lovepdaudio.o
      cLuaAudioDecoder::getBuffer() const in lovepdaudio.o
      cLuaAudioDecoder::decode()      in lovepdaudio.o
      cLuaAudioDecoder::getChannels()       in lovepdaudio.o
      cLuaAudioDecoder::getBits()      in lovepdaudio.o
      cLuaAudioDecoder::getSampleRate()       in lovepdaudio.o
      cLuaAudioDecoder_Dummy::isFinished()       in lovepdaudio.o
      cLuaAudioDecoder_Dummy::getBuffer() const in lovepdaudio.o
      cLuaAudioDecoder_Dummy::decode()      in lovepdaudio.o
      cLuaAudioDecoder_Dummy::getChannels()       in lovepdaudio.o
      cLuaAudioDecoder_Dummy::getBits()      in lovepdaudio.o
      cLuaAudioDecoder_Dummy::getSampleRate()       in lovepdaudio.o
      cLuaAudioDecoder_LibPD::getBuffer() const in lovepdaudio.o
      cLuaAudioDecoder_LibPD::getChannels()       in lovepdaudio.o
      cLuaAudioDecoder_LibPD::getBits()      in lovepdaudio.o
      cLuaAudioDecoder_LibPD::getSampleRate()       in lovepdaudio.o
      cLuaAudioDecoder_LibPD::decode()      in lovepdaudio.o
      CIE in lovepdaudio.o
  "_lua_pushlightuserdata", referenced from:
      PushLUData(lua_State*, void*)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_openfile(lua_State*)  in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_add_float", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_float(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_blocksize", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_blocksize(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_bind", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bind(lua_State*)   in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
  "_libpd_printhook", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
     (maybe you meant: callback_libpd_printhook(char const*))
  "_lua_pcall", referenced from:
      PCallWithErrFuncWrapper(lua_State*, int, int)in lovepdaudio.o
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_alDeleteBuffers", referenced from:
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
  "_lua_tolstring", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_lua_type", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_lua_touserdata", referenced from:
      ParamLUData(lua_State*, int) in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_unbind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_closefile(lua_State*)  in lovepdaudio.o
      L_PureDataPlayer_Update(lua_State*)      in lovepdaudio.o
  "_libpd_finish_list", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_list(lua_State*)   in lovepdaudio.o
  "_libpd_finish_message", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_message(lua_State*)   in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_pitchbend", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
  "_libpd_sysrealtime", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
  "_lua_settop", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_libpd_controlchange", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
  "operator new[](unsigned long)", referenced from:
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alSourcePlay", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_alBufferData", referenced from:
      cLuaAudioStream::streamAtomic(unsigned int, cLuaAudioDecoder*)in lovepdaudio.o
  "_libpd_banghook", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
     (maybe you meant: callback_libpd_banghook(char const*))
  "_alGetSourcef", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
  "_alGetSourcei", referenced from:
      cLuaAudioStream::isStopped() const in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_PureDataPlayer_Update(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_start_message", referenced from:
      L_test02(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alGenSources", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_add_to_search_path", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_to_search_path(lua_State*)  in lovepdaudio.o
  "_libpd_programchange", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
  "_lua_pushinteger", referenced from:
      PushInt(lua_State*, int)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bang(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_blocksize(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_arraysize(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_message(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_list(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_symbol(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
  "_alSourceUnqueueBuffers", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "_luaL_checknumber", referenced from:
      ParamFloat(lua_State*, int) in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
  "_alcGetError", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alcCreateContext", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
  "_libpd_float", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
     (maybe you meant: callback_libpd_floathook(char const*, float))
  "_libpd_symbol", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_symbol(lua_State*)  in lovepdaudio.o
     (maybe you meant: callback_libpd_symbolhook(char const*, char const*))
  "_libpd_midibyte", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
  "_luaL_openlib", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_openfile", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_openfile(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_symbolhook", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
     (maybe you meant: callback_libpd_symbolhook(char const*, char const*))
  "operator new(unsigned long)", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_process_short", referenced from:
      cLuaAudioDecoder_LibPD::decode()      in lovepdaudio.o
  "_libpd_clear_search_path", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_clear_search_path(lua_State*)in lovepdaudio.o
  "_luaL_checkinteger", referenced from:
      ParamInt(lua_State*, int)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_init_audio", referenced from:
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alcOpenDevice", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_bang", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bang(lua_State*)  in lovepdaudio.o
     (maybe you meant: callback_libpd_banghook(char const*))
  "_libpd_add_symbol", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_symbol(lua_State*)   in lovepdaudio.o
  "_lua_getfield", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_luaL_checklstring", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_init", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "_alcMakeContextCurrent", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_lua_setfield", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "_libpd_noteon", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
     (maybe you meant: callback_libpd_noteonhook(int, int, int))
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for cLuaAudioDecoderin lovepdaudio.o
  "_libpd_unbind", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_unbind(lua_State*)   in lovepdaudio.o
  "_alSourcef", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_alcGetString", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alSourcei", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for cLuaAudioDecoder_LibPDin lovepdaudio.o
      typeinfo for cLuaAudioDecoder_Dummyin lovepdaudio.o
  "_alSourceQueueBuffers", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_libpd_closefile", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_closefile(lua_State*)  in lovepdaudio.o
  "_lua_gettop", referenced from:
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_sysex", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
  "_lua_pushstring", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_libpd_arraysize", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_arraysize(lua_State*)   in lovepdaudio.o
  "_libpd_noteonhook", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
     (maybe you meant: callback_libpd_noteonhook(int, int, int))
  "_alSourceStop", referenced from:
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "_libpd_floathook", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
     (maybe you meant: callback_libpd_floathook(char const*, float))
  "_libpd_polyaftertouch", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Undefined symbols:
  "_libpd_getdollarzero", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
  "_libpd_aftertouch", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
  "operator delete(void*)", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alGetBufferi", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
  "_alGetError", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alGenBuffers", referenced from:
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
  "_lua_pushcclosure", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "___gxx_personality_v0", referenced from:
      ___gxx_personality_v0$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: ___gxx_personality_v0$non_lazy_ptr)
  "_lua_pushlightuserdata", referenced from:
      PushLUData(lua_State*, void*)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_openfile(lua_State*)  in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_add_float", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_float(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_blocksize", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_blocksize(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_bind", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bind(lua_State*)   in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
  "_libpd_printhook", referenced from:
      _libpd_printhook$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: _libpd_printhook$non_lazy_ptr, callback_libpd_printhook(char const*))
  "_lua_pcall", referenced from:
      PCallWithErrFuncWrapper(lua_State*, int, int)in lovepdaudio.o
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_alDeleteBuffers", referenced from:
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      cLuaAudioStream::~cLuaAudioStream()in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
  "_lua_tolstring", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_lua_type", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_lua_touserdata", referenced from:
      ParamLUData(lua_State*, int) in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_unbind(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_closefile(lua_State*)  in lovepdaudio.o
      L_PureDataPlayer_Update(lua_State*)      in lovepdaudio.o
  "_libpd_finish_list", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_list(lua_State*)   in lovepdaudio.o
  "_libpd_finish_message", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_message(lua_State*)   in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_pitchbend", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
  "_libpd_sysrealtime", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
  "_lua_settop", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_libpd_controlchange", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
  "operator new[](unsigned long)", referenced from:
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alSourcePlay", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_libpd_banghook", referenced from:
      _libpd_banghook$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: _libpd_banghook$non_lazy_ptr, callback_libpd_banghook(char const*))
  "_alBufferData", referenced from:
      cLuaAudioStream::streamAtomic(unsigned int, cLuaAudioDecoder*)in lovepdaudio.o
  "_alGetSourcef", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
  "_alGetSourcei", referenced from:
      cLuaAudioStream::isStopped() const in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_PureDataPlayer_Update(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_start_message", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alGenSources", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_add_to_search_path", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_to_search_path(lua_State*)  in lovepdaudio.o
  "_libpd_programchange", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
  "_lua_pushinteger", referenced from:
      PushInt(lua_State*, int)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bang(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_blocksize(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_arraysize(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_message(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_finish_list(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_symbol(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_getdollarzero(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
  "_alSourceUnqueueBuffers", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "_luaL_checknumber", referenced from:
      ParamFloat(lua_State*, int) in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_float(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
  "_alcGetError", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alcCreateContext", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
  "_libpd_float", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_float(lua_State*)  in lovepdaudio.o
     (maybe you meant: callback_libpd_floathook(char const*, float), _libpd_floathook$non_lazy_ptr )
  "_libpd_symbol", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_symbol(lua_State*)  in lovepdaudio.o
     (maybe you meant: _libpd_symbolhook$non_lazy_ptr, callback_libpd_symbolhook(char const*, char const*))
  "_libpd_midibyte", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage", referenced from:
      __ZNSs4_Rep20_S_empty_rep_storageE$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: __ZNSs4_Rep20_S_empty_rep_storageE$non_lazy_ptr)
  "_luaL_openlib", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_openfile", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_openfile(lua_State*)  in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_symbolhook", referenced from:
      _libpd_symbolhook$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: _libpd_symbolhook$non_lazy_ptr, callback_libpd_symbolhook(char const*, char const*))
  "operator new(unsigned long)", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      cLuaAudioStream::cLuaAudioStream(cLuaAudioDecoder*, int)in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_process_short", referenced from:
      cLuaAudioDecoder_LibPD::decode()      in lovepdaudio.o
  "_libpd_clear_search_path", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_clear_search_path(lua_State*)in lovepdaudio.o
  "_luaL_checkinteger", referenced from:
      ParamInt(lua_State*, int)in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_start_message(lua_State*)  in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_controlchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysrealtime(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_midibyte(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_aftertouch(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_pitchbend(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_programchange(lua_State*)   in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_init_audio", referenced from:
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_alcOpenDevice", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_libpd_bang", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_bang(lua_State*)  in lovepdaudio.o
     (maybe you meant: _libpd_banghook$non_lazy_ptr, callback_libpd_banghook(char const*))
  "_libpd_add_symbol", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_add_symbol(lua_State*)   in lovepdaudio.o
  "_lua_getfield", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_luaL_checklstring", referenced from:
      ParamString(lua_State*, int) in lovepdaudio.o
      L_test02(lua_State*)     in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_init", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "_alcMakeContextCurrent", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_lua_setfield", referenced from:
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
      RegisterLibPD(lua_State*)     in lovepdaudio.o
  "_libpd_noteon", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_noteon(lua_State*)   in lovepdaudio.o
     (maybe you meant: callback_libpd_noteonhook(int, int, int), _libpd_noteonhook$non_lazy_ptr )
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for cLuaAudioDecoderin lovepdaudio.o
  "_libpd_unbind", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_unbind(lua_State*)   in lovepdaudio.o
  "_alSourcef", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_alcGetString", referenced from:
      _luaopen_lovepdaudio in lovepdaudio.o
  "_alSourcei", referenced from:
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for cLuaAudioDecoder_LibPDin lovepdaudio.o
      typeinfo for cLuaAudioDecoder_Dummyin lovepdaudio.o
  "_alSourceQueueBuffers", referenced from:
      cLuaAudioStream::update()      in lovepdaudio.o
      cLuaAudioStream::playAtomic()       in lovepdaudio.o
  "_libpd_closefile", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_closefile(lua_State*)  in lovepdaudio.o
  "_lua_gettop", referenced from:
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
      L_CreatePureDataPlayer(lua_State*)      in lovepdaudio.o
  "_libpd_sysex", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_sysex(lua_State*)   in lovepdaudio.o
  "_lua_pushstring", referenced from:
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
      LuaPCall_StrStr(lua_State*, char const*, char const*, char const*)in lovepdaudio.o
  "_libpd_arraysize", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_arraysize(lua_State*)   in lovepdaudio.o
  "_libpd_noteonhook", referenced from:
      _libpd_noteonhook$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: callback_libpd_noteonhook(int, int, int), _libpd_noteonhook$non_lazy_ptr )
  "_alSourceStop", referenced from:
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
      cLuaAudioStream::stopAtomic()       in lovepdaudio.o
  "_libpd_floathook", referenced from:
      _libpd_floathook$non_lazy_ptr in lovepdaudio.o
     (maybe you meant: callback_libpd_floathook(char const*, float), _libpd_floathook$non_lazy_ptr )
  "_libpd_polyaftertouch", referenced from:
      RegisterLibPD(lua_State*)::cTempClass::LUABIND_libpd_polyaftertouch(lua_State*)   in lovepdaudio.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/ow/ow26RRQaFhOwBJMxRcKOJE+++TI/-Tmp-//cczLsaXN.out (No such file or directory)
make: *** [bin/lovepdaudio.dylib] Error 1
 

User avatar
ghoulsblade
Party member
Posts: 111
Joined: Sun Oct 31, 2010 6:11 pm

Re: love-pd-audio module for interactive audio with PureData

Post by ghoulsblade » Wed Sep 12, 2012 6:46 am

i didn't get to test the mac part yet, i added -llua -lopenal -lpd to the makefile part for mac, and a note in the readme :
* see https://love2d.org/sdk/love-osx-frameworks.zip for required mac libs (openal missing?), you'll also need to compile https://github.com/libpd/libpd
love-android - gamejams

coffee
Party member
Posts: 1206
Joined: Wed Nov 02, 2011 9:07 pm

Re: love-pd-audio module for interactive audio with PureData

Post by coffee » Wed Sep 12, 2012 7:41 am

ghoulsblade wrote:i didn't get to test the mac part yet, i added -llua -lopenal -lpd to the makefile part for mac, and a note in the readme :
* see https://love2d.org/sdk/love-osx-frameworks.zip for required mac libs (openal missing?), you'll also need to compile https://github.com/libpd/libpd
Ah interesting. OSX frameworks were silently updated. Some months ago was missing two of them. I complained about that once (viewtopic.php?f=4&t=9139)But I had already love osx frameworks installed. OpenAL library framework could be get here if is the right one. (well installed for me a openal.framework).
http://connect.creativelabs.com/openal/ ... Items.aspx
http://connect.creativelabs.com/openal/ ... er_OSX.dmg
About libpd I didn't found a ready framework installer. And I will need to check this better later because it requires Jack that I think I uninstalled because something I didn't like. Well If I didn't succeed it's ok. I was only to see your project working. Thanks for the help ghoulsblade.:)

EDITED: I compiled a dylib for libpd. It's that useful for you or anyone?
libpd.dylib.zip
(671.03 KiB) Downloaded 200 times

User avatar
ghoulsblade
Party member
Posts: 111
Joined: Sun Oct 31, 2010 6:11 pm

Re: love-pd-audio module for interactive audio with PureData

Post by ghoulsblade » Mon Sep 24, 2012 7:23 pm

weekend jam test of love-pd-audio successfully completed,
5 tracks of different instruments being mixed randomly,
sound effects for shots, explosions and powerups are adjusted to fit the current notes of the music,
activating shield by rightclick causes an underwater-like effect on all audio.

Download (windows exe,76mb) : http://ghoulsblade.schattenkind.net/muc ... X-v0.5.zip
MiniLudumDare entry : http://www.ludumdare.com/compo/minild-3 ... &uid=13111
MiniGameJam wiki page : http://gamedevmuc.de/wiki/index.php/PureDataJam
13111-shot0.png
13111-shot0.png (162.97 KiB) Viewed 5638 times
love-android - gamejams

User avatar
McMalloc
Prole
Posts: 5
Joined: Thu Jun 28, 2012 9:14 am

Re: love-pd-audio module for interactive audio with PureData

Post by McMalloc » Mon Sep 24, 2012 9:49 pm

I see great possibilities for interactive audio applications! :D

But the most interesting part for game development should be the possibility to implement custom audio filters since the standard love.audio module does not support this. Maybe you want to consider setting up a little tutorial for adding a little filter to a playing source :)

User avatar
ghoulsblade
Party member
Posts: 111
Joined: Sun Oct 31, 2010 6:11 pm

Re: love-pd-audio module for interactive audio with PureData

Post by ghoulsblade » Tue Sep 25, 2012 6:38 am

Hmm, it's not currently possible to filter löve-audio output.
But good idea, i'll have to look into it, maybe i can make it possible without overly dirty hacks that would make it version dependent.
So far if you want to apply audio-filters to some audio, the audio has to be added to the pd part.

A little background on the why and how :
The löve audio api doesn't allow streaming realtime generated audio data.
The löve audio api is designed for pre-generated audio, and that would be far too much delay for "interactive".
I cannot really extend the existing audio system in the löve.exe from a lua module i think.
Except for a dirty hack replacing it entirely, but that would suck for future löve versions.
Currently the module has it's own independent audio system, also using openal and based on the löve sourcecode, but not connecting to audio system of the running löve.
Maybe i could make a Stream class that inherits from the löve one if i use the löve headers,
but potential problems include delay being too large (löve is designed for pre-generated audio) and the löve.exe not exporting the symbols.
One weird idea would be using the löve audio-output as audio-input for pure-data, that would allow processing before being output on the speakers, but i can't think of a way to do that at the moment.
love-android - gamejams

User avatar
McMalloc
Prole
Posts: 5
Joined: Thu Jun 28, 2012 9:14 am

Re: love-pd-audio module for interactive audio with PureData

Post by McMalloc » Tue Sep 25, 2012 8:21 am

I see the problem.. Well, I will definitly watch for future developments of your project :) Maybe the maintainers get inspired and add a few basic built-in effects (reverb, frequency pass).

Post Reply

Who is online

Users browsing this forum: No registered users and 26 guests