I have 2 Playstation Buzz! USB controllers, so 8 people can participate in parallel. I also know that these buzzers can be connected to the PC.

Use case: I am doing trainings for all sorts of things (Wireshark, Debugging, ...) After a lesson, I'd like to perform a quiz with the participants. The participants can win small things, e.g. sweets. In the past, I did everything manually, but sometimes discussions arose who were the first to provide the answer. Since all the trainings are deep technical, I thought using the buzzers would be a nice gimmick.

I am now looking for a software that

  • runs on Windows 7 x64 and Windows 10
  • recognizes all controllers (support at least 2)
  • allows the moderator to start a question (make the buzzers ready)
  • finds out the first person that presses the buzzer
  • play a sound when the first buzzer was pressed
  • stops the question (puts buzzers on hold)
  • highlights the buzzer of the person that pressed first (red light)

That's already it. I don't need support of the remaining 4 buttons, since answering the question will be handled by me.

I know Buzzmania, but that's already too automated and I don't want to generate questions in advance. I could not make You don't know JackBuzz work.

1 Answer 1


Wow, I didn't think it would be that easy. I got everything up and running in 45 minutes using the BuzzIO Nuget package for .NET.

Here's a minimum application with no object oriented design whatsoever.

using System;
using System.Collections.Generic;
using System.Linq;
using BuzzIO;

namespace BuzzExample
    class Program
        private static IEnumerable<IBuzzHandsetDevice> _handsets;

        static void Main()
            _handsets = new BuzzHandsetFinder().FindHandsets();
            foreach (var handset in _handsets)
                handset.SetLights(true, true, true, true);
                handset.ButtonChanged += HandsetOnButtonChanged;

            Console.WriteLine("Press Enter to end");

        private static void HandsetOnButtonChanged(object sender, BuzzButtonChangedEventArgs args)
            for (int i = 0; i < args.Buttons.Length; i++)
                Console.Write($"{i}: ");
                if (!args.Buttons[i].Any) Console.Write("None");
                if (args.Buttons[i].Blue) Console.Write("Blue ");
                if (args.Buttons[i].Green) Console.Write("Green ");
                if (args.Buttons[i].Yellow) Console.Write("Yellow ");
                if (args.Buttons[i].Orange) Console.Write("Orange ");
                if (args.Buttons[i].Red) Console.Write("Buzzer ");

            var lights = new bool[4];
            for (int i = 0; i < args.Buttons.Length; i++)
                lights[i] = args.Buttons[i].Any;
            _handsets.First().SetLights(lights[0], lights[1], lights[2], lights[3]);

Hint for Windows 10: the controller might be installed as "HID-compliant game controller". In this case, the library may not find the connected controllers. To fix that, go to the device manager and switch the driver to "HID-compliant device". Mine has vendor ID (VID) 054C for Sony and product ID (PID) 1000.

For the Buzzer sound I used Audacity and generated the following sound

  • tone generator 2
  • wave form: sawtooth
  • frequency: 300 to 200 Hz
  • amplitude: 0.8 to 0.8
  • interpolation: linear
  • duration: 0.2 seconds

For playing sound, you can use an embedded resource and a SoundPlayer:

 // Playing sound from embedded resource
 Stream buzzerStream = Resource.buzz;
 buzzPlayer = new SoundPlayer(buzzerStream);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.