{"id":18132068,"url":"https://github.com/cemolcay/miditimetableview","last_synced_at":"2025-04-15T23:12:11.434Z","repository":{"id":37692648,"uuid":"106940855","full_name":"cemolcay/MIDITimeTableView","owner":"cemolcay","description":"Customisable and editable time table grid for showing midi or audio related data with a measure.","archived":false,"fork":false,"pushed_at":"2019-07-29T12:00:03.000Z","size":1970,"stargazers_count":126,"open_issues_count":1,"forks_count":18,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-15T23:11:38.525Z","etag":null,"topics":["grid","ios","midi","timetable"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cemolcay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-14T15:52:06.000Z","updated_at":"2024-11-07T01:15:29.000Z","dependencies_parsed_at":"2022-09-15T11:21:49.033Z","dependency_job_id":null,"html_url":"https://github.com/cemolcay/MIDITimeTableView","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cemolcay%2FMIDITimeTableView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cemolcay%2FMIDITimeTableView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cemolcay%2FMIDITimeTableView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cemolcay%2FMIDITimeTableView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cemolcay","download_url":"https://codeload.github.com/cemolcay/MIDITimeTableView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167448,"owners_count":21223506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grid","ios","midi","timetable"],"created_at":"2024-11-01T12:10:15.835Z","updated_at":"2025-04-15T23:12:11.410Z","avatar_url":"https://github.com/cemolcay.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"MIDITimeTableView\n===\n \nCustomisable and editable time table grid for showing midi or audio related data with a measure.\n\nDemo\n----\n\n![alt tag](https://github.com/cemolcay/MIDITimeTableView/raw/master/demo.gif)\n\nRequirements\n----\n\n- Swift 5.0+\n- iOS 9.0+\n\nInstall\n----\n\n```\npod 'MIDITimeTableView'\n```\n\nFeatures\n----\n\n* Easy to implement, Delegate/DataSource API similar to `UITableView` and `UICollectionView`.\n* Unlimited rows and cells.\n* Cells and Row Headers are fully customisable. You can show any UIView inside them.\n* Shows bar measure (optional).\n* Shows editable playhead that shows current time (optional).\n* Pinch to zoom in/out. (optional).\n* Edit single cell or multiple cells.\n* Drag them around to change row or position.\n* Drag them from right edge to change duration.\n* Long press any cell to show customisable menu.\n* Holds history with a customisable limit and make undo/redo (optional).\n* Customise grid and show bar, beat and subbeat lines with any style (optional).\n\n\nUsage\n----\n\nCreate a `MIDITimeTableView` either programmatically or from storyboard and implement its `MIDITimeTableViewDataSource` and `MIDITimeTableViewDelegate` methods.\n  \nYou need a data object to store each row and its cells data.\n\n``` swift\nvar rowData: [MIDITimeTableRowData] = [\n  MIDITimeTableRowData(\n    cells: [\n      MIDITimeTableCellData(data: \"C7\", position: 0, duration: 4),\n      MIDITimeTableCellData(data: \"Dm7\", position: 4, duration: 4),\n      MIDITimeTableCellData(data: \"G7b5\", position: 8, duration: 4),\n      MIDITimeTableCellData(data: \"C7\", position: 12, duration: 4),\n    ],\n    headerCellView: HeaderCellView(title: \"Chords\"),\n    cellView: { cellData in\n      let title = cellData.data as? String ?? \"\"\n      return CellView(title: title)\n    }),\n]\n```\n\n`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.\n\n``` swift\nfunc numberOfRows(in midiTimeTableView: MIDITimeTableView) -\u003e Int {\n  return rowData.count\n}\n\nfunc timeSignature(of midiTimeTableView: MIDITimeTableView) -\u003e MIDITimeTableTimeSignature {\n  return MIDITimeTableTimeSignature(beats: 4, noteValue: .quarter)\n}\n\nfunc midiTimeTableView(_ midiTimeTableView: MIDITimeTableView, rowAt index: Int) -\u003e MIDITimeTableRowData {\n  let row = rowData[index]\n  return row\n}\n```\n  \nYou can customise the measure bar, the grid, each header and data cell. Check out the example project.\n\n`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.\n  \nYou can set the `minMeasureWidth` and `maxMeasureWidth` to set zoom levels of the time table.\n\nDocumentation\n----\n\n[Full documentation are here.](http://cemolcay.github.io/MIDITimeTableView)\n\nAppStore\n----\n\nThis library used in my app [ChordBud](https://itunes.apple.com/us/app/chordbud-chord-progressions/id1313017378?mt=8), check it out!\n  \n[![alt tag](https://linkmaker.itunes.apple.com/assets/shared/badges/en-us/appstore-lrg.svg)](https://itunes.apple.com/us/app/chordbud-chord-progressions/id1313017378?mt=8)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcemolcay%2Fmiditimetableview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcemolcay%2Fmiditimetableview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcemolcay%2Fmiditimetableview/lists"}