You are viewing a potentially older version of this package. View all versions.
toes-PotatoMidi-0.0.3 icon

PotatoMidi

Unofficial mirror of PotatoMidi

Date uploaded a year ago
Version 0.0.3
Download link toes-PotatoMidi-0.0.3.zip
Downloads 1583
Dependency string toes-PotatoMidi-0.0.3

This mod requires the following mods to function

toes-Socks-0.4.0 icon
toes-Socks

Socks is a library to facilitate joy in Webfishing mod development

Preferred version: 0.4.0

README

Potato Midi

Unofficial mirror of Potato Midi release

This package exists solely for convenience of installation with mod managers. So, please -under no circumstances- do NOT contact Potato for support or file frivolous issues in their repo.

This mod takes MIDI input and allows you to configure it to various in-game sounds.

It's for power users who want to play around with a configuration file to play more than just guitar.

If you are not a power user, you should use MidiStrummer instead.

Usage

  • Connect your MIDI input device before starting WebFishing.
  • Launch WebFishing with GDWeave.
  • Open the MIDI settings within the mod (if available) to configure your preferred instrument and vocal settings.

Configuration

Any changes made to the configuration file will take effect immediately.
Any issues with the configuration file will be logged to the console/log file.

If you want to reset the configuration file, delete the file and it'll be regenerated.

Logs are written to:

%AppData%\Godot\app_userdata\webfishing_2_newver\logs\godot.log

File location

%AppData%\Godot\app_userdata\webfishing_2_newver\PotatoMidi.json

Structure

The configuration file has the following structure:

  • version: The version of the configuration file.
  • channel_mappings: A dictionary mapping logical instrument names to MIDI channel numbers.
  • instruments: A list of dictionaries, each representing an instrument with specific properties and parameters.

Version

  • Type: int
  • Description: The version of the configuration file.
  • Current version: 1
  • Example:
"version": 1

Channel mappings

  • Type: Dictionary
  • Description: A dictionary mapping logical instrument names to MIDI channel numbers.
  • Example:
"channel_mappings": {
    "ACOUSTIC_GRAND_PIANO": 0,
    "BRIGHT_ACOUSTIC_PIANO": 1,
    ...
}

Instruments

  • Type: Array of Dictionaries
  • Description: Each dictionary defines an instrument with unique properties and specific parameters.
  • Keys:
    • instrument: The name of the instrument.
      • Type: String
      • Description: The name of the instrument.
      • Example:
      "instrument": "guitar_strummer"
      
    • channels
      • Type: Array of Strings
      • Description: A list of MIDI channel names for the instrument.
      • Example:
      "channels": [
          "ACOUSTIC_GRAND_PIANO",
          "BRIGHT_ACOUSTIC_PIANO",
          "ELECTRIC_GRAND_PIANO",
          "HONKY_TONK_PIANO",
          "RHODES_PIANO",
          "CHORDS",
          "SYNTH_PAD"
      ]
      
    • Pitch Requirement
      • One of the following:
        • pitch_range
          • Type: Dictionary
          • Description: A dictionary with the minimum and maximum pitches for the instrument.
          • Keys:
            • min: The minimum pitch for the instrument.
              • Type: int
              • Description: The minimum pitch for the instrument.
              • Example: 40
            • max: The maximum pitch for the instrument.
              • Type: int
              • Description: The maximum pitch for the instrument.
              • Example: 80
            • Example:
            "pitch_range": {
                "min": 40,
                "max": 80
            }
            
        • pitch
          • Type: int
          • Description: The pitch of the instrument.
          • Example:
          "pitch": 40
          
        • pitch_list
          • Type: Array of ints
          • Description: An array of pitches for the instrument.
          • Example:
          "pitch_list": [
              40,
              45,
              50,
              55,
              59,
              64
          ]
          

