open-index/open-npm huggingface dataset:
npm package: @onchainvision-labs/ocv-contracts
Description: The Token Data
Author: onchainvision-labs
Latest version: 0.0.2

# onchainvision-contracts

The Token Data

- tokenID (uint)
- tokenOwner (address)
- tokenURI (json;base64/baseURI)
  - tokenName (string)
  - tokenDescription (string)
  - tokerImage (svg:base64)
  - tokenAttributes (json:string)
    - tokenTraits
    - tokenProperties
  - tokenAnimation
npm package: @onchor/cli
Description: Onchor CLI & MCP server — browse, buy, and call APIs from your terminal or AI agent
Author: Onchor
Latest version: 1.0.1

# @onchor/cli

API marketplace for AI agents. Browse, buy, and call APIs from your terminal — or plug into Claude Code, Cursor, and other AI tools via MCP.

## Install

```bash
npm install -g @onchor/cli
```

## Quick Start

```bash
# 1. Register (creates agent wallet + oat_ token)
onchor init my-agent

# 2. Browse APIs
onchor browse
onchor browse --category finance
onchor browse --slug token-scanner

# 3. Call an API (pay-per-call from balance)
onchor call token-scanner /scan --token So11111111111111111111111111111111111111112
onchor call web-scraper /scrape --url https://example.com

# 4. Fund your account
onchor deposit              # shows USDC address (Solana)
onchor confirm-deposit      # detects on-chain payment
onchor balance              # check balance
```

## MCP Server (Claude Code, Cursor, etc.)

Add to your Claude Code or Cursor config:

```json
{
  "mcpServers": {
    "onchor": {
      "command": "onchor",
      "args": ["mcp"]
    }
  }
}
```

Your AI agent will see these tools:
- `onchor_browse` — discover APIs on the marketplace
- `onchor_api_details` — get details + plans for an API
- `onchor_call` — call any API through the gateway
- `onchor_balance` — check USDC balance
- `onchor_subscribe` — subscribe to an API plan
- `onchor_subscriptions` — list active subscriptions
- `onchor_deposit_info` — get deposit address

## Commands

| Command | Description |
|---------|-------------|
| `onchor init [name]` | Register as an agent |
| `onchor browse` | List marketplace APIs |
| `onchor call <slug> <path>` | Call an API |
| `onchor subscribe <slug>` | Subscribe to a plan |
| `onchor balance` | Check USDC balance |
| `onchor deposit` | Get deposit address |
| `onchor confirm-deposit` | Detect on-chain deposit |
| `onchor history` | Transaction history |
| `onchor subscriptions` | List subscriptions |
| `onchor mcp` | Start MCP server |

## How It Works

1. **Init** creates a custodial Solana wallet and an `oat_` token stored in `~/.onchor/config.json`
2. **Browse** hits the Onchor marketplace to discover APIs listed by vendors
3. **Call** routes through the Onchor gateway — handles auth, billing, and rate limiting
4. **MCP** exposes the same functionality as native tools for AI agents

All payments in USDC on Solana. No gas fees per API call — just maintain a balance.

## Links

- Marketplace: https://onchor.xyz
- Docs: https://onchor.xyz/docs
- API: https://api.onchor.xyz
npm package: @oncoding/pudding
Description: A tool generating  cli tool scaffold
Latest version: 1.1.2

# pudding-cli

## Install

```bash
npm i @oncoding/pudding -g
```

## Add Bash Completion

get completion script using command below, and do sth it shows u!

```bash
pudding completion
```

## Usage

### new project

```bash
$ pudding project new hellocli

☐  pending   拷贝工程模板到/Users/nemo/code/imnemo/hellocli
☐  pending   生成新工程package.json
✔  success   hellocli新建成功!
●  note      请执行后续命令:

    cd hellocli
    npm i. - g
    hellocli completion
```

### dev new cli

