Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | wetbadger |
I was following the tutorial here: Custom AudioStreams — Godot Engine (3.6) documentation in English, but the files don’t seem to compile.
scons -j8 platform=linuxbsd
scons: Reading SConscript files ...
Platform "linuxbsd" is still called "x11" in Godot 3.x. Building for platform "x11".
Warning: Speech Dispatcher development libraries not found. Disabling Text-to-Speech support.
Note: Building a debug binary (which will run slowly). Use `target=release_debug` to build an optimized release binary.
Warning: module 'x11' uses a deprecated `can_build` signature in its config.py file, it should be `can_build(env, platform)`.
Checking for C header file mntent.h... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
[ 30%] Compiling ==> modules/audiostream/audiostream.cpp
[ 30%] Compiling ==> modules/audiostream/audiostreamplayer.cpp
[ 46%] modules/audiostream/audiostream.cpp: In member function 'virtual Ref<AudioStreamPlayback> AudioStreamMyTone::instance_playback()':
modules/audiostream/audiostream.cpp:10:13: error: 'AudioStreamPlaybackMyTone' was not declared in this scope; did you mean 'AudioStreamPlaybackResampled'?
10 | Ref<AudioStreamPlaybackMyTone> talking_tree;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| AudioStreamPlaybackResampled
modules/audiostream/audiostream.cpp:10:39: error: template argument 1 is invalid
10 | Ref<AudioStreamPlaybackMyTone> talking_tree;
| ^
modules/audiostream/audiostream.cpp:11:22: error: request for member 'instance' in 'talking_tree', which is of non-class type 'int'
11 | talking_tree.instance();
| ^~~~~~~~
modules/audiostream/audiostream.cpp:12:21: error: base operand of '->' is not a pointer
12 | talking_tree->base = Ref<AudioStreamMyTone>(this);
| ^~
modules/audiostream/audiostream.cpp:13:16: error: could not convert 'talking_tree' from 'int' to 'Ref<AudioStreamPlayback>'
13 | return talking_tree;
| ^~~~~~~~~~~~
| |
| int
[ 46%] In file included from modules/audiostream/audiostreamplayer.cpp:3:
modules/audiostream/audiostreamplayer.h:21:13: error: 'AudioStreamMyTone' was not declared in this scope
21 | Ref<AudioStreamMyTone> base;
| ^~~~~~~~~~~~~~~~~~
modules/audiostream/audiostreamplayer.h:21:31: error: template argument 1 is invalid
21 | Ref<AudioStreamMyTone> base;
| ^
[ 46%] modules/audiostream/audiostreamplayer.cpp: In constructor 'AudioStreamPlaybackMyTone::AudioStreamPlaybackMyTone()':
modules/audiostream/audiostreamplayer.cpp:12:9: error: 'zeromem' was not declared in this scope
12 | zeromem(pcm_buffer, PCM_BUFFER_SIZE);
| ^~~~~~~
modules/audiostream/audiostreamplayer.cpp: In member function 'virtual void AudioStreamPlaybackMyTone::stop()':
modules/audiostream/audiostreamplayer.cpp:23:13: error: base operand of '->' is not a pointer
23 | base->reset();
| ^~
modules/audiostream/audiostreamplayer.cpp: In member function 'virtual void AudioStreamPlaybackMyTone::seek(float)':
modules/audiostream/audiostreamplayer.cpp:34:13: error: base operand of '->' is not a pointer
34 | base->set_position(uint64_t(p_time * base->mix_rate) << MIX_FRAC_BITS);
| ^~
modules/audiostream/audiostreamplayer.cpp:34:50: error: base operand of '->' is not a pointer
34 | base->set_position(uint64_t(p_time * base->mix_rate) << MIX_FRAC_BITS);
| ^~
modules/audiostream/audiostreamplayer.cpp:30:15: warning: unused variable 'max' [-Wunused-variable]
30 | float max = get_length();
| ^~~
[ 46%] modules/audiostream/audiostreamplayer.cpp: In member function 'virtual void AudioStreamPlaybackMyTone::mix(AudioFrame*, float, int)':
modules/audiostream/audiostreamplayer.cpp:41:9: error: 'zeromem' was not declared in this scope
41 | zeromem(pcm_buffer, PCM_BUFFER_SIZE);
| ^~~~~~~
modules/audiostream/audiostreamplayer.cpp:43:13: error: base operand of '->' is not a pointer
43 | base->gen_tone(buf, p_frames);
| ^~
[ 60%] Compiling ==> platform/osx/export/export.cpp
[ 60%] Compiling ==> platform/osx/export/lipo.cpp
[ 60%] Compiling ==> platform/osx/export/macho.cpp
[ 60%] Compiling ==> platform/osx/export/plist.cpp
[ 60%] Compiling ==> platform/uwp/export/export.cpp
[ 60%] Compiling ==> platform/windows/export/export.cpp
scons: *** [modules/audiostream/audiostream.x11.tools.64.o] Error 1
scons: *** [modules/audiostream/audiostreamplayer.x11.tools.64.o] Error 1
scons: building terminated because of errors.
[Time elapsed: 00:00:05.713]
The SCsub, config.py, and register_types files are set up according to this: Custom modules in C++ — Godot Engine (3.6) documentation in English
I’m no C++ expert. Why is AudioStreamPlaybackMyTone not declared in this scope? In audiostream_mytone.h it looks like it is declared as “friend class AudioStreamPlaybackMyTone”