Instrument specific parameters

  • Type: Dictionary
  • Description: A dictionary of parameters specific to the instrument.
  1. guitar_strummer
    • Guitar can only do 40-80 pitch
    • apply_velocity
      • Type: bool
      • Description: Whether to apply velocity to the strum.
      • Default: true
      • Example:
      "apply_velocity": true
      
  2. talk_effect
    • apply_pitch
      • Type: bool
      • Description: Whether to apply pitch to the talk effect.
      • Default: true
      • Example:
      "apply_pitch": true
      
    • base_pitch
      • Type: int
      • Description: The base pitch for the talk effect. (The talk effect has been clamped between 0.5-2.0)
      • Default: 53
      • Example:
      "base_pitch": 53
      
    • letter
      • Type: String
      • Description: The letter to use for the talk effect.
      • Default: a
      • Example:
      "letter": "a"
      
  3. SFX
    • apply_pitch
      • Type: bool
      • Description: Whether to apply pitch to the SFX.
      • Default: true
      • Example:
      "apply_pitch": true
      
    • base_pitch
      • Type: int
      • Description: The base pitch for the SFX.
      • Default: 80
      • Example:
      "base_pitch": 80
      
    • face_emote
      • Type: String
      • Description: The face emote to use for the SFX.
      • Default: null
      • Example:
      "face_emote": "bark"
      
    • sfx_sound
      • Type: String
      • Description: The name of the SFX sound to play. See Valid SFX Sounds for a list of valid SFX sounds.
      • Default: bark_cat
      • Example:
      "sfx_sound": "bark_cat"
      
  • Example instrument configuration:
{
    "instrument": "guitar_strummer",
    "channels": [
        "ACOUSTIC_GRAND_PIANO",
        "BRIGHT_ACOUSTIC_PIANO",
        "ELECTRIC_GRAND_PIANO",
        "HONKY_TONK_PIANO",
        "RHODES_PIANO",
        "CHORDS",
        "SYNTH_PAD"
    ],
    "pitch_range": {
        "min": 40,
        "max": 80
    },
    "parameters": {
        "apply_velocity": true
    }
},
{
    "instrument": "talk_effect",
    "channels": [
        "ACOUSTIC_GRAND_PIANO",
        "BRIGHT_ACOUSTIC_PIANO",
        "ELECTRIC_GRAND_PIANO",
        "HONKY_TONK_PIANO",
        "RHODES_PIANO",
        "CHORDS",
        "SYNTH_PAD"
    ],
    "pitch_range": {
        "min": 12,
        "max": 40
    },
    "parameters": {
        "apply_pitch": true,
        "base_pitch": 53,
        "letter": "a"
    }
},
{
    "instrument": "sfx",
    "channels": [
        "DRUMS",
        "PERCUSSION"
    ],
    "pitch": 35,
    "parameters": {
        "apply_pitch": false,
        "sfx_sound": "punch"
    }
},
{
    "instrument": "sfx",
    "channels": [
        "DRUMS",
        "PERCUSSION"
    ],
    "pitch_list": [
        48,
        54
    ],
    "parameters": {
        "apply_pitch": false,
        "sfx_sound": "tambourine"
    }
},
{
    "instrument": "sfx",
    "channels": [
        "ACOUSTIC_GRAND_PIANO",
        "BRIGHT_ACOUSTIC_PIANO",
        "ELECTRIC_GRAND_PIANO",
        "HONKY_TONK_PIANO",
        "RHODES_PIANO",
        "CHORDS",
        "SYNTH_PAD"
    ],
    "pitch_range": {
        "min": 72,
        "max": 100
    },
    "parameters": {
        "base_pitch": 80,
        "face_emote": "bark",
        "apply_pitch": true,
        "sfx_sound": "bark_cat"
    }
}

CHANGELOG

Changelog

v1.0.1 - Fixes

  • Fixed crash when configuration file was totally invalid (#2)
  • Fixed initial default configuration generation not loading until game restart (#3)
  • Made it more obvious that you can click on the chat message to open your config file
  • Made successful configuration reload more distinguished from error notifications (green vs red)

v1.0.0

  • Documentation overhaul - check it out
  • The default configuration has been supercharged and now includes most drum channel pitch assignments (by convention) - check out the new documentation regarding that
  • Major changes:
    • base_patch no longer defaults to a static value
      • This will always default to the lowest value in your instrument's pitch range
    • Omitting an instrument's pitch range will now default it to "all pitches"
      • A warning will be emitted in case this was unintentional
    • Your instrument names are no longer case-sensitive!
    • talk_effect can now receive a list of letters ["a", "b", ..., "z"] to choose from randomly when 'playing' a note!
    • talk_effect now defaults to randomly choosing between "a", "o", and "i"

0.0.6

  • You can now put comments in your PotatoMidi.json config without breaking the parser

0.0.4

  • Swapped out BBApi for Socks
  • Players will now be notified if an error occurs when loading their config.json file