All Projects → cemolcay → Miditimetableview

cemolcay / Miditimetableview

Licence: mit
Customisable and editable time table grid for showing midi or audio related data with a measure.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Miditimetableview

Gridlex
Just a CSS Flexbox Grid System
Stars: ✭ 1,328 (+1176.92%)
Mutual labels:  grid
Aurelia Slickgrid
Aurelia-Slickgrid a wrapper of the lightning fast & customizable SlickGrid datagrid with a few Styling Themes
Stars: ✭ 100 (-3.85%)
Mutual labels:  grid
Grid
The Guardian’s image management system
Stars: ✭ 1,380 (+1226.92%)
Mutual labels:  grid
React Native Flexbox Grid
Responsive Grid for React Native
Stars: ✭ 95 (-8.65%)
Mutual labels:  grid
React Sortable Hoc
A set of higher-order components to turn any list into an animated, accessible and touch-friendly sortable list✌️
Stars: ✭ 9,747 (+9272.12%)
Mutual labels:  grid
Reflexbox
Moved to https://rebassjs.org
Stars: ✭ 1,369 (+1216.35%)
Mutual labels:  grid
Ungrid
ungrid - the simplest responsive css grid
Stars: ✭ 1,292 (+1142.31%)
Mutual labels:  grid
Miti
miti is a musical instrument textual interface. Basically, its MIDI, but with human-readable text. 🎵
Stars: ✭ 103 (-0.96%)
Mutual labels:  midi
Muuri
Infinite responsive, sortable, filterable and draggable layouts
Stars: ✭ 9,797 (+9320.19%)
Mutual labels:  grid
Drag select grid view
A grid that supports both dragging and tapping to select its items.
Stars: ✭ 100 (-3.85%)
Mutual labels:  grid
React Photo Layout Editor
Photo layout editor for react
Stars: ✭ 96 (-7.69%)
Mutual labels:  grid
Griz
Grid library for React; Rescue the cat
Stars: ✭ 99 (-4.81%)
Mutual labels:  grid
Re Jok
A React UI Component library built with styled-components
Stars: ✭ 102 (-1.92%)
Mutual labels:  grid
Hellodrum Arduino Library
This is a library for making E-Drum with arduino.
Stars: ✭ 95 (-8.65%)
Mutual labels:  midi
Midi2voice
Singing synthesis from MIDI file
Stars: ✭ 102 (-1.92%)
Mutual labels:  midi
Ble Midi For Android
MIDI over Bluetooth LE driver for Android 4.3 or later
Stars: ✭ 90 (-13.46%)
Mutual labels:  midi
Angular Generic Table
A generic table for Angular 2+. Generic table uses standard markup for tables ie. table, tr and td elements etc. and has support for expanding rows, global search, filters, sorting, pagination, export to CSV, column clicks, custom column rendering, custom export values.
Stars: ✭ 100 (-3.85%)
Mutual labels:  grid
Framy Css
Very simple CSS Framework
Stars: ✭ 103 (-0.96%)
Mutual labels:  grid
Ax5ui Grid
Javascript UI Component - GRID ( Excel Grid, jqGrid, angularjs grid, jquery grid, SlickGrid, ag-grid gridify)
Stars: ✭ 102 (-1.92%)
Mutual labels:  grid
Webmidikit
Simplest MIDI Swift library
Stars: ✭ 100 (-3.85%)
Mutual labels:  midi

MIDITimeTableView

Customisable and editable time table grid for showing midi or audio related data with a measure.

Demo

alt tag

Requirements

  • Swift 5.0+
  • iOS 9.0+

Install

pod 'MIDITimeTableView'

Features

  • Easy to implement, Delegate/DataSource API similar to UITableView and UICollectionView.
  • Unlimited rows and cells.
  • Cells and Row Headers are fully customisable. You can show any UIView inside them.
  • Shows bar measure (optional).
  • Shows editable playhead that shows current time (optional).
  • Pinch to zoom in/out. (optional).
  • Edit single cell or multiple cells.
  • Drag them around to change row or position.
  • Drag them from right edge to change duration.
  • Long press any cell to show customisable menu.
  • Holds history with a customisable limit and make undo/redo (optional).
  • Customise grid and show bar, beat and subbeat lines with any style (optional).

Usage

Create a MIDITimeTableView either programmatically or from storyboard and implement its MIDITimeTableViewDataSource and MIDITimeTableViewDelegate methods.

You need a data object to store each row and its cells data.

var rowData: [MIDITimeTableRowData] = [
  MIDITimeTableRowData(
    cells: [
      MIDITimeTableCellData(data: "C7", position: 0, duration: 4),
      MIDITimeTableCellData(data: "Dm7", position: 4, duration: 4),
      MIDITimeTableCellData(data: "G7b5", position: 8, duration: 4),
      MIDITimeTableCellData(data: "C7", position: 12, duration: 4),
    ],
    headerCellView: HeaderCellView(title: "Chords"),
    cellView: { cellData in
      let title = cellData.data as? String ?? ""
      return CellView(title: title)
    }),
]

MIDITimeTableViewDataSource is very likely to UITableViewDataSource or UICollectionViewDataSource API. Just feed the row data, number of rows, time signature and you are ready to go.

func numberOfRows(in midiTimeTableView: MIDITimeTableView) -> Int {
  return rowData.count
}

func timeSignature(of midiTimeTableView: MIDITimeTableView) -> MIDITimeTableTimeSignature {
  return MIDITimeTableTimeSignature(beats: 4, noteValue: .quarter)
}

func midiTimeTableView(_ midiTimeTableView: MIDITimeTableView, rowAt index: Int) -> MIDITimeTableRowData {
  let row = rowData[index]
  return row
}

You can customise the measure bar, the grid, each header and data cell. Check out the example project.

MIDITimeTableCellView's are editable, you can move around them on the grid, resize their duration or long press to open a delete menu. Also, you need to subclass yourself to present your own data on it.

You can set the minMeasureWidth and maxMeasureWidth to set zoom levels of the time table.

Documentation

Full documentation are here.

AppStore

This library used in my app ChordBud, check it out!

alt tag

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].