Spongefork 1.07 (2.13.02)

:: overview
:: SF1 key command diagram (thanks tommy)
cmd [ toggle wave A (turns on or off oscillator A)
cmd ] toggle wave B (turns on or off oscillator B)

cmd A record to wave A. This will start immediate audio capturing of what ever is coming into the selected sound input device of the Macintosh. Spongefork records to a scratch file that will be placed on the current default volume. The maximum length of the wave table is set at 23.77 seconds - recording will automatically stop after that time. To end recording press the record button in the transport window or cmd .

cmd B record to wave B.

cmd N noisespork to B. Noisespork scrambles the input signal being recorded into mostly noise and random bursts using the standard Macintosh recording dialog box. This can be especially useful when using noisespork as the modulator to wave A. Under normal circumstances you wonÍt need a modulation amount of more than 1 as it's effect can be quite drastic.

cmd . toggle record aiff. If recording is in progress this will stop it. If not, it will bring up a dialog to save your file, then begin recording - for help with cataloging samples during a performance, the default file name includes the current time in hours.min.secs.

cmd , toggle pause recording.

cmd O open sound resource suitcase file (see the sound resource section for instructions on how to make your own banks of samples)

cmd W close sound resource suitcase file

cmd Q bye.

sample rates for fork oscillators only - all other output will be at default rates.

