🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

midi-segmentizer

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

midi-segmentizer - npm Package Compare versions

Comparing version
2.1.1-3
to
2.2.0
+18
-0
dist/segmentizer.js

@@ -28,2 +28,3 @@ "use strict";

const uuid_1 = require("uuid");
const _1 = require(".");
const helpers_1 = require("./helpers");

@@ -300,5 +301,22 @@ const midi_1 = __importDefault(require("./midi"));

}
function handleLucky() {
const segments = (0, _1.segmentizeMidi)(props.data);
if (!segments) {
alert("Midi file isn't simple enough to auto-segment...");
return;
}
setNotes([]);
setSegments(segments.map((segment) => ({
id: (0, uuid_1.v4)(),
color: getRandomColor(),
offset: segment.offset,
notes: segment.notes
.map((note) => (Object.assign(Object.assign({}, note), { offset: segment.offset })))
.map(buildNote),
})));
}
return (react_1.default.createElement("div", null,
react_1.default.createElement("div", { style: { position: "fixed" } },
react_1.default.createElement("button", { onClick: handleSaveSegment }, "make segment"),
react_1.default.createElement("button", { onClick: handleLucky }, "i'm feeling lucky"),
react_1.default.createElement("button", { disabled: !segments.length, onClick: handleSave }, "save segments")),

@@ -305,0 +323,0 @@ react_1.default.createElement("canvas", { onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, id: "react-midiVisualizer-canvas", ref: ref, height: height, width: width }),

+1
-1
{
"name": "midi-segmentizer",
"version": "2.1.1-3",
"version": "2.2.0",
"description": "break a simple midi file into monophonic segments",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

# midi-segmentizer
- break a midi file into monophonic segments
- assume constant tempo and time signature for MVP
React Component and/or helper functions to help you segment a piece of midi.
# todo
- this repo used to be somewhat coherent but now it's a bit all over the place... think about high level organization more
- determine output => experiement with midi, musicXML...
- make PR for midiconvert types - controlChanges should be on Track type... MIDI type...
- write tests to prevent files with tempo changes and mixed meter

@@ -12,0 +10,0 @@ idea:

import React, { useEffect, useRef, useState } from "react";
import { v4 as uuidv4 } from "uuid";
import { Note, Segment } from ".";
import { Note, Segment, segmentizeMidi } from ".";
import {

@@ -374,2 +374,24 @@ base64ToArrayBuffer,

function handleLucky() {
const segments = segmentizeMidi(props.data);
if (!segments) {
alert("Midi file isn't simple enough to auto-segment...");
return;
}
setNotes([]);
setSegments(
segments.map((segment) => ({
id: uuidv4(),
color: getRandomColor(),
offset: segment.offset,
notes: segment.notes
.map((note) => ({
...note,
offset: segment.offset,
}))
.map(buildNote),
}))
);
}
return (

@@ -379,2 +401,3 @@ <div>

<button onClick={handleSaveSegment}>make segment</button>
<button onClick={handleLucky}>i'm feeling lucky</button>
<button disabled={!segments.length} onClick={handleSave}>

@@ -381,0 +404,0 @@ save segments