
Music x Technology
Paweł Węgrzyniak
Full-Stack Developer & Musician / Kraków, Poland
Where songcraft meets software craft.
Full-stack developer and multi-instrumentalist building modern web apps and immersive sonic experiences. I love turning ideas into elegant interfaces, scalable systems, and music that feels alive.
Sound
Guitar, live looping, production
Software
Next.js, TypeScript, .NET, Azure
Currently
Creative web apps and audio tools
Offstage: Playing guitar / Embedded projects (Arduino) / AI tools / Cycling / Traveling

Now building
Interactive music experiences for the web
Music
Recent videos
Live sessions, studio cuts, and experiments that blend texture, rhythm, and atmosphere.
Latest Release
VideoAcoustic Session
VideoSoftware
Web projects
Products focused on performance, clarity, and a strong sense of craft.


Netreci
A comprehensive recipe platform focused on clean UX and trusted user identity.
- Identity system with email registration and confirmation.
- Create and publish recipes after verifying your email.
- Save favourite recipes to your personal collection.
Hardware
Arduino projects
Physical builds that blend sensors, code, and sound-focused UX.
Sound-Reactive RGB Ambient Light
An audio-reactive RGB LED that shifts from blue to red based on mic input, with smoothing for clean, musical transitions.
Circuit
- Arduino Uno or Nano
- Electret mic sensor (analog out)
- RGB LED (common cathode)
- 3x 220Ω resistors
- Breadboard + jumpers

Sound-Reactive RGB Ambient Light demo
VideoCode snippet
1// Pins2const int micPin = A0;3const int redPin = 3;4const int greenPin = 5;5const int bluePin = 6;6 7// Sound calibration (adjust!)8const int noiseFloor = 520; // silence level9const int maxSound = 750; // loud sound10 11// Smoothing12float smoothLevel = 0;13const float smoothing = 0.06;14 15void setup() {16 pinMode(redPin, OUTPUT);17 pinMode(greenPin, OUTPUT);18 pinMode(bluePin, OUTPUT);19}20 21void loop() {22 int micValue = analogRead(micPin);23 24 // Remove noise floor25 int soundLevel = abs(micValue - noiseFloor);26 soundLevel = constrain(soundLevel, 0, maxSound - noiseFloor);27 28 // Smooth animation29 smoothLevel = smoothLevel * (1 - smoothing) + soundLevel * smoothing;30 31 // Normalize 0–25532 int level = map(smoothLevel, 0, maxSound - noiseFloor, 0, 255);33 level = constrain(level, 0, 255);34 35 // Color mapping36 int r, g, b;37 38 if (level < 85) {39 // Blue → Green40 r = 0;41 g = map(level, 0, 85, 0, 255);42 b = map(level, 0, 85, 255, 0);43 } else if (level < 170) {44 // Green → Yellow45 r = map(level, 85, 170, 0, 255);46 g = 255;47 b = 0;48 } else {49 // Yellow → Red50 r = 255;51 g = map(level, 170, 255, 255, 0);52 b = 0;53 }54 55 analogWrite(redPin, r);56 analogWrite(greenPin, g);57 analogWrite(bluePin, b);58 59 delay(5);60}Contact
Let's build something that sounds alive.
Open to collaborations, freelance projects, and music-tech experiments.