Haxademic
A personal toolkit for Java/Processing projects
Install / Use
/learn @cacheflowe/HaxademicREADME
Haxademic
Haxademic is my personal Processing-based creative coding toolkit, built to run in Eclipse with Java and the latest version of Processing. It's a starting point for interactive visuals, installations, rendering and writing Processing "sketches" in a more robust environment. It loads a bunch of useful Java/Processing libraries and contains a ton of other useful tools that I've written.
State of affairs
While the code has been open-sourced, I don't plan on making it easy/viable for others to use - I don't have the time or desire to support it. This repository is more about sharing the interesting code within, and I fully endorse borrowing it however you see fit.
Notable code
Below you'll find a long list of classes and utilities that I've built to make my life easier. I've tried to make as many basic demos as possible for all of these features. The demo package mostly mirrors the core directory and should give you an idea of how to implement these object on your own.
App
com.haxademic.core.app
-
PAppletHax - This is the base class for every Processing app that I build. It initializes tools for app-level concerns, rendering, multiple input devices, audio FFT, and debugging tools. Tons of additional tools and utilities can be found in the library.
-
P - This class holds static references and methods - primarily to the app instance so I don't have to pass it around everywhere.
-
AppWindow - This object helps set up properties related to the app window, which can mostly be configured in
ConfigviaAppSettings.
com.haxademic.core.app.config
-
AppSettings - Static constants to help set app properties and initialize special objects in
PAppletHax. Used in tandem withConfig. -
Config - Loads properties from
data/properties/run.properties(or an additional custom .properties file), using the same string constants inAppSettings. All of these properties can be overridden in PAppletHax in the automatically-calledconfig()function on app initialization. Also helps access & parse command line arguments.
Data
com.haxademic.core.data
-
ConvertUtil - A collection of basic Java type-conversion methods.
-
Patterns - A collection of pattern generators for step sequencer.
com.haxademic.core.data.constants
-
GLBlendModes - Fancy OpenGL blend modes with helper methods to set them on a given PGraphics context.
-
PBlendModes - Static constants list of Processing blend modes.
-
PRenderers - Static constants list of Processing renderers.
-
PShapeTypes - Static constants list of Processing shape types.
-
PStrokeCaps - Static constants list of Processing stoke cap types.
-
PTextAlign - Static constants list of Processing text alignment options.
com.haxademic.core.data.store
-
AppStore - A singleton data store and emitter. As values are updated, subscribers are notified. Uses IAppStoreListener as the callback interface for
AppStoreupdates. -
AppStoreDistributed - A WebSockets-enabled extension of
AppStoreto keep multiple machines in sync with a shared data structure.
Debug
com.haxademic.core.debug
- DebugView - Instantiated with every
PAppletHaxapp viaP, the object allows us to toggle and add relatime properties to theDebugViewHashMap and log values on-screen, rather than trying to watch Java console values fly by. Press/to toggle. Also includes a panel for key commands and extra developer-defined info.
Draw
com.haxademic.core.draw.camera
- CameraUtil - Primarily just a helper method to increase the camera distance on a PGraphics context.
com.haxademic.core.draw.color
-
ColorsHax - Some predefined easy-to-use color palettes.
-
ColorUtil - Handy color conversion methods.
-
EasingColor - An object that represents a single color with interpolation and helpful getter/setter methods. Has some overlap with
ColorUtil- the two classes should possibly be merged. -
ImageGradient - Loads an image and samples its colors horizontally via a normalized input float. Works well for gradients and comes with a library of presets.
com.haxademic.core.draw.context
-
OpenGLUtil - Lower-level helper methods to set OpenGL flags that aren't obviously available in Processing.
-
OrientationUtil - Helper methods to orient the graphics context rotation towards a specific 3d location. These utilities help point 3d objects toward each other.
-
PG - Lots of static helper methods to initialize and set properties on the specified PGraphics context. Used constantly throughout the core and demos.
-
PGraphics32 - A custom PGraphics object with 32-bit float texture enabled for use as a data texture in shaders.
com.haxademic.core.draw.filters.pgraphics
- A collection of PGraphics-based image/video filters. These effects redraw an image in traditional Processing style on a PGraphics buffer.
com.haxademic.core.draw.filters.pshader
- A collection of (over 100) PShader filter effects. These Java classes are convenience wrappers for GLSL programs/files and provide a common interface and (as minimal as) one-line implementations for shader filters. Shader uniforms are exposed through public setter methods.
com.haxademic.core.draw.image
-
AnimatedGifEncoder - Renders a gif file directly out of a Processing app. I've mostly abandoned this in favor of rendering a video, then using conversion tools like ffmpeg to more precisely convert to gif.
-
Base64Image - Encodes and decodes between a PImage and a base64-encoded string.
-
BlobFinder - Wraps v3ga's BlobDetection library with some GPU-accelerated enhancements.
-
__[BufferActivityMonitor](https://github.com/cacheflowe/haxademic/blob/master/src/c
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
