All Projects → kopiro → Siriwave

kopiro / Siriwave

Licence: mit
The Apple® Siri wave-form replicated in a JS library.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Siriwave

Nord Xcode
An arctic, north-bluish clean and elegant Xcode color theme.
Stars: ✭ 63 (-94.69%)
Mutual labels:  apple
Pasition
Path Transition with little JS code, render to anywhere - 轻量级 Path 过渡库,渲染到任何地方
Stars: ✭ 1,149 (-3.12%)
Mutual labels:  canvas
Merge Images
Easily compose images together without messing around with canvas
Stars: ✭ 1,172 (-1.18%)
Mutual labels:  canvas
Cluster
Easy Map Annotation Clustering 📍
Stars: ✭ 1,132 (-4.55%)
Mutual labels:  apple
Zdog
Flat, round, designer-friendly pseudo-3D engine for canvas & SVG
Stars: ✭ 8,904 (+650.76%)
Mutual labels:  canvas
Drawingview
android上的一个涂鸦控件。可以设置画笔的粗细,颜色,撤销上一笔涂鸦,提供保存图片的接口。
Stars: ✭ 68 (-94.27%)
Mutual labels:  canvas
Canvas
High performance skia binding to Node.js. Zero system dependency and pure npm packages without any postinstall scripts nor node-gyp.
Stars: ✭ 63 (-94.69%)
Mutual labels:  canvas
Icon Machine
Web application for randomly generating pixel art icons.
Stars: ✭ 73 (-93.84%)
Mutual labels:  canvas
Gsxlib
A PHP library for communicating with Apple's GSX web service API
Stars: ✭ 66 (-94.44%)
Mutual labels:  apple
Wheel Of Lunch
HTML5 randomised spinning wheel to select a place to eat by using a RESTful API to fetch local places.
Stars: ✭ 70 (-94.1%)
Mutual labels:  canvas
Cirrus
☁️ Simple CloudKit sync for Codable Swift models
Stars: ✭ 65 (-94.52%)
Mutual labels:  apple
Sketches
a starting point for sketches
Stars: ✭ 66 (-94.44%)
Mutual labels:  canvas
Free Sidecar
Enable Sidecar on Unsupported iPads and Macs running iPadOS 13 and macOS Catalina
Stars: ✭ 1,159 (-2.28%)
Mutual labels:  apple
Hqchart
HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据替换接口
Stars: ✭ 1,126 (-5.06%)
Mutual labels:  canvas
Fruity
Rusty bindings for Apple libraries
Stars: ✭ 72 (-93.93%)
Mutual labels:  apple
Notation
✏️ A simple web app to make drawings that are easy to embed, particularly for Notion.so.
Stars: ✭ 63 (-94.69%)
Mutual labels:  canvas
Animockup
Create animated mockups in the browser 🔥
Stars: ✭ 1,152 (-2.87%)
Mutual labels:  canvas
Phaser Ce
Phaser CE is a fun, free and fast 2D game framework for making HTML5 games for desktop and mobile web browsers, supporting Canvas and WebGL rendering.
Stars: ✭ 1,186 (+0%)
Mutual labels:  canvas
React Ape
🦍• [Work in Progress] React Renderer to build UI interfaces using canvas/WebGL
Stars: ✭ 1,183 (-0.25%)
Mutual labels:  canvas
Dazv
canvas 可视化图表
Stars: ✭ 70 (-94.1%)
Mutual labels:  canvas

SiriWave

The "Apple Siri" wave replicated in pure Javascript using the Canvas API. To learn more about the project, read the blog post here, check the demo or codepen.

npm version

iOS (classic) style

The classic, pre-iOS9 style.

iOS9 style

The new fluorescent wave introduced in iOS9.

iOS13 style

work in progress

The wave reinvented as a bubble.

Usage

Browser (via CDN) usage

Import the UMD package via the unpkg CDN and it's ready to use.

<script src="https://unpkg.com/siriwave/dist/siriwave.umd.min.js"></script>

ES module

Install it through npm install siriwave or yarn add siriwave first:

import SiriWave from "siriwave";

Initialize

Create a div container and instantiate a new SiriWave object:

<div id="siri-container"></div>
<script>
  var siriWave = new SiriWave({
    container: document.getElementById("siri-container"),
    width: 640,
    height: 200,
  });
</script>

Constructor options

Key Type Description Default Required
container DOMElement The DOM container where the DOM canvas element will be added. null yes
style "ios", "ios9" The style of the wave. "ios" no
ratio Number Ratio of the display to use. Calculated by default. calculated no
speed Number The speed of the animation. 0.2 no
amplitude Number The amplitude of the complete wave-form. 1 no
frequency Number The frequency of the complete wave-form. Only available in style "ios" 6 no
color String Color of the wave. Only available in style "ios" "#fff" no
cover Bool The canvas covers the entire width or height of the container false no
autostart Bool Decide wether start the animation on boot. false no
pixelDepth Number Number of step (in pixels) used when drawed on canvas. 0.02 no
lerpSpeed Number Lerp speed to interpolate properties. 0.01 no
curveDefinition ICurveDefinition[] Override definition of the curves, check above for more details. null no

API

new SiriWave

curveDefinition

By passing this argument, you're overriding the default curve definition resulting in a completely different style.

The default definition for the ios classic style is:

[
  { attenuation: -2, lineWidth: 1, opacity: 0.1 },
  { attenuation: -6, lineWidth: 1, opacity: 0.2 },
  { attenuation: 4, lineWidth: 1, opacity: 0.4 },
  { attenuation: 2, lineWidth: 1, opacity: 0.6 },
  { attenuation: 1, lineWidth: 1.5, opacity: 1 },
];

and it results in 5 different sin-waves with different parameters and amplitude.

The ios9 style definition is instead:

[
  { color: "255,255,255", supportLine: true },
  { color: "15, 82, 169" }, // blue
  { color: "173, 57, 76" }, // red
  { color: "48, 220, 155" }, // green
];

and it results in 3 different colored waves + 1 support wave that needs to be there.

start()

Start the animation

stop()

Stop the animation.

setSpeed(newValue)

Set the new value of speed (animated)

setAmplitude(value)

Set the new value of amplitude (animated)

dispose()

Stop the animation and destroy the canvas, by removing it from the DOM. Subsequent start() calls on this SiriWave instance will fail with an exception.

Grapher plots

Build and development

If you wanna make some modifications in your local environment, use:


yarn dev

```

this will create a watchable build with RollupJS and automatically create a server to see your changes in the browser.

To finally build all targets:

```

yarn build

```

## QA

#### How do I integrate this library with a microphone user input?

You can find an excellent demo [here](https://jsitor.com/PPQtOp9Yp) by @semmel
```
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].