Giter Site home page Giter Site logo

y-piano's Introduction

Y-Piano

Im Rahmen des Moduls "Audio- und Videotechnik" ist Y-Piano entstanden. Ein älteres Design kann hier ausprobiert werden.

Inhalt

  1. Idee
  2. Installationsanleitung
  3. Benutzeranleitung
  4. Tastenbelegung
  5. Verwendeten Technologien
  6. Technische Projektbeschreibung

Idee

Viele Songs bauen auf dem gleichen Schema auf. Meist besteht der typische Pop-Song aus vier sich wiederholende Akkorde mit einer Melodie. Die richtigen 4-Akorde zu finden ist ein wichtiger Teil des Kompositionsprozesses. Unsere Idee war es ein Tool zu entwickeln um bei diesem Prozess zu helfen.

Installationsanleitung

Voraussetzungen:

Node.js Installation

Windows

Den Windows Installer kann man über die Nodejs.org Webseite runterladen.

macOS

Den macOS Installer kann man ebenfalls über die Nodejs.org Webseite runterladen. Oder Folgendes in der Kommandozeile ausführen um die Installation durchzuführen:

curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg</a>.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"

Ubuntuu

Die Installation von Node.js auf Ubuntuu erfolgt über folgendes Kommando:

sudo apt-get install nodejs

Dann npm (node package manager) installieren:

sudo apt-get install npm

React.js Installation

Im Terminal:

npm install -g create-react-app

ausführen.

Projektausführung

Im Projektordner, wo sich die package.json befindet, wird durch folgendes Kommando alle benötigten Abhängigkeiten heruntergeladen und installiert:

npm install

Das Projekt wird durch folgendes Kommando initialisiert:

npm start

Nun kann das Projekt unter der URL http://localhost:3000/ im Browser aufgerufen werden.

Benutzeranleitung

Mit Y-Piano können musikalische Kompositionen kreiert werden. Dazu stellt Y-Piano unterschiedliche Funktionen zur Verfügung:

Der Nutzer hat die Möglichkeit die Tasten eines virtuellen Pianos durch Mausklick oder Computertastaturinputs in Echtzeit zu spielen. Die Schaltflächen über dem virtuellen Piano können genutzt werden, um zwischen den gewünschten Oktaven des Pianos zu wählen. Darüber hinaus kann das virtuelle Piano durch ein MIDI-Gerät bedient werden. Dieses kann im Settingsmenü, welches durch Anklicken des Zahnradsymbols erscheint, mit der Anwendung verknüpft werden. Im besagten Settingsmenü besteht außerdem die Möglichkeit durch einen Schalter die Anzeige der Computertastaturbelegung wahlweise anzuzeigen.

Es ist möglich vier individuelle Akkorde festzulegen. Hierzu müssen die jeweiligen Rechtecke angeklickt werden, um dann in einem Overlay-Menü die gewünschten Akkorde auszuwählen. Die durch den Benutzer getroffene Auswahl kann nun, durch Klicken der Play-Schaltfläche, in einer Schleife gleichzeitig abgespielt werden oder als Arpeggios nacheinander.

Drums können in der Schleife ergänzt werden. Hierzu aktivieren Sie die Checkboxen ("Kit","Snare","Hi-Hat") der entsprechenden Drums.

Ein BPM-Regler ermöglicht es das Tempo zu beeinflussen, welcher durch das Mausrad bedienbar ist.

Sollten Sie eine zufällige Auswahl der eben bennanten Funktionen wünschen, klicken Sie den "Random"-Button.

Schließlich können Sie Ihre Einstellungen als MIDI-Sequenz exportieren indem Sie die "MIDI-Export"-Schaltfläche betätigen, oder Sie generieren einen Share-Link mit Hilfe des "Share"-Buttons.

Tastenbelegung

Als Midi-Controller kann jedes beliebiges Midi-Gerät verwendet werden welches "noteon" und "noteoff" events unterstützt. Wir verwendeten ein Microbrute Red zum testen.

Tastatur und Mausrad

Mittels Mausrad kann der BPM-Regler auf das gewünschte Tempo eingestellt werden. Die Tastatur ermöglicht es die schwarzen(0-9) und weißen Tasten(q,w,e,r,t,z,u,i,o,p,ü,a,s,d) des Pianos zu spielen.

Midi Controller

Verwendete Technologien

Technische Projektbeschreibung

Es wird eine Hauptkomponente (App) Verwendet, die alle States verwaltet. Von dieser gehen alle anderen Komponenten ab.

Komponenten:

  • App
    • Hauptkomponente, die die Unterkomponenten enthält.
    • Verwaltet alle States
  • Arpeggios
    • Verwaltet die Auswahl der Arpeggios
  • ChordSelect
    • Verwaltet die die Auswahl der Akkorde
  • index
    • Ruft "App", beim Aufrufen der Seite auf.
  • Keyboard
    • Verwaltet die UI der Klaviatur
    • Reagiert auf Input beim klicken auf die Klaviatur
  • LocalStorageHelper
    • Eine Hilfskomponente welche beim speichern der aktuellen Auswahl im Local Storage hilft
  • MidiExporter
    • Generiert und handelt den Download der Mididatei
  • OctaveSelector
    • Verwaltet die UI zum Auswählen der Oktave auf der Klaviatur
  • Progressbar
    • Verwaltet die UI zum Anzeigen/Auswählen der BPM
  • RandomGenerator
    • Wählt zufällig die Akkorde, BPM, Drums und den Arpeggio aus.
    • Verwaltet die dementsprechende UI
  • Settings
    • Auswahlmöglichkeit für den MIDI-Controller
    • Verwaltet die Einstellungen-UI
    • ermöglicht es die Tastaturbelegung anzuzeigen mittels eines Switch-Toggles
  • Share
    • Generiert den Share-Link für die momentane Akkord- und BPM-Auswahl
    • Verwaltet die dementsprechende UI

Verwendete Ressourcen:

Drums:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.