Package voltage.core

# Class VoltageModule

java.lang.Object
voltage.core.VoltageModule

public abstract class VoltageModule extends Object
The base class for your module.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `VoltageModule.IOPanelPolyValues`
  Enumeration used to access I/O panel poly jacks.
  `static enum`
  `VoltageModule.IOPanelValues`
  Enumeration used to access I/O panel audio/CV jacks.
  `static enum`
  `VoltageModule.MessageBoxType`
  Types of icons for the MessageBox()
  `static enum`
  `VoltageModule.ModuleNotifications`
  Notifications that are sent to your module's Notify()
  `static enum`
  `VoltageModule.ModuleType`
  The type of module you are creating.
  `static enum`
  `VoltageModule.MouseCursorTypes`
  Mouse cursor types.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final long`
  `GUI_UPDATE_TIME`
  Default time of 50 milliseconds

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `VoltageModule(long moduleID, VoltageObjects voltageObjects, String manufacturer, String name, VoltageModule.ModuleType type, double width)`
  Deprecated.
  `VoltageModule(long moduleID, VoltageObjects voltageObjects, String name, VoltageModule.ModuleType type, double width)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `AudioDeviceCallback(VoltageComponent component, FloatBuffer[] inputBuffers, FloatBuffer[] outputBuffers, int numSamples)`
  Override this function in your module in order to process these buffers.
  `void`
  `CreateUndoNode(String undoType, String description, double previousValue, double newValue)`
  Create an undo event for a double value.
  `void`
  `CreateUndoNode(String undoType, String description, Object previousValue, Object newValue)`
  Create an undo event for an object
  `boolean`
  `DeleteVariation(int index)`
  Delete a variation
  `boolean`
  `DeleteVariation(String VariationName)`
  Delete a variation
  `void`
  `Destroy()`
  This is where you put your cleanup code.
  `ByteBuffer`
  `GetBinaryResource(String resourceName)`
  Get a binary resource from the resource section of a module.
  `VoltageMouseKeyFlags`
  `GetCurrentKeyStates()`
  Returns the current state of modifier keys (ctrl, shift, etc.) and mouse buttons
  `int`
  `GetCurrentVariationIndex()`
  Get the current variation used.
  `String`
  `GetCurrentVariationName()`
  Get the current variation name.
  `VoltageModule.MouseCursorTypes`
  `GetCursorType()`
  Get the current cursor type.
  `String`
  `GetGlobalProperty(String propertyName)`
  Retrieves the global property.
  `double`
  `GetIOPanelInputValue(int input)`
  Get the IO Panel input value.
  `ArrayList<ShortMessage>`
  `GetIOPanelMIDIMessages()`
  Get the IO Panel MIDI messages.
  `double`
  `GetIOPanelPolyValue(VoltageModule.IOPanelPolyValues type, int polyChannel)`
  Get an IO Panel poly value.
  `double`
  `GetIOPanelValue(VoltageModule.IOPanelValues type)`
  Get an IO Panel value.
  `String`
  `GetManufacturerProperty(String propertyName)`
  Retrieves the manufacturer property.
  `int`
  `GetMaxNumberOfPolyVoices()`
  Gets the maximum number of poly voices.
  `int`
  `GetNumberOfPolyVoices()`
  Returns the current number of poly voices.
  `int`
  `GetNumberOfVariations()`
  Get the number of variations in use.
  `double`
  `GetPlayPositionInQuarterNotes()`
  Gets the host's play position in quarter notes.
  `double`
  `GetPlayPositionInSeconds()`
  Gets the host's play position in seconds.
  `double`
  `GetScreenScale()`
  Returns the main monitors screen scale.
  `byte[]`
  `GetStateInformation()`
  Gets the current state of the module.
  `byte[]`
  `GetStateInformationForVariations()`
  Gets the current state of the module to be saved with a variation.
  `double`
  `GetTempo()`
  Returns the tempo of the host.
  `int`
  `GetTimeSignatureDenominator()`
  Returns the time signature denominator of the host.
  `int`
  `GetTimeSignatureNumerator()`
  Returns the time signature numerator of the host.
  `String`
  `GetTooltipText(VoltageComponent component)`
  Get the tooltip text for a component.
  `long`
  `GetTotalSamplesMixed()`
  Returns the number of samples mixed since Voltage Modular was started.
  `String[]`
  `GetVariationNames()`
  Get a list of all the variations.
  `double`
  `GetWidth()`
  Returns the width of the module.
  `void`
  `Initialize()`
  This is where you put your initialization code.
  `boolean`
  `IsBypassed()`
  Returns whether the module has been bypassed by the user.
  `boolean`
  `LoadVariation(int index)`
  Loads a variation
  `boolean`
  `LoadVariation(String VariationName)`
  Loads a variation
  `void`
  `Log(String logStatement)`
  Log to the Voltage log file.
  `void`
  `LogError(String logStatement)`
  Log an error to Voltage log file.
  `boolean`
  `Notify(VoltageComponent component, VoltageModule.ModuleNotifications notification, double doubleValue, long longValue, int x, int y, Object object)`
  The Notify() function is where you handle button clicks and other types of events.
  `void`
  `OnUndoRedo(String undoType, double newValue, Object optionalObject)`
  Called when a custom undo/redo event occurs.
  `void`
  `OutputMidiToHost(ShortMessage midiMessage)`
  Send MIDI to the host (if in plugin mode)
  `void`
  `ProcessBypassedSample()`
  A module can be bypassed.
  `void`
  `ProcessSample()`
  Process one sample for your module.
  `double`
  `ReadBusValue(int bus)`
  Read a bus value from a given bus.
  `ArrayList<ShortMessage>`
  `ReadMidiBusMessages(int bus)`
  Read a MIDI bus message.
  `double`
  `ReadPolyBusValue(int bus, int polyChannel)`
  Read a poly bus value from a given bus.
  `void`
  `RegisterFileTypesForFileDrop(String listOfFileTypes)`
  Allow file drops
  `boolean`
  `SaveVariation(String newName)`
  Saves the current cabinet settings as a variation
  `boolean`
  `SetCustomCursor(String cursorResourceName, int hotSpotX, int hotSpotY)`
  Sets a custom cursor.
  `void`
  `SetGlobalProperty(String propertyName, String value)`
  Sets a global property.
  `void`
  `SetIOPanelOutputValue(int output, double value)`
  Sets an IO Panel output value.
  `void`
  `SetManufacturerProperty(String propertyName, String value)`
  Sets a manufacturer property.
  `void`
  `SetMouseCursor(VoltageModule.MouseCursorTypes newCursor)`
  Set the mouse cursor
  `void`
  `SetSkin(String skinID)`
  Sets a skin for this module.
  `void`
  `SetStateInformation(byte[] stateInfo)`
  Loads the state of the module.
  `void`
  `SetStateInformationForVariations(byte[] stateInfo)`
  Loads the state of the module saved with a variation.
  `int`
  `ShowDropDownMenu(String[] options, int currentlySelectedIndex, VoltageComponent showMenuUnderThisObject)`
  Shows a drop down menu.
  `void`
  `ShowMessageBox(VoltageModule.MessageBoxType type, String title, String text)`
  Show a message box alert.
  `String`
  `ShowOpenFileDialog(String dialogBoxTitle, String initialDirectory, String fileTypesToShow)`
  Show a modal open file dialog.
  `String`
  `ShowSaveFileDialog(String dialogBoxTitle, String initialDirectory, String fileTypesToShow)`
  Show a modal save file dialog.
  `void`
  `StartGuiUpdateTimer()`
  Start the gui update timer with the default time of 50 ms.
  `void`
  `StartGuiUpdateTimer(long updateMilliseconds)`
  This function sets a specific update speed
  `boolean`
  `StartNamedTimer(String timerName, long updateMilliseconds)`
  Starts a new timer.
  `void`
  `StopGuiUpdateTimer()`
  Stops the gui timer.
  `boolean`
  `StopNamedTimer(String timerName)`
  Stops a named timer.
  `void`
  `WriteBusValue(int bus, double value)`
  Write a value to a bus.
  `void`
  `WriteMidiBusMessage(int bus, ShortMessage message)`
  Write a MIDI bus message.
  `void`
  `WritePolyBusValue(int bus, int polyChannel, double value)`
  Write a value to a poly bus channel.

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### GUI_UPDATE_TIME

    public static final long GUI_UPDATE_TIME
    Default time of 50 milliseconds
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### VoltageModule

    @Deprecated public VoltageModule(long moduleID, VoltageObjects voltageObjects, String manufacturer, String name, VoltageModule.ModuleType type, double width)
    Deprecated.

  - ### VoltageModule

    public VoltageModule(long moduleID, VoltageObjects voltageObjects, String name, VoltageModule.ModuleType type, double width)

