All Projects → tanepiper → mm-components

tanepiper / mm-components

Licence: MIT license
Music Markups components

Programming Languages

typescript
32286 projects
HTML
75241 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to mm-components

event-driven-web-components-realworld-example-app
Exemplary real world application built with Vanilla JS Web Components in an Event Driven Architecture
Stars: ✭ 55 (+10%)
Mutual labels:  webcomponents, vanilla-javascript, vanilla-js
Atoms
Atoms for Blaze UI
Stars: ✭ 1,505 (+2910%)
Mutual labels:  webcomponents, stenciljs
Ionic Framework
A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.
Stars: ✭ 45,802 (+91504%)
Mutual labels:  webcomponents, stenciljs
gatsby-remark-highlight-code
Adds stylish cards and syntax highlighting to code blocks in markdown files
Stars: ✭ 63 (+26%)
Mutual labels:  webcomponents, stenciljs
Webcomponents From Zero To Hero
An introduction to writing raw web components.
Stars: ✭ 70 (+40%)
Mutual labels:  webcomponents, vanilla-javascript
Stencil
A toolchain for building scalable, enterprise-ready component systems on top of TypeScript and Web Component standards. Stencil components can be distributed natively to React, Angular, Vue, and traditional web developers from a single, framework-agnostic codebase.
Stars: ✭ 9,880 (+19660%)
Mutual labels:  webcomponents, stenciljs
js-plugin-starter-kit
VanillaJS (pure JavaScript) plugin starter with Webpack 4 and Babel 7.
Stars: ✭ 100 (+100%)
Mutual labels:  vanilla-javascript, vanilla-js
solar-components
Web Components Implementation of Solar Design System
Stars: ✭ 16 (-68%)
Mutual labels:  webcomponents, stenciljs
coding challenge-14
Understanding JavaScript and coding without the help of a library or tool
Stars: ✭ 22 (-56%)
Mutual labels:  vanilla-javascript, vanilla-js
web-photo-filter
A Web Component to apply Instagram-like WebGL filters to photos
Stars: ✭ 105 (+110%)
Mutual labels:  webcomponents, stenciljs
tensorflowjs-remove-background
Remove Background from the picture using WebAssembly & TensorFlow.js
Stars: ✭ 79 (+58%)
Mutual labels:  vanilla-javascript, vanilla-js
Masonry Layout
An efficient and fast web component that gives you a beautiful masonry layout
Stars: ✭ 43 (-14%)
Mutual labels:  webcomponents, vanilla-js
anywhere-webcomponents
A UI work in progress based on custom elements (web components) for use in anywhere.
Stars: ✭ 17 (-66%)
Mutual labels:  webcomponents, stenciljs
cwco
Powerful and Fast Web Component Library with a Simple API
Stars: ✭ 27 (-46%)
Mutual labels:  webcomponents, vanilla-js
app-starter
Angular mono-repo (Ionic/Capacitor/StencilJS/Web Component) app starter for supporting cross platform apps.
Stars: ✭ 75 (+50%)
Mutual labels:  webcomponents, stenciljs
Ionicons
Premium hand-crafted icons built by Ionic, for Ionic apps and web apps everywhere 🌎
Stars: ✭ 15,802 (+31504%)
Mutual labels:  webcomponents, stenciljs
Bs Custom File Input
A little plugin for Bootstrap 4 custom file input
Stars: ✭ 162 (+224%)
Mutual labels:  vanilla-javascript, vanilla-js
lego
🚀 Web-components made lightweight & Future-Proof.
Stars: ✭ 69 (+38%)
Mutual labels:  webcomponents, vanilla-js
curved-menu
VanillaJS fully configurable curved menu (circular navigation)
Stars: ✭ 30 (-40%)
Mutual labels:  vanilla-javascript, vanilla-js
stenciljs-in-react
Stenciljs components in React: step by step guide
Stars: ✭ 22 (-56%)
Mutual labels:  webcomponents, stenciljs

Music Markup Web Components

Music Markup Web Components are built using StencilJS and distributed as web components (currently not using Shadow DOM);

The idea behind it is to provide some general markup for creating music instruments and visualisations using web components.

Currently there are three components:

<mm-context>

This is the top level tag to use to create the audio context. You can provide an alternative-context if you want to provide your own AudioContext, otherwise it will create a shared one for the application

<mm-keyboard>

The <mm-keyboard> tag provides an audio context for creating a keyboard element. It takes one property at the moment oscillator-type, which can be one of sine, square, sawsawtooth or triangle. Inside you attach via a single slot any keys you want to bind. The mm-keyboard listens for real keyboard events as well as events from virtual keys. Currently it also provides the wave form picker.

<mm-key>

The <mm-key> tag is used to add a key to the keyboard. You can provide it a frequency and time for the note, and you can also pass a class-name property to pass down custom classes.

In the current example it's used like this

<mm-context>
  <mm-keyboard oscillator-type="sawtooth">
    <mm-key class-name="white b" frequency="174.614" time="1"></mm-key>
    <mm-key class-name="black as" frequency="184.997" time="1"></mm-key>
    <mm-key class-name="white a" frequency="195.998" time="1"></mm-key>
    <mm-key class-name="black gs" frequency="200.000" time="1"></mm-key>
    <mm-key class-name="white g" frequency="207.652" time="1"></mm-key>
    <mm-key class-name="black fs" frequency="233.082" time="1"></mm-key>
    <mm-key class-name="white f" frequency="246.942" time="1"></mm-key>
    <mm-key class-name="white e" frequency="261.626" time="1"></mm-key> <!-- Middle c -->
    <mm-key class-name="black ds" frequency="277.183" time="1"></mm-key>
    <mm-key class-name="white d" frequency="293.665" time="1"></mm-key>
    <mm-key class-name="black cs" frequency="311.127" time="1"></mm-key>
    <mm-key class-name="white c" frequency="329.628" time="1"></mm-key>
  </mm-keyboard>
</mm-context>

Future features include:

  • Adding support for MP3 Audio / WAV files
  • Provide theme support (Design different skins)
  • Add a visualiser for control
  • Support nested tags that provide node pass throughs

Getting Started

To start a new project mm-components uses the Stencil starter

git clone https://github.com/tanepiper/mm-components.git mm-components
cd mm-components
git remote rm origin

and run:

npm install
npm start

To view the build, start an HTTP server inside of the /www directory.

To watch for file changes during development, run:

npm run dev

To build the app for production, run:

npm run build

To run the unit tests once, run:

npm test

To run the unit tests and watch for file changes during development, run:

npm run test.watch
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].