Just Friends, v2.0 (including 'Just Type' for interaction with monome's Teletype)
How to update your Just Friends (and teletype) modules to new firmware. Outline of the new commands for Teletype, and how they relate to Just Friends.
Just Type allows monome's teletype to remote-control a number of features & parameters on Just Friends, both on the panel, and under the hood. An additional takeover mode turns the module into a complete polyphonic synthesizer.
See: monome-modular-update for details on how to update the monome teletype module. You'll need to use the new teletype.hex included alongside these docs. In future teletype v1.3+ will include Just Type support.
NB: Backup your teletype scenes first to avoid losing them!
Just Friends includes Olivier Gillet's stm-audio-bootloader preburnt onto each module. This allows easy firmware updates by playing an audio file into the Just Friends module.
Download the 'JustFriendsv2_x.wav' file to your computer or phone. The file is a ~3 minute, 16bit, 48kHz mono wave file.
NB: Make sure your soundsource's volume is at maximum
NB: Make sure your soundsource is set to 48kHz playback (automatic on most portable devices)
- Just Friends should be installed in your modular synth
- Make sure the synth's power is turned OFF
- Turn all of JF's controls to the minimum (counter-clockwise)
- Set the MODE switch to 'cycle'
- Set the speed switch to 'sound'
- FIRST: Insert a (long) mono patch cable into the RUN jack
- THEN: Connect this cable to your soundsource
- Turn on your synth case
At this point you should see the right-most (6N) LED on Just Friends slowly blinking (The first LED may also be lit).
- Play the audio file on your soundsource.
- After a few seconds the flashing LED should move to the 5N position
- Periodically the 4N LED will also flash
- At the conclusion of the audio file, more LEDs will light
- After a few more seconds, JF will automatically restart.
NB: IMPORTANT! Turn off your synth! Remove the cable from your soundsource, then from the RUN jack, and restart. This is to make sure JF won't damage your soundsource.
A number of error situations can arise for different (and sometimes inexplicable) reasons.
If the LEDs are not slowly flashing and instead 3N is lit solidly (and perhaps IDENTITY & 6N), a number of errors could have occured:
If the audio is playing back and the update looks to be going well, but then stops, some extraneous sound (message, notification) has likely corrupted the stream. No worries! Just turn the synth off then back on, and restart the audio stream. If the error occurs at the same point each time, it is possible the audio file is corrupted - redownload and try again!
Audio Too Quiet:
If the 6N LED is flashing, but doesn't shift to the 5N LED after the audio playback begins, the soundsource likely isn't loud enough. Turn the level up to maximum, or you may need to use a different device (some phones are not loud enough).
If the 6N led is flashing but as soon as you play audio 3N is lit, there might be a problem with the playback. Make sure your playback device is set to 48kHz (this is automatic on most portable devices). If you're using a DAW for playback, make sure you've changed the audio driver settings to 48kHz. -> Else, see below:
It's important that the synth & soundsource have a strong ground connection to each other. If this is not the case, a number of things may be observed. 1: The 6N LED may never flash when turning on and instead 3N will be lit straight away. 2: 6N may flash, but as soon as you start playback it goes to the 3N error state.
Some trial and error is likely required here. It seems to depend on both the power supply in your modular case, and also the nature of the playback device. If you're using a portable device, try attaching (or disconnecting) the power source. If your synth has an audio output, try connecting (or disconnecting) the audio cable to another piece of gear which is grounded (most studio gear).
MORE INFO / IDEAS NEEDED HERE!
Connect the II
Connection between teletype & Just Friends is acheived with a 6pin ribbon cable attached to the 2x3 pin headers on the rear of each module. They are marked with 'ii' on both modules. Make sure to orient the white stripe (ground) to the red-stripe of the cable on both sides.
Just Type: Remote Control
These commands allow remote control of standard Just Friends functionality directly from teletype's scripting engine. Functionality is analogous to control voltage patching.
NB: While Just Friends communicates with the 'ii' protocol, there is no need to use the
II prefix before any of these commands.
JF.TR channel state
Simulates a TRIGGER input on JF.
channel sets which TRIGGER to fire in Just Friends. IDENTITY is
1. If you send a
0all 6 TRIGGERS will be set.
state sets whether the TRIGGER is high or low. Low is set with
0. All positive numbers will set high. In general,
0states are only relevant in sustain mode.
Overrides the RUN state of Just Friends. Allows for RUN modes to be accessed without needing to add a patch cable to the RUN input. Inserting or removing a cable will not affect the state, until RMODE is set back to zero.
- mode will activate RUN mode with any value other than zero.
Directly sets the 'voltage' on the RUN input. Particularly for digital control over the RUN modes without needing a calibrated voltage. Expected input is in the
V -5 to
V 5 range from teletype. This 'voltage' is added to any voltage physically applied to the jack.
- state sets the 'voltage' at the RUN input.
NB: JF.RUN has no effect unless JF.RMODE is set to 1.
Just Type: Extended Functions
These commands extend the standard functionality of Just Friends to allow extended techniques. These commands are applicable in all modes.
Shifts the tranposition of Just Friends, regardless of speed setting. Shifting by
V 1 doubles the frequency (sound) or the rate (shape).
tranpose expects a standard teletype pitch (eg.
N 3, or
ADD V 1 N 5).
JF.VTR channel velocity
Acts similarly to
JF.TR with additional velocity setting. This simply scales the voltage output of the whole channel, allowing programmatic attenuation of individual outputs.
channel sets which channel to TRIGGER, or
velocity expects a 'voltage' level.
V 5will make an envelope 5 volts high.
Just Type: Modalities
Just Friends can take on alternate personalities when connected with Teletype. Either a rhythm machine, or polyphonic synthesizer, altering and extending the functionality available on the front panel. Set
1 and the relative mode will be entered (based on the speed switch).
Enters the synthesis/rhythms modes.
mode activates with any non-zero value.
0will return to standard functionality.
Just Type: Synthesis Mode
IN SOUND MODE: Just Friends becomes a polyphonic synthesizer. Each of the 6 channels can be controlled individually, or dynamically assigned in traditional poly-synth fashion. The pitch of each oscillator is set digitally, while the RAMP & CURVE controls act as normal, affecting the waveshape of the oscillator.
A Vactrol Low-Pass Gate model is used to implement amplitude envelopes over each channel, triggered digitally, or physically from the hardware TRIGGERS. The time-base of this envelope is controlled with the TIME control, while the attack-release ratio is controlled by the INTONE control. Due to the nature of the LPG model high-frequencies will be rolled off as volume decreases, encouraging use of varying velocities.
Each channel incorporates an internal (sinewave) FM oscillator which follows the tuning of the note it is currently playing. This modulation oscillator will apply Frequency Modulation to the channel, depending on the FM control. At 12:00 no modulation is applied, while turning CCW will apply a constant amount of FM. Turning CW applies FM following the amplitude envelope of the voice. A control-voltage in the FM input adds to any amount of modulation applied by the knob (ie. it sets the FM index).
The frequency relationship between the carrier & modulation oscillators is set by a voltage in the RUN jack (or by digital RUN control). At zero the pitches are equal. Above zero, each volt increases the pitch by 1 harmonic (eg. 1V = 1 octave up). Below zero, each volt decreases the pitch by 1 sub-harmonic (eg. -2V = -1.5 Octaves). While the pitch is continuously variable, the control is heavily shaped to have a large plateau at each harmonic for easy tuning.
JF.VOX channel note velocity
Allows note sequencing on a specific channel. Any
JF.VOX command will override the selected channel. All channels can be set simultaneously with a channel value of
channel chooses which output of Just Friends to use.
note sets the pitch relative to C3 (eg:
N 3is Eb3,
V 1is C4).
velocity sets volume output, similar to
JF.NOTE note velocity
Polyphonically allocated note sequencing. Works as JF.VOX except applies the NOTE to a free voice, or the oldest voice if all currently active.
NB: simply assigns sequentially currently. needs smarter note stealing for sustain mode.
N 3is Eb,
V 1is C4).
Redefines C3 to align with the 'God' note. See: https://attunedvibrations.com/432hz/ or http://www.roelhollander.eu/en/tuning-frequency/goebbels-and-440/.
When triggers are sent (either hardware or via
JF.VTR) they apply the most recent settings for that channel, encouraging digital & control-voltage combined systems.
Just Type: Rhythms Mode
IN SHAPE MODE: Just Friends acts as per normal in shape mode. Atop these standard functions is a rhythmic engine for complex timebased effects, allowing for complex phase & pattern based outputs.
The timebase can be set either from a repetitive
JF.TICK message, or with a simple beats-per-minute command (also via
JF.TICK). This rhythm can further be reset to align with other clocks. A quantization system is also included allowing triggers (CV or digital) to be locked to rhythmic sub-divisions.
This timebase is then used as a meter which can be divided into sub-sections of up to 64 parts.
JF.NOTE are now used to create streams of rhythmic events, where the number of repetitions per trigger & the rhythmic sub-division at which to play them are controlled. Thus each channel can be set to generate it's own specific train of envelope shapes.
mode: non-zero enters Rhythms mode.
0returns to normal mode.
clock/bpm is the fundamental timing mechanism for Rhythms mode
- A value of
0is simply a reset for the main timebase (go to start of bar).
48: Expected to be sent repetitively to Just Friends. The value sets the number of
JF.TICKevents that equal 1 bar (eg.
JF.TICK 16would expect 1 tick every 16th note).
255: Sets the Beats-per-minute tempo directly. This command also resets the bar counter to synchronize clocks.
- A value of
division divides a bar into the input value's segments. All input triggers (or notes) will be delayed until the next division occurs. Any value up to 32 is allowed, including odd-numbered segments.
- a value of
0will deactivate quantization.
- a value of
JF.VOX channel division repeats
Creates a stream of rhythmic envelopes from the selected output.
channel chooses which output.
0applies to all.
division determines the division of 1 bar to use as the rhythm.
- eg. a value of
4will play notes each quarter note.
15would play 15 notes per bar.
- eg. a value of
repeats defines the number of rhythmic repetitions to create
0only fires the single envelope, while
1creates 2 events total.
In sustain mode, the repeats setting controls a decay-rate of the envelopes that occur while the trigger is held high. The value thus sets an approximate number of repetitions before the level reaches zero.
JF.NOTE division repeats
Functions similarly to JF.VOX but with dynamic note allocation.
- division determines the division of 1 bar to use as the rhythm.
- repeats defines the number of rhythmic repetitions to create.
Just Type: Retuning
JF.TUNE channel num denom
Adjusts the tuning ratios between channels. The tuning tables applied by the INTONE control can be altered & saved as a custom set for Just Friends. Relationships are set with a fraction relative to IDENTITY.
Standard ratios are: 2/1, 3/1, 4/1 etc. These can be freely assigned to any small integer ratio. The INTONE control will then smoothly transition toward that ratio at max CW, and the inverse ratio (1/2, 1/3, 1/4 etc) in the CCW direction.
channel selects a channel (2-6, IDENTITY always remains) whose ratio will be altered. Sending a value of
0will reset Just Friends to default tuning.
- num sets the upper number in the fraction.
- denom sets the lower number in the fraction.