```
cd hellocli

# install for dev
npm i . -g

# then you can use hellocli now
# add bash compeltion
hellocli completion

# show some examples
hello example -h

# new a command combo
pudding command new combo --combo

# new a command not combo
pudding command new --path command bar
```

### api

#### logger

[signale](https://github.com/klaussinani/signale) is used. All commands will show all debug infos with the param `-d` or `--debug`. By default, the logger `debug` and `log` will not be shown.

```
hello example echo -d
hello example echo
```
npm package: @oncojs/boxplot
Description: boxplot React component
Latest version: 0.3.1

# OncoJS BoxPlot

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

[//]: # (TODO: Describe BoxPlot here...)

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package

[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo
npm package: @oncojs/qqplot
Description: qqplot React component
Latest version: 0.0.1

# OncoJS QQPlot

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

[//]: # (TODO: Describe QQPlot here...)

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package

[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo
npm package: @oncoursesystems/eslint-config-base
Description: OnCourse Systems' base ESLint config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/eslint-config-base`
  OnCourse Systems' base ESLint configuration and rules for JS, JSON, YAML, and Markdown.

  <a href="https://www.npmjs.com/package/@oncoursesystems/eslint-config-base">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/eslint-config-base.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install eslint @oncoursesystems/eslint-config-base --save-dev
```

Or using `yarn`:

```sh
yarn add eslint @oncoursesystems/eslint-config-base -D
```

## Setup

Create an `.eslintrc.js` file with the following:

```js
extends: ['@oncoursesystems/eslint-config-base']
```

## Usage

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
yarn lint
```
npm package: @oncoursesystems/eslint-config-react
Description: OnCourse Systems' React ESLint config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/eslint-config-react`
  OnCourse Systems' React ESLint configuration and rules.

  <a href="https://www.npmjs.com/package/@oncoursesystems/eslint-config-react">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/eslint-config-react.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install eslint @oncoursesystems/eslint-config-react --save-dev
```

Or using `yarn`:

```sh
yarn add eslint @oncoursesystems/eslint-config-react -D
```

## Setup

Create an `.eslintrc.js` file with the following:

```json
{
  "extends": ["@oncoursesystems/eslint-config-react"]
}
```

## Usage

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
yarn lint
```
npm package: @oncoursesystems/eslint-config-react-native
Description: OnCourse Systems' React Native ESLint config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/eslint-config-react-native`
  OnCourse Systems' React Native ESLint configuration and rules.

  <a href="https://www.npmjs.com/package/@oncoursesystems/eslint-config-react-native">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/eslint-config-react-native.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install eslint @oncoursesystems/eslint-config-react-native --save-dev
```

Or using `yarn`:

```sh
yarn add eslint @oncoursesystems/eslint-config-react-native -D
```

## Setup

Create an `.eslintrc.js` file with the following:

```json
{
  "extends": ["@oncoursesystems/eslint-config-react-native"]
}
```

## Usage

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
yarn lint
```
npm package: @oncoursesystems/eslint-config-sencha
Description: OnCourse Systems' Sencha ESLint config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/eslint-config-sencha`
  OnCourse Systems' Sencha ESLint configuration and rules.

  <a href="https://www.npmjs.com/package/@oncoursesystems/eslint-config-sencha">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/eslint-config-sencha.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install eslint @oncoursesystems/eslint-config-sencha --save-dev
```

Or using `yarn`:

```sh
yarn add eslint @oncoursesystems/eslint-config-sencha -D
```

## Setup

Create an `.eslintrc.js` file with the following:

```json
{
  "extends": ["@oncoursesystems/eslint-config-sencha"]
}
```

## Usage

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
yarn lint
```
npm package: @oncoursesystems/eslint-config-ts
Description: OnCourse Systems' TypeScript ESLint config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/eslint-config-ts`
  OnCourse Systems' Typescript ESLint configuration and rules.

  <a href="https://www.npmjs.com/package/@oncoursesystems/eslint-config-ts">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/eslint-config-ts.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install eslint @oncoursesystems/eslint-config-ts --save-dev
```

Or using `yarn`:

```sh
yarn add eslint @oncoursesystems/eslint-config-ts -D
```

## Setup

Create an `.eslintrc.js` file with the following:

```json
{
  "extends": ["@oncoursesystems/eslint-config-ts"]
}
```

## Usage

Add the following `script` to your `package.json`:

```json
{
  "scripts": {
    "lint": "eslint ."
  }
}
```

and run the linter with:

```sh
yarn lint
```
npm package: @oncoursesystems/prettier-config
Description: OnCourse Systems' Prettier config
Latest version: 0.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

  # `@oncoursesystems/prettier-config`
  OnCourse Systems' Prettier configuration.

  <a href="https://www.npmjs.com/package/@oncoursesystems/prettier-config">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/prettier-config.svg" alt="NPM version" />
  </a>
  <a href="https://github.com/oncoursesystems/eslint-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems ESLint config is released under the MIT license." />
  </a>
</div>

## Installation

With `npm`:

```sh
npm install prettier @oncoursesystems/prettier-config --save-dev
```

Or using `yarn`:

```sh
yarn add prettier @oncoursesystems/prettier-config -D
```

## Setup

Add the following code to your `package.json` file:

```json
"prettier": "@oncoursesystems/prettier-config"
```
npm package: @oncoursesystems/renovate-config
Description: Renovate config for OnCourse Systems' repositories
Author: OnCourse Systems For Education
Latest version: 0.1.0

<div align="center">
  <img width="250" src="https://raw.githubusercontent.com/oncoursesystems/.github/master/assets/logo.jpg" />
  <br/><br/>

# `@oncoursesystems/renovate-config`

[Renovate](https://github.com/renovatebot/renovate) configuration for OnCourse Systems' repositories.

  <a href="https://github.com/oncoursesystems/renovate-config/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="OnCourse Systems Renovate config is released under the MIT license." />
  </a>
  <a href="https://www.npmjs.com/package/@oncoursesystems/renovate-config">
    <img src="https://img.shields.io/npm/v/@oncoursesystems/renovate-config.svg" alt="NPM version" />
  </a>
</div>

## Usage

Add this into `renovate.json`:

```json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["github>oncoursesystems/renovate-config"]
}
```
npm package: @onda/cms-sdk
Description: [ONDA CMS](https://github.com/tportio/onda-cms)를 편하게 사용하기 위한 SDK 패키지
Author: seonggukchoi
Latest version: 1.9.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# ONDA CMS SDK

JavaScript 기반 프로젝트에서 [ONDA CMS API](https://onda-cms-api.readme.io/reference/introduction)를
간편하게 사용할 수 있도록 하는 패키지입니다.  
Nest.js, TypeScript, JavaScript 환경을 모두 지원합니다.

## 설치

```bash
npm install @onda/cms-sdk
```

## 예제

- [Nest.js 환경](./docs/examples/nestjs.md)
- [TypeScript 환경](./docs/examples/typescript.md)
- [JavaScript 환경](./docs/examples/javascript.md)

## 변경

```bash
git clone https://github.com/tportio/onda-cms-sdk.git
npm ci
npm run prepare
```

릴리즈 시 Semantic Release를 사용하기 때문에, 커밋 메시지는 꼭 [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) 규칙에 맞게 작성해주세요.  
VSCode의 [Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits) 확장을 이용하면 좋습니다.

## 배포

`main` 브랜치에 변경 사항이 병합된 이후, Actions에서 수동으로 릴리즈 Dispatch 이벤트를 발생시킵니다.  
Semantic Release에 따라 자동으로 릴리즈를 생성하고, 해당 릴리즈 버전을 NPM에 배포합니다.
npm package: @onda/scheduler-sdk
Description: [ONDA Scheduler](https://github.com/tportio/onda-scheduler)를 편하게 사용하기 위한 SDK 패키지
Author: seonggukchoi
Latest version: 1.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# ONDA Scheduler SDK

[ONDA Scheduler](https://github.com/tportio/onda-scheduler)를 편하게 사용하기 위한 SDK 패키지

## 설치

```bash
npm install @onda/scheduler-sdk
```

### 예제

`app.module.ts`
```typescript
import { Module } from '@nestjs/common';
import { SchedulerSdkModule } from 'onda-scheduler-sdk';

import { AppService } from './app.service';

@Module({
  imports: [SchedulerSdkModule.register('SCHEDULER_API_HOST')],
  providers: [AppService],
})
export class AppModule {}
```

`app.service.ts`
```typescript
import { Injectable } from '@nestjs/common';
import {
  ApiSchedulerSdkService,
  GraphQLSchedulerSdkService,
  KafkaSchedulerSdkService,
} from 'onda-scheduler-sdk';

@Injectable()
export class AppService {
  constructor(
    private readonly apiSchedulerSdkService: ApiSchedulerSdkService,
    private readonly graphQLSchedulerSdkService: GraphQLSchedulerSdkService,
    private readonly kafkaSchedulerSdkService: KafkaSchedulerSdkService,
  ) {}
}
```

## 변경

```bash
git clone https://github.com/tportio/onda-scheduler-sdk.git
npm ci
npm run prepare
```

릴리즈 시 Semantic Release를 사용하기 때문에, 커밋 메시지는 꼭 [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) 규칙에 맞게 작성해주세요.
VSCode의 [Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits) 확장을 이용하면 좋습니다.

## 배포

`main` 브랜치에 변경 사항이 병합된 이후, Actions에서 수동으로 릴리즈 Dispatch 이벤트를 발생시킵니다.
Semantic Release에 따라 자동으로 릴리즈를 생성하고, 해당 릴리즈 버전을 NPM에 배포합니다.
npm package: @ondakuta/guided-breathing-react
Description: Guided breathing pacer components for React
Author: Luka Kakia
Latest version: 0.0.0

# @ondakuta/guided-breathing-react

> Guided breathing pacer components for React

![Screenshot](https://cdn-reibjvbyi.now.sh/guided-breathing-screenshot.png)

[![NPM](https://img.shields.io/npm/v/@ondakuta/guided-breathing-react.svg)](https://www.npmjs.com/package/@ondakuta/guided-breathing-react)

## Install

```bash
npm install --save @ondakuta/guided-breathing-react
```

## Usage

```jsx
import React, { Component } from "react";

import { BasicCirclePacer } from "@ondakuta/guided-breathing-react";

class Example extends Component {
  render() {
    return <BasicCirclePacer />;
  }
}
```

## API

See [guided-breathing docs](https://guided-breathing-react-docs.lilo.now.sh) for more examples and documentation

## License

MIT © [Luka Kakia](https://github.com/manguluka)
npm package: @ondas/dattorro-reverb
Description: Datorro algorithmic reverb
Author: danigb@gmail.com
Latest version: 0.3.0

# DattorroReverb

> Algorithmic reverb

[![npm version](https://img.shields.io/npm/v/@ondas/dattorro-reverb)](https://www.npmjs.com/package/@ondas/dattorro-reverb)
[![npm version](https://img.shields.io/bundlephobia/min/@ondas/dattorro-reverb)](https://www.npmjs.com/package/@ondas/dattorro-reverb?activeTab=explore)

[Dattorro](https://ccrma.stanford.edu/~dattorro/EffectDesignPart1.pdf) algorithmic reverb implemented as an AudioWorklet.

The actual dsp code is taken from https://github.com/khoin/DattorroReverbNode slightly adapted.

```js
import { DattorroReverb } from "@ondas/dattorro-reverb";

const audioContext = new AudioContext();
const reverb = new DattorroReverb(audioContext);
reverb.getParam("decay").setValue(0.2);

const piano = new TinyPiano(audioContext).bus1(reverb, 0.2);
```

## Install

```
npm i @ondas/dattorro-reverb
```

## Usage

All reverb parameters are accessed using `getParam` method. It returns an `AudioParam`, so they
can be scheduled with the Web Audio API:

```js
reverb.getParam("decay").setValue(0.2);
reverb.getParam("wet").linearRampToValueAtTime(context.currentTime + 1.0, 0.5);
```

The full list of params are exposed as `paramNames`:

```js
reverb.paramNames; // =>
// [
//  "preDelay", "bandwidth", "inputDiffusion1", "inputDiffusion2",
//  "decay", "decayDiffusion1", "decayDiffusion2",
//  "damping", "excursionRate", "excursionDepth",
//  "wet", "dry",
// ];
```
npm package: @ondas/drum-machine
Description: Sampled drum machines
Author: danigb@gmail.com
Latest version: 0.3.1

# DrumMachine

> A self-container mono-sample piano

[![npm version](https://img.shields.io/npm/v/@ondas/drum-machine)](https://www.npmjs.com/package/@ondas/drum-machine)
[![npm version](https://img.shields.io/bundlephobia/min/@ondas/drum-machine)](https://www.npmjs.com/package/@ondas/drum-machine?activeTab=explore)

Sampled drum-machine.

```js
import { DrumMachine, DrumMachineKits } from "@ondas/drum-machine";

const audioContext = new AudioContext();

// Create a new instrument
const kit = DrumMachineKits["CR-78"];
const drums = new DrumMachine(audioContext, kit);

// Wait until the audio is loaded
await drums.ready();
drums.start("kick");

// Schedule
const now = audioContext.currentTime;
drums.start({ name: "kick", time: now });
drums.start({ name: "snare", time: now + 1 });
drums.start({ name: "kick", time: now + 2 });
drums.start({ name: "snare", time: now + 3 });
```

## Install

```
npm i @ondas/drum-machine
```
npm package: @ondas/rhodes
Description: Sampled rhodes
Author: danigb@gmail.com
Latest version: 0.1.1

# Rhodes

> A self-container mono-sample piano

[![npm version](https://img.shields.io/npm/v/@ondas/rhodes)](https://www.npmjs.com/package/@ondas/rhodes)
[![npm version](https://img.shields.io/bundlephobia/min/@ondas/rhodes)](https://www.npmjs.com/package/@ondas/rhodes?activeTab=explore)

A Rhodes electric piano. Currently there's one instrument using [jlearman.jRhodes3d](https://github.com/sfzinstruments/jlearman.jRhodes3d)

```js
import Rhodes from "@ondas/rhodes";

const rhodes = new Rhodes(new AudioContext());

// Wait until the audio is loaded
await rhodes.ready();

// Start and stop
rhodes.start("C4");
```

## Install

```
npm i @ondas/rhodes
```
npm package: @ondas/tiny-piano
Description: Self contained tiny-piano
Author: danigb@gmail.com
Latest version: 1.0.1

# TinyPiano

> A self-container mono-sample piano

[![npm version](https://img.shields.io/npm/v/@ondas/tiny-piano)](https://www.npmjs.com/package/@ondas/tiny-piano)
[![npm version](https://img.shields.io/bundlephobia/min/@ondas/tiny-piano)](https://www.npmjs.com/package/@ondas/tiny-piano?activeTab=explore)

The main characteristic of this instrument is that it doesn't need any asset loading in order to work. The single sample it uses is self-contained withing the code.

Doesn't sound good, but is a fast and cheap way to get something playing:

```js
import TinyPiano from "@ondas/tiny-piano";

const piano = TinyPiano(new AudioContext());
piano.start(60);
```

## Install

```
npm i @ondas/tiny-piano
```