- ## Method Details

  - ### SetMouseCursor

    public void SetMouseCursor(VoltageModule.MouseCursorTypes newCursor)
    Set the mouse cursor
    Parameters:
      `newCursor` - the cursor type.

  - ### SetCustomCursor

    public boolean SetCustomCursor(String cursorResourceName, int hotSpotX, int hotSpotY)
    Sets a custom cursor.
    Parameters:
      `cursorResourceName` - the name of an image resource.
      `hotSpotX` - the x offset for the hotspot.
      `hotSpotY` - the y offset for the hotspot.
    Returns:
      true if loaded and set.

  - ### GetCursorType

    public VoltageModule.MouseCursorTypes GetCursorType()
    Get the current cursor type.
    Returns:
      the current cursor type.

  - ### Initialize

    public void Initialize()
    This is where you put your initialization code.

  - ### Destroy

    public void Destroy()
    This is where you put your cleanup code.

  - ### Notify

    public boolean Notify(VoltageComponent component, VoltageModule.ModuleNotifications notification, double doubleValue, long longValue, int x, int y, Object object)
    The Notify() function is where you handle button clicks and other types of events.
    Parameters:
      `component` - the component this notification applies to.
      `notification` - the notification type.
      `doubleValue` - a double value that applies to some notifications.
      `longValue` - a long value that applies to some notifications.
      `x` - if used, the x coordinate of the notification.
      `y` - if used, the y coordinate of the notification.
      `object` - an object if it applies to the notification.
    Returns:
      true if handled.

  - ### GetTooltipText

    public String GetTooltipText(VoltageComponent component)
    Get the tooltip text for a component. Use this to display a non standard tooltip for a component.
    Parameters:
      `component` - the component to display a tooltip for.
    Returns:
      the tooltip text.

  - ### GetStateInformation

    public byte[] GetStateInformation()
    Gets the current state of the module. If you have special state info beyond the state of buttons and sliders, add it in the overriden function in your module.
    Returns:
      the state information

  - ### SetStateInformation

    public void SetStateInformation(byte[] stateInfo)
    Loads the state of the module. If you have special state info beyond the state of buttons and sliders, add it in the overriden function in your module.
    Parameters:
      `stateInfo` - a buffer of state info.

  - ### GetStateInformationForVariations

    public byte[] GetStateInformationForVariations()
    Gets the current state of the module to be saved with a variation. By default, this saves the same data as is saved with a preset. However, you can choose to save less data, or no data, with a variation.
    Returns:
      the variation state information

  - ### SetStateInformationForVariations

    public void SetStateInformationForVariations(byte[] stateInfo)
    Loads the state of the module saved with a variation. If you have special state info beyond the state of buttons and sliders, add it in the overriden function in your module.
    Parameters:
      `stateInfo` - a buffer of state info.

  - ### ProcessSample

    public void ProcessSample()
    Process one sample for your module. This is a high priority function and it needs to be as fast as possible. Avoid putting in any gui related functions. Only add code that is fast. Important: Use a timer to change user interface items. Your module will be very slow if you add the wrong code here.

  - ### ProcessBypassedSample

    public void ProcessBypassedSample()
    A module can be bypassed. Add your logic to handle a bypassed module. For example, what inputs will pass through to the outputs of your module if the user wants to see the effects of the particular module on the end result sound.

  - ### IsBypassed

    public boolean IsBypassed()
    Returns whether the module has been bypassed by the user.
    Returns:
      true if the module is bypassed.

  - ### GetWidth

    public double GetWidth()
    Returns the width of the module.
    Returns:
      module width in inches.

  - ### StartGuiUpdateTimer

    public void StartGuiUpdateTimer()
    Start the gui update timer with the default time of 50 ms.

  - ### StartGuiUpdateTimer

    public void StartGuiUpdateTimer(long updateMilliseconds)
    This function sets a specific update speed
    Parameters:
      `updateMilliseconds` - How often the timer is fired

  - ### StopGuiUpdateTimer

    public void StopGuiUpdateTimer()
    Stops the gui timer.

  - ### StartNamedTimer

    public boolean StartNamedTimer(String timerName, long updateMilliseconds)
    Starts a new timer.
    Parameters:
      `timerName` - the name of the new timer.
      `updateMilliseconds` - how often the timer happens.
    Returns:
      true if the timer was started.

  - ### StopNamedTimer

    public boolean StopNamedTimer(String timerName)
    Stops a named timer.
    Parameters:
      `timerName` - the name of the timer to stop.
    Returns:
      true if successful

  - ### OnUndoRedo

    public void OnUndoRedo(String undoType, double newValue, Object optionalObject)
    Called when a custom undo/redo event occurs.
    Parameters:
      `undoType` - the the type of undo event.
      `newValue` - the new value to set.
      `optionalObject` - optional new object for the undo/redo.

  - ### GetTotalSamplesMixed

    public long GetTotalSamplesMixed()
    Returns the number of samples mixed since Voltage Modular was started.
    Returns:
      the total number of samples mixed since the start of the software.

  - ### GetTempo

    public double GetTempo()
    Returns the tempo of the host. If this is the stand-alone version, it will report 120 bpm.
    Returns:
      the tempo.

  - ### GetTimeSignatureNumerator

    public int GetTimeSignatureNumerator()
    Returns the time signature numerator of the host.
    Returns:
      the time signature numerator.

  - ### GetTimeSignatureDenominator

    public int GetTimeSignatureDenominator()
    Returns the time signature denominator of the host.
    Returns:
      the time signature denominator.

  - ### GetPlayPositionInSeconds

    public double GetPlayPositionInSeconds()
    Gets the host's play position in seconds.
    Returns:
      the host's play position in seconds.

  - ### GetPlayPositionInQuarterNotes

    public double GetPlayPositionInQuarterNotes()
    Gets the host's play position in quarter notes.
    Returns:
      the host's play position in quarter notes..

  - ### OutputMidiToHost

    public void OutputMidiToHost(ShortMessage midiMessage)
    Send MIDI to the host (if in plugin mode)
    Parameters:
      `midiMessage` - a MIDI message to send.

  - ### GetNumberOfPolyVoices

    public int GetNumberOfPolyVoices()
    Returns the current number of poly voices. The user has the ability to change the number of poly voices on the IO panel for each instance of Voltage Modular.
    Returns:
      the number of poly voices for this instance.

  - ### GetMaxNumberOfPolyVoices

    public int GetMaxNumberOfPolyVoices()
    Gets the maximum number of poly voices.
    Returns:
      the maximum number of poly voices.

  - ### ReadBusValue

    public double ReadBusValue(int bus)
    Read a bus value from a given bus.
    Parameters:
      `bus` - the bus channel from 0 to 31.
    Returns:
      the value of the bus.

  - ### WriteBusValue

    public void WriteBusValue(int bus, double value)
    Write a value to a bus.
    Parameters:
      `bus` - the bus channel from 0 to 31.
      `value` - the value to write.

  - ### ReadPolyBusValue

    public double ReadPolyBusValue(int bus, int polyChannel)
    Read a poly bus value from a given bus.
    Parameters:
      `bus` - the bus channel from 0 to 31.
      `polyChannel` - the poly channel.
    Returns:
      the value of the bus.

  - ### WritePolyBusValue

    public void WritePolyBusValue(int bus, int polyChannel, double value)
    Write a value to a poly bus channel.
    Parameters:
      `bus` - the bus channel from 0 to 31.
      `polyChannel` - the poly channel to write to.
      `value` - the value to write.

  - ### ReadMidiBusMessages

    public ArrayList<ShortMessage> ReadMidiBusMessages(int bus)
    Read a MIDI bus message.
    Parameters:
      `bus` - the bus channel from 0 to 31.
    Returns:
      a list of ShortMessage MIDI messages.
    See Also:
      - `ShortMessage`

  - ### WriteMidiBusMessage

    public void WriteMidiBusMessage(int bus, ShortMessage message)
    Write a MIDI bus message.
    Parameters:
      `bus` - the bus channel from 0 to 31.
      `message` - the ShortMessage to add to the bus.
    See Also:
      - `ShortMessage`

  - ### GetIOPanelValue

    public double GetIOPanelValue(VoltageModule.IOPanelValues type)
    Get an IO Panel value.
    Parameters:
      `type` - the type of value to get.
    Returns:
      the value.

  - ### GetIOPanelPolyValue

    public double GetIOPanelPolyValue(VoltageModule.IOPanelPolyValues type, int polyChannel)
    Get an IO Panel poly value.
    Parameters:
      `type` - the type of value to get.
      `polyChannel` - the poly channel to get the value for.
    Returns:
      the value.

  - ### GetIOPanelMIDIMessages

    public ArrayList<ShortMessage> GetIOPanelMIDIMessages()
    Get the IO Panel MIDI messages.
    Returns:
      a list of MIDI ShortMessages.

  - ### GetIOPanelInputValue

    public double GetIOPanelInputValue(int input)
    Get the IO Panel input value.
    Parameters:
      `input` - the input from 0 to 3.
    Returns:
      the input value.

  - ### SetIOPanelOutputValue

    public void SetIOPanelOutputValue(int output, double value)
    Sets an IO Panel output value.
    Parameters:
      `output` - the output from 0 to 7
      `value` - the value to set it to.

  - ### AudioDeviceCallback

    public void AudioDeviceCallback(VoltageComponent component, FloatBuffer[] inputBuffers, FloatBuffer[] outputBuffers, int numSamples)
    Override this function in your module in order to process these buffers.
    Parameters:
      `component` - the Voltage Component to receive the audio data?
      `inputBuffers` - the input buffers
      `outputBuffers` - the output buffers
      `numSamples` - the number of samples in the buffers.
    See Also:
      - `VoltageAudioDevice`

  - ### GetBinaryResource

    public ByteBuffer GetBinaryResource(String resourceName)
    Get a binary resource from the resource section of a module.
    Parameters:
      `resourceName` - the name of of the resource.
    Returns:
      the byte buffer of data if successful.

  - ### Log

    public void Log(String logStatement)
    Log to the Voltage log file.
    Parameters:
      `logStatement` - the text to log.

  - ### LogError

    public void LogError(String logStatement)
    Log an error to Voltage log file.
    Parameters:
      `logStatement` - the text to log.

  - ### SetSkin

    public void SetSkin(String skinID)
    Sets a skin for this module.
    Parameters:
      `skinID` - the id for a skin.

  - ### CreateUndoNode

    public void CreateUndoNode(String undoType, String description, double previousValue, double newValue)
    Create an undo event for a double value.
    Parameters:
      `undoType` - used to identify the undo event in the OnUndoRedo() callback.
      `description` - a description of the undo event.
      `previousValue` - the before value.
      `newValue` - the after value.
    See Also:
      - `OnUndoRedo(java.lang.String,double,java.lang.Object)`

  - ### CreateUndoNode

    public void CreateUndoNode(String undoType, String description, Object previousValue, Object newValue)
    Create an undo event for an object
    Parameters:
      `undoType` - used to identify the undo event in the OnUndoRedo() callback.
      `description` - a description of the undo event.
      `previousValue` - the before value.
      `newValue` - the after value.

  - ### ShowOpenFileDialog

    public String ShowOpenFileDialog(String dialogBoxTitle, String initialDirectory, String fileTypesToShow)
    Show a modal open file dialog.
    Parameters:
      `dialogBoxTitle` - the title for the dialog such as "Load Sound"
      `initialDirectory` - the starting folder/directory.
      `fileTypesToShow` - A set of file patterns such as "*" or "*.jpg" or "*.jpg;*.png". If there is more than one, it should be seperated by semi-colons.
    Returns:
      if successful, the filepath to the the chosen file.
    See Also:
      - `OnUndoRedo(java.lang.String,double,java.lang.Object)`

  - ### ShowSaveFileDialog

    public String ShowSaveFileDialog(String dialogBoxTitle, String initialDirectory, String fileTypesToShow)
    Show a modal save file dialog.
    Parameters:
      `dialogBoxTitle` - the title for the dialog such as "Save Sound"
      `initialDirectory` - the starting folder/directory.
      `fileTypesToShow` - A set of file patterns such as "*" or "*.jpg" or "*.jpg;*.png". If there is more than one, it should be seperated by semi-colons.
    Returns:
      if successful, the filepath to the the chosen file name.

  - ### GetGlobalProperty

    public String GetGlobalProperty(String propertyName)
    Retrieves the global property.
    Parameters:
      `propertyName` - the name of the property
    Returns:
      the value of the property.

  - ### SetGlobalProperty

    public void SetGlobalProperty(String propertyName, String value)
    Sets a global property.
    Parameters:
      `propertyName` - the name of the property
      `value` - the value to set it to.

  - ### GetManufacturerProperty

    public String GetManufacturerProperty(String propertyName)
    Retrieves the manufacturer property.
    Parameters:
      `propertyName` - the name of the property
    Returns:
      the value of the property.

  - ### SetManufacturerProperty

    public void SetManufacturerProperty(String propertyName, String value)
    Sets a manufacturer property.
    Parameters:
      `propertyName` - the name of the property
      `value` - the value to set it to.

  - ### ShowDropDownMenu

    public int ShowDropDownMenu(String[] options, int currentlySelectedIndex, VoltageComponent showMenuUnderThisObject)
    Shows a drop down menu. We use special codes to populate the menu. A menu separator is indicated by {sep} A sub menu is indicated by double curly braces {{sub-menu-name}} In order to do a 'double' sub-menu or sub-sub-menu, you'd use {{sub-menu1}}{{sub-menu2}}Menu item This would look like sub-menu1 : sub-menu2 : Menu item New options: {ticked} and {disabled} Add {ticked} to add a tick mark to an item. Add {disabled} to disable an item.
    Parameters:
      `options` - a list of strings/separators to display.
      `currentlySelectedIndex` - the index of the string of the currently selected item. Use -1 if nothing is selected.
      `showMenuUnderThisObject` - the component that the menu will appear underneath.
    Returns:
      the index of the the selected parameter.

  - ### ShowMessageBox

    public void ShowMessageBox(VoltageModule.MessageBoxType type, String title, String text)
    Show a message box alert.
    Parameters:
      `type` - the type of MessageBox
      `title` - the title of the message.
      `text` - the body of the message.

  - ### RegisterFileTypesForFileDrop

    public void RegisterFileTypesForFileDrop(String listOfFileTypes)
    Allow file drops
    Parameters:
      `listOfFileTypes` - a string of file types desired. Separate by semi-colons. For example, if you wanted to receive .mid files and .midi files, you'd use "mid;midi"

  - ### GetNumberOfVariations

    public int GetNumberOfVariations()
    Get the number of variations in use.
    Returns:
      the number of variations.

  - ### GetCurrentVariationIndex

    public int GetCurrentVariationIndex()
    Get the current variation used.
    Returns:
      the current variation index.

  - ### GetCurrentVariationName

    public String GetCurrentVariationName()
    Get the current variation name.
    Returns:
      the name of the current variation.

  - ### GetVariationNames

    public String[] GetVariationNames()
    Get a list of all the variations.
    Returns:
      a string list of variation names.

  - ### LoadVariation

    public boolean LoadVariation(int index)
    Loads a variation
    Parameters:
      `index` - the index of the variation
    Returns:
      true if successful.

  - ### LoadVariation

    public boolean LoadVariation(String VariationName)
    Loads a variation
    Parameters:
      `VariationName` - the name of the variation
    Returns:
      true if successful.

  - ### SaveVariation

    public boolean SaveVariation(String newName)
    Saves the current cabinet settings as a variation
    Parameters:
      `newName` - the name of the variation
    Returns:
      true if successful.

  - ### DeleteVariation

    public boolean DeleteVariation(int index)
    Delete a variation
    Parameters:
      `index` - the index of the variation.
    Returns:
      true if successful.

  - ### DeleteVariation

    public boolean DeleteVariation(String VariationName)
    Delete a variation
    Parameters:
      `VariationName` - the name of the variation.
    Returns:
      true if successful.

  - ### GetCurrentKeyStates

    public VoltageMouseKeyFlags GetCurrentKeyStates()
    Returns the current state of modifier keys (ctrl, shift, etc.) and mouse buttons

  - ### GetScreenScale

    public double GetScreenScale()
    Returns the main monitors screen scale.
    Returns:
      scale of monitor. Monitors at 72 dpi will return 1.0. High density monitors will return values greater than 1.0