1.2.2 • Published 2 months ago
@strudel/gamepad v1.2.2
@strudel/gamepad
This package adds gamepad input functionality to strudel Patterns.
Install
npm i @strudel/gamepad --save
Usage
import { gamepad } from '@strudel/gamepad';
// Initialize gamepad (optional index parameter, defaults to 0)
const pad = gamepad(0);
// Use gamepad inputs in patterns
const pattern = sequence([
// Button inputs
pad.a, // A button value (0-1)
pad.tglA, // A button toggle (0 or 1)
// Analog stick inputs
pad.x1, // Left stick X (0-1)
pad.x1_2, // Left stick X (-1 to 1)
]);
Available Controls
Buttons
- Face Buttons
a
,b
,x
,y
(or uppercaseA
,B
,X
,Y
)- Toggle versions:
tglA
,tglB
,tglX
,tglY
- Shoulder Buttons
lb
,rb
,lt
,rt
(or uppercaseLB
,RB
,LT
,RT
)- Toggle versions:
tglLB
,tglRB
,tglLT
,tglRT
- D-Pad
up
,down
,left
,right
(oru
,d
,l
,r
or uppercase)- Toggle versions:
tglUp
,tglDown
,tglLeft
,tglRight
(ortglU
,tglD
,tglL
,tglR
)
Analog Sticks
- Left Stick
x1
,y1
(0 to 1 range)x1_2
,y1_2
(-1 to 1 range)
- Right Stick
x2
,y2
(0 to 1 range)x2_2
,y2_2
(-1 to 1 range)
Examples
// Use button values to control amplitude
$: sequence([
s("bd").gain(pad.X), // X button controls gain
s("[hh oh]").gain(pad.tglY), // Y button toggles gain
]);
// Use analog stick for continuous control
$: note("c4*4".add(pad.y1_2.range(-24,24))) // Left stick Y controls pitch shift
.pan(pad.x1_2); // Left stick X controls panning
// Use toggle buttons to switch patterns on/off
// Define button sequences
const HADOKEN = [
'd', // Down
'r', // Right
'a', // A
];
const KONAMI = 'uuddlrlrba' //Konami Code ↑↑↓↓←→←→BA
// Add these lines to enable buttons(but why?)
$:pad.D.segment(16).gain(0)
$:pad.R.segment(16).gain(0)
$:pad.A.segment(16).gain(0)
// Check button sequence (returns 1 when detected, 0 when not within last 1 second)
$: sound("hadoken").gain(pad.checkSequence(HADOKEN))
Multiple Gamepads
You can connect multiple gamepads by specifying the gamepad index:
const pad1 = gamepad(0); // First gamepad
const pad2 = gamepad(1); // Second gamepad