SINE
Download Flojoy Studio to try this app
  
 Generate a waveform with a given shape (sine, sawtooth, etc). Inputs
------
default : OrderedPair|Vector
    Input that defines the x-axis values of the function and output.  Params:    waveform : select  The waveform type of the wave.   amplitude : float  The amplitude of the wave.   frequency : float  The wave frequency in radians/2pi.   offset : float  The y axis offset of the function.   phase : float  The x axis offset of the function.     Returns:    out : OrderedPair  x: the input v or x values
y: the resulting sine function    
Python Code
import numpy as np
from flojoy import flojoy, OrderedPair, Vector
from scipy import signal
from typing import Literal
@flojoy
def SINE(
    default: OrderedPair | Vector,
    amplitude: float = 1,
    frequency: float = 1,
    offset: float = 0,
    phase: float = 0,
    waveform: Literal["sine", "square", "triangle", "sawtooth"] = "sine",
) -> OrderedPair:
    """Generate a waveform with a given shape (sine, sawtooth, etc).
    Inputs
    ------
    default : OrderedPair|Vector
        Input that defines the x-axis values of the function and output.
    Parameters
    ----------
    waveform : select
        The waveform type of the wave.
    amplitude : float
        The amplitude of the wave.
    frequency : float
        The wave frequency in radians/2pi.
    offset : float
        The y axis offset of the function.
    phase : float
        The x axis offset of the function.
    Returns
    -------
    OrderedPair
        x: the input v or x values
        y: the resulting sine function
    """
    A = amplitude
    F = frequency
    Y0 = offset
    match default:
        case OrderedPair():
            x = default.y
        case _:
            x = default.v
    if waveform == "sine":
        y = Y0 + A * np.sin(2 * np.pi * F * x + phase)
    elif waveform == "square":
        y = Y0 + A * signal.square(2 * np.pi * F * x / 10 + phase)
    elif waveform == "triangle":
        y = Y0 + A * signal.sawtooth(2 * np.pi * F * x / 10 + phase, 0.5)
    elif waveform == "sawtooth":
        y = Y0 + A * signal.sawtooth(2 * np.pi * F / 10 * x + phase)
    return OrderedPair(x=x, y=y)
Example App
Having problems with this example app? Join our Discord community and we will help you out!
In this example, the LINSPACE and SINE nodes generate a sine function which is visualized with the SCATTER node.