Software

S-SMP(ADSR)

S-SMP(ADSR) is an emulation of the ADSR envelope generator from the SNES.

  • Stereo Processing: Two envelope generators on one module for stereo modulation, cross modulation, or both!
  • Total Level Control: Control over the overall level of the envelope generator, including inversion for ducking effects.
  • Stage Length Control: Control over stage timings using sliders and control voltages.

View Project

S-SMP(Echo)

S-SMP(Echo) is an emulation of the echo effect from the SNES.

  • Stereo Processing: Echo buffer for two independent inputs in stereo configuration. The parameters are the same for both inputs, but the inputs have their own dedicated echo buffers.
  • Expanded Delay: The 15 levels of delay has been upgraded to 31 levels that each add an additional 16ms of delay (up to roughly 500ms). 31 levels of delay is able to fit in the RAM of the original S-SMP, but the instruction set does not normally support the addressing of 31 levels.
  • Feedback: Additive and subtractive feedback following the original implementation
  • Surround Effect: Stereo mixer with the ability to invert the phase of either channel resulting in odd Haas effects.
  • 8-tap FIR Filter: Fully parameterized 8-tap FIR filter for shaping the sound of the echo. The filter can be parameterized as low-pass, high-pass, band-pass, band-stop, etc. and includes presets with filter parameters from popular SNES games.

View Project

S-SMP(Gauss)

S-SMP(Gauss) is an emulation of the BRR filter and Gauss Interpolation filter from the SNES.

  • Stereo Processing: Dual processing channels for stereo effects or other create multi-tracking applications.
  • 4 BRR Filter Modes: 4 filter modes from the BRR sample playback engine that act as low-pass filters.
  • Gaussian Interpolation Filter: A filter that removes high-frequency content and adds subtle distortion. This filter provides the muffling character that fans of SNES audio will find familiar.

View Project

Boss Fight

Boss Fight is an emulation of the Yamaha YM2612 audio processing unit. The YM2612 is a 4-operator FM synthesis chip with 6 voices of polyphony.

  • 16-bit: 8 bits better than the previous generation of chips!
  • 6 Voice Polyphony: 6 voices of polyphony with independent V/OCT and Gate inputs
  • 4-Operator FM Synthesis: Full control over the FM-synthesis parameters for each of the four operators including: envelopes, multiplier rate scale, tuning, and amplitude modulation
  • 8 FM Algorithms: 8 different arrangements of the four operators
  • Stereo Outputs: Output from the left and right channels on the chip

View Project

Pallet Town Waves System

Pallet Town Waves System is an emulation of the Nintendo GameBoy Sound System (GBS) audio processing unit. The GBS is similar to the Ricoh 2A03, but replaces the triangle waveform generator with a wave-table synthesizer.

  • Dual pulse wave generator: Dual 8-bit pulse waves with four duty cycles: 12.5%, 25%, 50%, and 75%
  • Wave-table synthesis channel: wave-table synthesis with bit depth of 4 bits and table size of 32 samples. 5 pages of wave-tables can be interpolated between using CV
  • Noise generator: generate pseudo-random numbers at 7 different frequencies
  • Linear Feedback Shift Register (LFSR): old-school 8-bit randomness!

View Project

Pot Keys

Pot Keys is an emulation of the Atari POKEY audio processing unit. The POKEY produces four pulse waveforms, but contains a variety of bonus controls, including extended frequency ranges, high-pass filters, and noise generators / distortion effects.

  • Quad pulse wave generator: Four pulse waves with 8-bit frequency value and 50% pulse width
  • Low-frequency mode: Change base clock of the chip from 64 KHz to 15 KHz
  • High-frequency mode: Change base clock of channels 1 and 3 from 64 KHz to 1.79 MHz
  • High-pass filter: High-pass filter channel 1 using channel 3 as a clock or high-pass channel 2 using channel 4 as a clock
  • Linear Feedback Shift Register (LFSR): old-school 8-bit randomness!
  • Noise/Distortion generator: generate per-channel pseudo-random numbers at 15 different frequencies as a distortion source
  • Amplitude modulation: 4-bit amplifier with linear amplitude modulation

View Project

Jairasullator

Jairasullator is an emulation of the General Instrument AY-3-8910 audio processing unit. The AY-3-8910 features three pulse waveform generators and a noise generator that is shared between the channels.

  • Triple pulse wave generator: Triple 12-bit pulse waves with duty cycle of 50%
  • Amplitude modulation: Manual and CV control over the individual voice levels
  • White noise: Generate noise using the frequency knob for channel 3
  • Tone/Noise control: CV and switch to control tone and noise for each channel

View Project

Mega Tone

A Eurorack module for VCV Rack based on the Texas Instruments SN76489 featuring:

  • Triple pulse wave generator: Triple 8-bit pulse waves with 50% duty cycle and 10-bit frequency parameter
  • Noise generator: Generate either white-noise or periodic noise at one of four shift rates: N/512, N/1024, N/2048, or the output of tone generator 3
  • 4-bit Level Control: 4-bit level control over each channel with mixer sliders and CV inputs

View Project

Name Corp Octal Wave Generator

