* Added (bad) circular buffer set-up for reading input audio
* Pitch will be very noisily displayed on screen via the monkey's
vertical position
* Changed scripts slightly to use hot-reloading
* Audio takes ~3 seconds to initialize on my machine, so I moved it to
a separate thread. There are now some new bugs where the app can crash
if pressing space before initialization is finished
* Reformatted, added some perf scopes
Still a lot more to do, but it's a good checkpoint.
* Rigged monkey for test animation
* Update Ogre for my pull request to fix Release Samples build
* Note that this commit also requires
https://github.com/OGRECave/ogre-next/pull/181 , which fixes animation
in my current setup
* Convert VocalGame to use Math.cake instead of hand-rolled vectors
* Update cakelisp for HotReloading const variable filtering
* Add "HandmadeMath" build label as a temporary workaround to
unnecessary rebuilding of non-math libs
* Rename vec accessors to be dimension agnostic
* Add more useful vector math functions
* Build Ogre meshes and convert .png textures to dds, all in a
pre-build step. There's plenty of room for improvement, but it's a
good stop-gap for now
* Added more ignores
* Removed extra BuildDependencies.sh because it's no longer needed!
* Build_Debug.sh will now build Cakelisp itself, keeping it up-to-date
in case you update or are iterating on it
* Update Cakelisp for run-process-sequential-or and comptime function
fix (building build-ogre and build-sdl is how the bug emerged)
* Ogre and Ogre's dependencies now built via run-process functions
* Updated Ogre because I thought it might have issues (I caused the
issues). It's good to be more up-to-date anyways
* Removed extra BuildDependencies.sh because it's no longer needed!
* Build_Debug.sh will now build Cakelisp itself, keeping it up-to-date
in case you update or are iterating on it
* Update Cakelisp for run-process-sequential-or and comptime function
fix (building build-ogre and build-sdl is how the bug emerged)
* Ogre and Ogre's dependencies now built via run-process functions
* I had to make changes to remove unnecessary global includes, which
caused command changes on files across projects
* Added Math.cake, which revealed a problem in macro
evaluation (delimiters need to be part of the context when evaluating
macros after the first evaluation)
* Cleaned up namings in OgreInitialize.cake
* Added ogre-create-light
* Created OgreHlms.cpp, which is copied from Ogre's Sample
PbsMaterialsGameState.cpp and modified
* Moved declare-extern-function so I could avoid making a header file
for test file OgreHlms.cpp
* Reorganized where build options are in a few files
* Update Cakelisp for HotReloading copy lib to Active version so it
the original can be modified (otherwise, it can cause a crash)
* Only reload on key release so it isn't reloaded for as long as the
user holds the key (many times per quick press, even)
* Update Cakelisp for proper executable copy procedure
* Use C linkage only because HotReloadingCodeModifier imports
HotReloading.cake with C linkage. If it didn't it could be removed
It's janky, but it's a good first step!
* Update Cakelisp for module vs. global C search directories. This was
necessary so HotReloading.hpp can be found by every module in the
hot-reloading library
* command-add-string-argument is now part of Cakelisp
* Created Loader, which handles main, hot-reloading, and links the
libraries the reloadable library needs. By having those libraries in
the loader, they will not be destroyed when the reloadable is
destroyed
* Moved state variables and changed array to pointer for VocalGame to
support hot-reloading
* Ogre materials are now loading, though my Monkey material is
incompatible with Ogre 2
* Convert audio from recording format to playback format. This was
necessary because I record at 48kHz but playback is at
44.1kHz. Without this conversion, recorded audio would sound lower,
because it was being played at a slower rate
* Initialize audio buffer to correct silence value. This prevents
popping when the recording didn't set the entire buffer
* Select different devices when pulseaudio is the active
driver. Evidently launching from Emacs will cause a different audio
driver to be active (alsa from Emacs, pulseaudio from the command
line)
* Abort audio initialization if either device fails
* Update Cakelisp for --execute option
* Discovered problem where recording device is sampled at a higher
rate than playback device. I'll need to resample in order to
playback properly
* Added some missing audio-close places
* Monkey now moves forward/backward depending on loudness of sample
* Make sure to close audio devices, else the operating system will
think the device is still busy, and no other apps will play audio
* Removed unused code and comments which are likely to get out of sync
* Added audio-dump-recorded-buffer, which outputs in a format gnuplot
can easily read
* Added configuration for a pretty plot of the audio data
* Update Cakelisp for parentheses around deref and addr, resolving
ambiguities
* Added audio output to VocalGame. I had a few false starts due to not
having my good device selected as default. The current version won't
work on any other machine because I hard-coded the audio device
* Moved test files into src/ so the test directory can accumulate
necessary data without it being hard to find the code
* Fix SDL build including the '-I', which breaks things