Giter Club home page Giter Club logo

Comments (3)

tdhsmith avatar tdhsmith commented on September 24, 2024 1

Resolution only expresses how many ticks there are per beat (it's called "resolution" because it determines how many samples the MIDI signal communicates for every beat). It does not have a bearing on the relation between time and meter.

Calculating from 60bpm:

60 bpm = 1 beat per second = 1000000 microseconds per beat

Tempo events are expressed in microseconds, so your event should have a value of 1 million. But the data array uses 8-bit words, so this number gets split up by powers of 256:

1000000 = (15 * 256^2) + (66 * 256) + (64) = [15, 66, 64]

But you don't actually have to worry about this form if you don't want. The SetTempoEvent class has helpers for using BPM & microseconds-per-quarter-note: get_bpm, set_bpm, get_mpqn, & set_mqpn.

from python-midi.

semininja avatar semininja commented on September 24, 2024

get_mpqn is handy. Why not make the data values hex, though, so that you can just concatenate and convert?

Also, thanks for the quick response.

from python-midi.

tdhsmith avatar tdhsmith commented on September 24, 2024

I can't speak for @vishnubob, but I think the point is that the data array should always try to parallel the MIDI's binary data (and Python handles hexadecimal as strings, so that would be a lot of conversion work). Getters and setters should be the primary method of interacting with the values.

Also, among the non-varlen events, nearly all of them have word-width data fields that are naturally interpreted as integers. The tempo event might be the only exception. So defaulting to 8-bit ints is pretty sensible in most cases.

from python-midi.

Related Issues (20)

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.