A Eurorack module for VCV Rack based on the Namco 106 featuring:

  • Wave-table synthesis: 8 channels of wave-table synthesis with bit depth of 4 bits and table size of 32 samples
  • Waveform morph: 5 banks of wave-tables to morph between using 32-bit floating point linear interpolation
  • Frequency control: 18-bit frequency control with linear frequency modulation
  • Amplitude modulation: 4-bit amplifier with linear amplitude modulation
  • Namco 106 compute limitation: activating each additional channel reduces the amount of compute available for all channels. This causes all channels to drop in frequency when additional channels are activated.

View Project

Pulses

Pulses is an emulation of the Sunsoft FME7 audio processing unit from the Nintendo Entertainment System (NES) for VCV Rack. The FME7 chip contains three pulse wave generators, a noise generator, and an envelope generator. Only the pulse wave generators are implemented currently.

  • Triple pulse wave generator: Triple 12-bit pulse waves with duty cycle of 50%
  • Amplitude modulation: Manual and CV control over the individual voice levels

View Project

Step Saw

Step Saw is an emulation of the Konami VRC6 audio processing unit from the Nintendo Entertainment System (NES) for VCV Rack. The VRC6 chip contains two pulse wave generators, and a quantized saw wave generator.

  • Dual pulse wave generator: Dual 8-bit pulse waves with eight duty cycles: 6.25%, 12.5%, 18.75%, 25%, 31.25%, 37.5%, 43.75%, and 50%
  • Quantized saw wave generator: Generate NES style saw wave with variable quantization including the overflow bug in the VRC6
  • Amplitude modulation: Manual and CV control over the individual voice levels

View Project

Infinite Stairs

Infinite Stairs is an emulation of the Ricoh 2A03 audio processing unit from the Nintendo Entertainment System (NES) for VCV Rack. The 2A03 chip contains two pulse wave generators, a quantized triangle wave generator, and a noise generator. The original chip featured a DMC loader for playing samples that has been omitted in this emulation.

  • Dual pulse wave generator: Dual 8-bit pulse waves with four duty cycles: 12.5%, 25%, 50%, and 75%
  • Quantized triangle wave generator: Generate NES style triangle wave with 16 steps of quantization
  • Noise generator: generate pseudo-random numbers at 16 different frequencies
  • Linear Feedback Shift Register (LFSR): old-school 8-bit randomness!

View Project

RackNES

An NES emulator with Control Voltage (CV) for VCV Rack with many features:

  • Clock Source: Use NES as a clock source for downstream modules
  • Clock Rate Modulation: Control the clock rate of the NES with direct knob and CV
  • NES Audio Output: Sample audio from the NES in real-time at any sampling rate
  • Sampling/Ratcheting: Save and restore the NES state for interesting musical effects
  • Full CV Control: CV inputs for Reset, Player 1, Player 2, and more

View Project

Limit Order Book

An C++ implementation of the limit order book for following an order depth data feed from a financial markets. A Python API is also provided using CTypes.

View Project

Robust Graph Convolutional Networks Against Adversarial Attacks (Implementation)

A Keras implementation of the Robust Graph Convolutional Network, i.e., the Gaussian Graph Convolutional Layer with attention mechanism.

View Project

C++ Object Pool Template

A C++ header-only template implementation of the object pool pattern for object reuse. The code is tested and benchmarked using Catch2.
image courtesy of Mike Geig

View Project

NES iOS

An NES emulator for iOS based on the C++ back-end from the NESpy emulator. Sadly, Apple forbids arbitrary code execution so this app can't be published.

View Project

Gym Tetris

An Open.ai Gym environment for the classic Nintendo Entertainment System (NES) game, Tetris, based on the NESpy emulator.

View Project

Gym Zelda 1

An Open.ai Gym environment for the classic Nintendo Entertainment System (NES) game, The Legend of Zelda, based on the NESpy emulator.

View Project

Pyramid Pooling Module (Implementation)

A Keras implementation of the Pyramid Pooling Module used in the PSPNet architecture.

View Project

Very Good Semantic Segmentation Labeling App

A python application for labeling semantic segmentation datasets. The app features superpixels, custom label mapping support, and loading existing segmentations.

View Project

Semantic Segmentation Baselines

Implementations of neural semantic segmentation models in Python using Keras and TensorFlow. Implemented models include:

  • ENet
  • ICNet
  • SegNet
  • Tiramisu
Datasets include:
  • CamVid
  • City Scapes
  • Berkeley Diverse Driving
  • Mapillary

View Project

Gym Super Mario Bros.

An Open.ai Gym environment for the classic Nintendo Entertainment System (NES) game, Super Mario Bros., based on the NESpy emulator.

View Project

NESpy

A Nintendo Entertainment System (NES) emulator for Python based on the SimpleNES emulator written in C++.

View Project

Playing Super Mario Bros. with Deep Reinforcement Learning

An implementation of Dueling, Double, Deep Q learning to play Super Mario Bros. with high proficiency. Built using Gym Super Mario Bros.

View Project

A Neural Algorithm of Artistic Style (Implementation)

An implementation of the paper A Neural Algorithm of Artistic Style in Python using Keras and TensorFlow. Includes modules for content reconstruction, content layer selection, style reconstruction, style layer selection, style transfer, and photo-realistic style transfer.

View Project