Git Product home page Git Product logo

jmidisequencer's Introduction

JMidiSequencer

Multi-track MIDI Sequencer based on JAVA 9 using the MVC architecture. Developed alongside Joseph Annis, jMidiSequencer was a great playground to learn about audio processing with Java. It supports several features such as a terminal and GUI views, the ability to import, play, edit and export multi-track midi files, real-time visualization, practice mode and more.

JAVA DOC for reference in folder: /doc

###########################

MODEL

###########################

JMidiComposition

The core container of the composition. Represents a collection of MIDI Tracks that can be played in sync. Is mainly responsible of synchronizing all the tracks together and set time changes.

JMidiTrack

Where most of the work go and the assignment visualization example is. This class collects all the JMidiEvents (Notes) and manages them for them to be scrollable and ready for the JMidiComposition.

JMidiEvent

A simple class that represents a MIDI message (note), makes sure the message is ready to be analyzed by the IjMidiTrack.

JVirtualInstrument

A simple class that represents a MIDI Instrument. It basically sets how the events are going to be represented from the track to the user in a mor musical way (defines scale degrees, intervals, etc...). This is used by JMidiTrack

###########################

CONTROLLER

###########################

Note: composition loops automatically so if you press R, make sure is not playing or will go back to the beginning automatically.

Keys:

<- :move cursor to the left, -> :move cursor to the Right S :Stop P :Play B :go to Start of composition E :go to the end of the composition
X : export midi file to root folder

MainController

Takes care of the initial command line interactions.

CompositionController

Takes care of the initial command line interactions.

VisualController

Takes care of the user interactions with the visual view only.

Keys: <- move cursor to the left, -> move cursor to the Right

AudioController

Takes care of user interactions in the midi only view.

CompositeController

Takes care of user interactions in the Composite view.

###########################

VIEW

###########################

ConsoleView

Renders a console audio of the composition.

DrawValues

Holds constants for a unified visual render between classes.

AudioView

Renders an audio view of the composition and handles playback events of it.

ViewManager

This is a factory class for views that allows the client to easily select between a console version of the output and the more complex GUI.

ICompositionView

A unified typing for views relating to the music editor. As what and how different aspects of a composition should be displayed is not totally concrete, this only contains one method, initialize. rather than a series of methods dictating what should be included in the audio.

controller.visual

A group of classes responsible for displaying all the necessary interfaces related to a JMidiComposition. This includes a ledger containing every note in the composition, arranged horizontally, with each row matching a pitch within the composition's range. A ten-octave keyboard is also displayed, and any selected notes are illuminated.

CompositeView

An extension of the audio view, that syncs with a visual view.

jmidisequencer's People

Contributors

sebastianruizva avatar josephmannis avatar

Watchers

James Cloos avatar ТzM avatar

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.