toggle hide/show windows:
cmd 1 pitch window
cmd 2 fork oscillator dialog
cmd 3 snd resource info
cmd 4 aiff playlist
cmd 5 recording transport
cmd 6 recording info : current seconds recorded & input meter level.
cmd 7 recording limiter : automatic gain control ( can't be set while recording )


Pitch Window, cmd 1, with two soundfiles loaded :

This window is the main interface for all sound controls. Frequency control for oscillator A is mapped across the X axis and B along the Y. Dragging the mouse inside the window will turn the oscillators on and change their pitch depending on the position of the mouse. Holding down the shift key will lock frequency A at the current pitch. Holding down the control key while dragging will do the same for frequency B.

The pitch window is also used to initiate sample triggering of SNDS mapped across the X axis, and adjust pitch and volume of SNDS by moving along the Y axis. The frequency lock is especially useful for isolating a single SND sample while using the pitch control. The window is resizeable for more or less resolution.

The fork window, cmd 2, contains the synthesis controls :

The increment A & B menus are literally a frequency multiplier. For example, if the increment is set to 5, as you drag across the window each pixel of the Pitch window represents an increase of 5 in the frequency field.
When you load a sample into wave A or B the wave table will change its length to match the length of the sample, but the actual sample increment (how fast the oscillator is moving through the table) is set to match the maximum table length. Because of this, when a short sample is loaded the increment control should be set at a higher value to closer approximate the appropriate frequency range. Experiment with different lengths of sample files with different amounts of the increment control to find sounds that suit you.

Buttons s,k,p,&v all refer to the way in which SND resource suitcase files are triggered. Keep in mind that either s, k, or p must be activated to trigger SNDS.

Though you can manually change the dialog controls, it makes more sense in performance to use the keyboard key commands. The fork window should be used mainly as an information window.

FORK KEY COMMANDS (not active when fork window is selected) SPACEBAR is stop
click in window to begin play

cmd [ toggle wave A (turns on or off oscillator A)
cmd ] toggle wave B (turns on or off oscillator B)

` toggle mix/mod (the key next to 1)
1-10 modulation amounts 1-10
control 1-10 modulation amounts 11-20

shift 1-10 increment multiplier 1-10 for A
control+shift 1-10 increment multiplier 11-20 for A

option 1-10 increment multiplier 1-10 for B
control+option 1-10 increment multiplier 11-20 for B

q-sine A
w-triangle A
e-ramp A
r-square A
t-pulse A
y-noise A
u-load sample A - aiff or sounddesigner II
(max length 23.7 seconds - if longer fork will just take the first 23.7 secs)

a-sine B
s-triangle B
d-ramp B
f-square B
g-pulse B
h-noise B
j-load sample B- aiff or sounddesigner II

control click letter button in Aiff Slots window, the sample in that slot will be loaded into wave A.
option click letter button in Aiff Slots window, sample will be loaded into wave B.
control + shift click letter button in Aiff Slots window, sample will be loaded into both waves.

This is a really useful feature as it allows you to rapidly change between any samples currently loaded in the Aiff Slots window.

If you are modulating, wave A is taken as the carrier and B as the modulator. Because of this, it is generally more interesting to load a sample into A then modulate it with B. Noise modulation is especially fun as it maps the wave or sample onto random frequencies. Low levels of noise modulation will just create a warble effect whereas high amounts will have quite a drastic effect.
option-m toggles the dialog buttons between mouse triggered SNDS or keyboard triggered : m & k.

option-v volume control for SNDS - mapped to the Y axis of the pitch window. (this control can be overdriven to distortion : 255 = normal full volume)

option-p pitch control for SNDS . it is mapped to the Y axis of the pitch window. 60 = normal unaltered pitch (0-127 range)

option-o turns off triggering buttons s, k, & p. This is necessary if you want to use the fork oscillators with a SND bank loaded without triggering any of the SNDS.

SNDS window,cmd 3:


if k (keyboard triggered) is ON :
  • keys q through / (slash) trigger samples 1 - 33
  • shift + keys Q through , (comma) trigger samples 34-64
  • holding down a key will cause that sample to loop

    if s (window triggered) is ON :
  • mouse downs in the pitchWindow will trigger the samples.
  • the sample number is mapped across the X axis
  • clicking and holding on a sample will cause that sample to loop.
  • , (comma) triggers a random sample
  • . (period) sets a random volume
  • / (slash) sets a random pitch
    if p (pitch triggered) :
  • mouse downs in the pitchWindow will trigger the samples at the pitch specified by the Y axis.
  • The increment controls for wave B will effect this amount. Under most circumstances, If you are using the pitch control it is best to have wave B increment set at 1.
  • the sample number is mapped across the X axis
  • clicking and holding on a sample will cause that sample to loop.
  • / (slash) sets a random pitch
    option + SPACEBAR turns off all SND samples.
    Volume (option v) & Pitch (option p) are always mapped across the Y.


  • Sound resources can be assembled into a single file in ResEdit or Resourcer (resource editors) or in SoundApp. SoundApp by Norman Franke is freeware and works perfectly for this.
  • SoundApp is a good choice for batch converting soundfiles to compressed sound resource files. It's best to use compression when converting due to the limit that APPLE puts on the size of a resource fork (around 5MB) -> hence the max size of your sample bank.

  • SoundApp makes it extremely easy to batch convert large amounts of samples into a single sound resource suitcase file.

  • First, make a new PlayList, cmd N in SoundApp's FILE menu.

  • excerpted from the SoundApp help menu :

    Using Play Lists
    Files can be added to a Play List by dragging files or folders into it from the Finder or by using the Add menu item. In addition, files can be added to a new list by holding down the modifier key specified in the Keys section of the Preferences dialog box while dragging files onto SoundApp. By default, this is the option key.
    If the Macintosh Drag and Drop Manager is installed, files can be reordered by dragging file selections. Files can be dragged out of the Play List and converted files will be placed in a folder on the desktop.
    In the SoundApp CONVERT menu :
    FILE FORMAT should be set to sound suitcase
    ENCODING (compression) should be set to IMA. Be sure to experiment with the other encoding methods as more compression (Mace 6) will reduce the file size but degrade sound quality whereas less will do the opposite.

    Press the CONVERT ALL button in the playlist window and save your new suitcase file.

    cmd-O in spongefork (open snd bank) will bring up the dialog to grab your file.

    Clicking the persistent r F head while SND samples are loaded will trigger a random sample at a random pitch & volume (if those controls are on).

    The aiff window, cmd 4, with 26 samples loaded :

    AIFF commands :
    click in name field to load sample.
    command + click in name field to begin recording into that slot. Spongefork will create a default name with the current time in hours.min.secs.

    option + click in name field to remove sample.

    control click letter button, the sample will be loaded into fork wave A.
    option click letter button, the sample will be loaded into fork wave B.
    control + shift click letter button, the sample will be loaded into both wave A & B.

    click tape deck controls.
    option + click play button, start looping playback.

    The samples are mapped to letter keys Q through M. 26 slots.
    Holding down the control key + letter keys operate the tape deck style controls.
    .......control + 'letter' play & stop toggle
    .......control + option 'letter' loop button
    .......control + shift 'letter' pause

    control + DELETE will turn off any file playing.

    The transport Window, cmd 5 & 6:
    Click the left head to toggle start/stop recording, and the right to pause recording. The transport record info can be shown by pressing cmd 6. This will show the current seconds recorded and an input level meter.