Phase

Phase is a phase distortion synthesizer written for the pocket chip. It has two individually tuned oscillators with controls for ring modulation, adsr, 4 - 32 point phase distortion, 8 point pitch adsr and distortion adsr. Further shape the sound with a stereo delay, phaser and chorus. Play the three playmodes: 4 voice polyphonic, monophonic or arpeggio with the pocket chip keyboard or by plugging in a usb midi device.

# Phase has been written for and tested on pocket chip but may very well run on other linux systems, graphics is rendered with Xlib and sound using Alsa. There is also a build for raspberry pi. If you wish to request another linux platform and processor please send me an email below.

Updates

Phase 1.1

You name the price!

If you enjoy the application please consider supporting me by either buying any of my other apps for iOS or make a small donation below. I sell my iOS apps for $1.99 and $0.99.. :)



A few iOS applications:

Installation

Keep Calm

Don't panic. Keep calm. As a person growing up with mostly graphical interfaces I know that teminals can seem a bit scary at first, but don't worry. It is not that hard really. If you are completely new to the unix terminal, here are a few common commands that might be helpful.

List directory content:
ls
Change directory:
cd <directory>
Create new directory:
mkdir <directory>
Super user:
sudo <command>
Edit with nano, a useful text editor:
sudo nano <file>
Kill process (SIGINT), can be used to stop phase if exited by pressing home:
ctrl + c

Installation

Create a new directory or pick an existing one of your choice to place the phase files in, for example /home/chip/phase. Cd into the new directory and download phase:
curl --remote-name http://www.humbletune.com/phase/chip/phase.zip
Unzip the executable file:
unzip phase.zip
Next we need to setup the audio by editing .asoundrc. On the pocket chip this file is found in /home/chip. I also recommend setting the sample rate to 22050 Hz, which will make it a bit easier for the pocket chip to do all its processing in time. 22050 Hz still plenty of range to produce the frequencies needed. My file looks like this:
pcm.!default {
	type plug
	slave.pcm "dmixer"
}
pcm.dsp0 {
	type plug
	slave.pcm "dmixer"
}
pcm.dmixer {
	type dmix
	ipc_key 1024
	slave {
		pcm "hw:0,0"
		period_time 0
		period_size 1024
		buffer_size 8192
		rate 22050
	}
	bindings {
		0 0
		1 1
	}
}
ctl.mixer0 {
	type hw
	card 0
}
pcm.phase {
	type plug
	slave.pcm "dmixer"
}
curl --remote-name http://www.humbletune.com/phase/chip/.asoundrc
Pcm.phase is what phase will use to tap into the alsa sound mixer. If you choose to use a different sample rate than the default 22050 Hz you will need the otherwise optional settings file. To the same directory you installed phase, download an example settings file:
curl --remote-name http://www.humbletune.com/phase/chip/settings.json
Now reboot the chip to make it use the new sound settings:
sudo reboot
Before running phase you might have to set permissions to execute the program, for example you could do:
chmod 755 *
Run phase with the following command:
./phase
Another useful command to find out the midi devices that are availabe is:
amidi -l

Raspberry pi

Running phase on a raspberry pi is very simillar to on the pocket chip. Instead place the files in /home/pi/phase and no asound.conf or .asoundrc is neaded. Download phase:
curl --remote-name http://www.humbletune.com/phase/pi/phase.zip
Next download an example settings file for the pi:
curl --remote-name http://www.humbletune.com/phase/pi/settings.json
Finally run phase as a super user, this will allow the program to set the hight priority on the sound thread that is needed:
sudo ./phase

A Little Sound Sample

User Guide

1. Oscilator 1-2
Change between oscillator 1 and 2. Both oscillators have settings for gain, adsr, noteshift, fine tune, phase distortion, source/window shape, pitch adsr and distortion adsr.
2. Ring Modulation
Enabling ring modulation for an oscillator takes the output of the other oscillator and performs a multiplacation with the current oscillator. This will create a new signal with the sum and difference of the frequencies.
3. Gain
Individual gain for oscillator.
4. ADSR
Classic attack, release, sustain and release.
5. Note Shift
Shifts the note from -3 to 3 octaves.
6. Fine Tune
Fine tune shifts the note from -100 to 100 cents.
7. Phase Distortion
The phase distortion is a way of creating new oscillator shapes by moving through the source shape faster or slower. This module allows you to control the distortion with 4, 8, 16 or 32 distinct points. There are also a few preset shapes, see 22 below.
8. Source Shape
This is the original oscillator shape before any distortion takes place. This can be a sinusoid, square or a saw wave.
9. Window Shape
The window is used to further shape the oscillator after the phase distortion. This can also be a sinusoid, square or a saw wave.
10. Pitch ADSR
The pitch adsr is a adsr of sorts. It detunes the note (-100 to 100 cents) over time, it allows to set 8 values and the start and end of the loop. Also control the speed which is tied to the bpm setting and if it should be a one of or played in a loop.
11. Distortion ADSR
The distortion adsr works similar to the pitch adsr but instead controls the amount of phase distortion.
12. Stereo Delay
Two controls for left and right delay. Control the amount and tempo divider. Like the pitch and distortion adsr this effect is linked to the tempo setting.
13. Phaser
A phaser effect that has setting for dry/wet, feedback and rate.
14. Chorus
A chorus effect with settings for dry/wet and depth.
15. BPM
The tempo or beats per minute setting affects the delay, arpeggio, pitch adsr and distortion adsr.
16. Play Mode
Phase has three play modes: 4 voice polyphonic, monophonic with portamento setting and arpeggio (up, down, random, up-down) with settings for number of octaves and tempo divider.
17. Keyboard Chords
Phase can be played by either connecting a usb midi device or by a normal keyboard. The keyboard is divided into three chords, major or minor, see below 23.
18. Save State
Save the state of the synthesizer to the currently selected slot.
19. Load State
Load either a saved state or one of the default presets indicated by the squares in the right corner of the slot picker.
20. Save Slot
Pick a slot (between 0-9 or a-z) for loading and saving. The data is saved in a nice and friendly json format which allows sharing. If you do decide to hack them please note it could cause an undefined behaviour.
21. Esc
Press escape to close and exit phase. If you are in the terminal you can also use ctrl + c to kill the current process.
22. Preset Phase Shapes
A few preset distortion shapes to get you started or maybe get back to a more pleasing sound.
23. Chords 1-3
To set the chords for the keyboard see 17.

Contact

Send me an email with any questions or bug reports, here.