Giter Club home page Giter Club logo

haxademic's Introduction

Haxademic

Haxademic is a multimedia platform, built in Java and Processing. It's a starting point for interactive visuals, giving you a unified environment for both realtime and rendering modes. It loads several Java libraries and wraps them up to play nicely with each other. It solves a number of problems faced by (potentially) thread-unsafe hardware inputs like audio, Kinect, MIDI and OSC. To view some projects created with the library, check out the Haxademic Tumblr.

Alpha State

While the code has been open-sourced, I haven't had time to write much (any) documentation, but I'm trying to get it there. You can see the example apps and sketches to get an idea of how to use various features, and the big hangup right now is that you'll have to find and install the 3rd-party libraries on your own. Even without fully installing everything, there's plenty of interesting code within, and I fully endorse borrowing it however you see fit in the meantime. If you're interested in collaborating, please contact me via my GitHub account, or my web site. If you'd like help getting the project running, let me know and I can personally assist for now.

Features / Capabilities

  • Inputs
    • Audio input and analysis (both realtime and step-through for rendering)
      • FFT analysis
      • Waveform/oscilloscope data
      • Audio beat detection
    • Step-through rendering with multiple audio files concurrently
    • MIDI input (both realtime and step-through for rendering)
      • Cached MIDI input to avoid thread-unsafe operations
    • OSC input
    • Kinect input, with skeleton data via OpenNI
    • Simple webcam wrapper
  • 3D tools (using Toxiclibs WETriangleMesh objects as the common format)
    • Convert SVG files to 2D meshes
    • Simple 3D extrusion of 2D meshes
    • Load and convert .obj, .gif & .svg files to WETriangleMesh
    • Mesh pool object to load and hold instance of any number of meshes
    • Base Camera type, with simple camera subclasses (needs work)
    • Draw a mesh with incoming Audio data spread across the faces
    • Shatter a box or sphere with randomized Voronoi3D calculations (soon to work on any mesh)
    • Some basic shape-drawing code
    • Mesh smoothing
    • Mesh deform from audio input
    • Apply off-screen audio-reactive textures to a 3D mesh
  • Text tools
    • Create a 2D or extruded 3D mesh from text with a custom .ttf font
    • Draw 2D text with a custom .ttf font
  • Image processing
    • PImage reversal & other image utilities/helpers
    • PImage <-> BufferedImage conversion for native image processing
    • Multiple screenshot methods
    • Photoshop-like effects processing (via Java Image Filters)
    • Custom image filters
  • Utility objects
    • Math utilities
    • Easing floats (with 3D containers)
    • Elastic floats (with 3D containers)
    • Utilities to (re)set Applet properties like lighting, current matrix, drawing colors
    • OpenGL utility to set GL-specific properties
    • Debug utilities to report current actual frame rate, memory usage
    • Timestamp generators
    • Eased color interpolation
  • Output
    • Render to Quicktime or image sequence with minimal effort
    • High-quality rendering with the Sunflow renderer, for beautiful globally-illuminated, antialiased scenes
    • Audio playback with cached audio clip pool
  • General Environment
    • .properties file loader with overridable defaults
    • Directory searching for specific filetypes
    • Automatic system screensaver disabling while running
    • True full-screen mode on OS X
    • Toggles the window chrome on a non-fullscreen applet
  • Apps
    • HaxVisual - A modular VJ system
    • KacheOut - A 2-player Kinect-based video game
    • MatchGame - A Kinect-based matching game, using skeleton detection
    • TimeLapse - Renders a .mov video from an image sequence in a directory

Installing / Compiling

  • Download the standard Eclipse IDE for Java development, and the Java Development Kit itself:
  • Download and install the latest SimpleOpenNI (Kinect) drivers with the instructions for your particular platform
  • Clone or download the Haxademic project
  • Open Eclipse and: File -> Import -> General / Existing Projects into Workspace
    • Choose the haxademic directory that you cloned/downloaded, press Finish, and the project should be ready to use
  • Right-click on a PApplet or PAppletHax subclass within src and choose Run As -> Java Applet from the menu. Hopefully you're seeing something awesome at this point.

Haxademic uses the following Java & Processing libraries, which I've included in this repository so you don't have to find them yourself (more on that below):

Use the following VM Arguments when running the Java Application

  • -d32 (when rendering to Quicktime movie or using a web cam)
  • -Xmx1024M
  • -Xms1024M

General Use / Tips

  • If you get a Quicktime error, try adding -d32 to your VM arguments when compiling.
  • If you want to wipe your bin/ directory, you'll have to do a Project -> Clean… in Eclipse afterwards.

Todo

  • Comment the codebase and generate docs
  • Create a unified keyboard/MIDI/OSC input system with improved midi/osc data handling
  • Clean up legacy code that's no longer used
  • Lots more noted in the PAppletHax class comments

Licensing

The Haxademic codebase and apps are MIT licensed, so do what you want with these files. Feel free to let me know that you're using it for something cool. I've added 3rd-party .jar files and compiled Java libraries that I'm probably not actually allowed to redistribute here, so if you're the owner of one of those libraries and would like the files removed, let me know. I've included them to aid those who would like a quick start and not have to search for the many dependencies of this project. Some of these libraries have disappeared from the web entirely, so searching for them may be futile anyway. I just want people to make cool things with this library, and hope you understand.

haxademic's People

Contributors

cacheflowe avatar

Forkers

sachinlondhe4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.