Software

First example of SiVi's GUI

Second example of SiVi's GUI

SiVi, a Gradient Noise Visualizer & GIF Maker

Tool to help game
programmers manipulate 
layers of gradient noise, 
for exploring the creation of 
very organic-looking textures.
Power with Simplex or 
OpenSimplexNoise engines.
Can export jpgs, gifs.

The open source project can be found at github.com/philfrei/SiVi.

Solar plasma gif

Visit the repository for the latest build, and additional information

GitHub Library: AudioCue

Image of AudioCue sliders test, a sample program

AudioCue is an open source Java library for audio asset playback. The code is free to use. The AudioCue class has most of the functionality of a Java Clip, but with additional capabilities: real time volume, pan, and pitch controls, as well as concurrent playback.

Image of Referenece Note Keyboard

Currently available from itch.io for Windows-64 and Mac OSX systems.


More information here.

Reference Tone Keyboard 1.1

Turn your laptop or desktop computer into 
a polyphonic musical keyboard! With the 
number row for black keys and the Q-W-E-R  
row for white keys, you can play chords and
melodies! This program is an easy way to 
get tuning notes or for playing a drone for 
intonation training. Can even be used to figure  
out that elusive melody or chord change 
you just heard in your head or on the coffee
shop sound system.

Leviaphon - a Virtual Theremin

This virtual theremin is
played via mouse or touchpad.
Highly configurable, the horizontal
axis controls pitch, and the 
vertical can control volume, 
timbre or vibrato. Drawn paths
can be saved and replayed, 
cues can be exported as wav assets. 
Core synth choices include a classic
theremin sawtooth, a square wave,
"power-chord" inspired distortion,
or human-vowels for speechlike
effects. 
I'm currently looking at reworking the GUI, but am keen to get feedback on the existing functionality. Image of Leviaphon GUI

Visit the site for this puzzle game, at https://hexara.com. Requires Java 7 or higher.

Image of the puzzle game, Hexara

Hexara

The task is to energize all
of the scrolls hanging in the 
pavilion.  A scroll will energize
when the symbols on it are placed
into a central hexagonal frame in
a way such that symbols that are 
neighbors on a scroll are also
neighbors on the grid. The graphics
and sound design make use of generative 
algorithms, based on game state.
Tension increases as the player gets 
closer to solving the puzzle.
Image of ShrutiDevi/PitchMaester GUI

Tone Circle Drone

This musical drone tool can loop 
up to 12 overlapping tones with 
metronome-accurate timing. It is
useful as a musical accompaniment,
or electronic tanpura. This tool can 
also help with intonation training. 
Easily tunable, pitches can be set 
based on classic temperaments such as
Pythagorean or Werckmeister,
or to Indian shrutis. (Alternative names 
being considered: Shruti Dev, Pitch Maester

Would you like to better discern the difference, say, between equal-tempered third and a harmonically perfect third? Please contact me if you are interested in beta testing this unit!

This program can be downloaded from here. Double click the .jar file to run. Requires Java 8.

Peaceful Brook GUI

Peaceful Brook

Using innovative tools for ambient
sound effects, this app generates, in 
real time, a peaceful soundscape. 
Most notably, a 4-second long WAV
file of nearby El Cerrito Creek
plays continuously without
discernible looping, and a
single frog croak (1/2 second) is used to
create the illusion of an entire pond filled
with croaking frogs.

Circles Sounds Demo

Built to test interoperability
possible between audio and graphic 
threads, and an example of generative
music. The motion of the circles is 
handled in a game-loop thread. 
Image coordinates affect the volume
and pan of corresponding musical motifs.
Each new iteration of the real-time 
generated musical motif triggers a 
flash of the corresponding circle.

Currently available as a downloadable jar file. Requires Java 8.

Image of Circle Sounds Demo app
Image of Spiderbell Dashboard GUI

Spiderbell Dashboard

A real-time synthesizer, plays up
to 20 bells polyphonically. The 
bell sounds are created via Frequency
Modulation (FM). The GUI has a 2D 
pad for triggering plays, with one 
dimension for pitch, and the other 
for timbre. There are also sliders 
for volume and duration, and a 
glowball visualization.

Currently available as a downloadable jar file. Requires Java 8.

Shepard Chord Builder

Available as a downloadable jar file. Requires Java 8.

image of Shepard Chord Builder app
Creates an audio illusion of 
continuously rising or falling 
tones. Works with up to three-note 
chords, played in sequence or as 
a continuous glissando. Output  
can be exported to a wav file
that will recreate the illusion 
when looped.

A generative composition inspired in part by Dune, with five asynchronous loops that are set into motion and mixed live. Select the 'Drift' checkbox and volumes of the tracks will slowly evolve in a constrained-random fashion.

The Fivefold Way

Available as a downloadable jar file. Requires Java 8.

Image of Fivefold Way GUI

Tutorials

Getting Started with JavaFX Game Programming (for-Java-Programmers)

This tutorial has four short lessons, aimed at getting experienced Java game programmers quickly up to speed on JavaFX game programming basics. I emphasize overcoming some common gotcha's, covering the use of Eclipse, a basic overview of the graphics hierarchy, the preferred animation/game loop method, and how to capture keystrokes. Written in Feb 2017, some of the info pertaining to Eclipse has become obsolete. This tutorial has had over 150,000 views!

Packaging Java as a Native Application with a Self-Contained, Custom Runtime: A Manual Walkthrough

This tutorial was written shortly after modular Java and the jlink capability became available, and few tutorials existed that explicitly addressed how to package and distribute a JavaFX program with a custom run-time. As a way to help the User better understand the process, all work is done manually at the command line interface using standard tools (javac, java, jlink). Once the runnable is built, the tutorial includes steps making use of InnoSetup 5 (now 6 or later) to package the application as an installable Windows .exe program. The tutorial assumes that the reader has a beginner's level of expertise with command shell operations. [Since writing, JavaFX has become a separate library, and this tutorial does not include the additional steps required to handle that new development. Tools for deriving the module-info.java file have also improved.]