Remote Piano

A toy piano app made with Flutter as a gRPC example, with a unique feature to interact with remote devices.


Supported platforms

  • Android
  • iOS
  • Web (limited)
    • gRPC-Web is used for web instead of grpc-dart.
    • Sending notes is not supported due to the limited functionality of gRPC-Web.
    • Receiving notes does not start unless you send a request by tapping a key after connected to a server.
    • Tapping more keys cause an error printed in a browser console.
    • A gateway proxy is necessary between a server and clients. See below for instruction.

flutter_midi and Tone.js are used for mobile and web respectively.

No sound font (.sf2) file is in this repository.
Search and get one, place it in /assets/sf2/, and then specify the file path in pubspec.yaml.


A server is necessary if you use the remote operation feature of the app.
Its source code is on another repository.