Comments (3)
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.
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.
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)
- Marker
- Meta
- Handling Marker Events
- Appending an event with a tick less than the last one in absolute mode results in invalid tick
- package installation issue HOT 7
- MIDI Events
- make_ticks_rel is broken
- Python2 Errors HOT 1
- The 'midi==0.2.3' distribution was not found and is required by the application
- SetTempoEvent to 120 bpm doesn't seem to align with my metronome or in my music software
- Does python-midi still work?
- The loss of generator is always negative. HOT 1
- Can't install the package in anaconda HOT 4
- Is this repo still being maintained? HOT 1
- I made it available for Windows and Python 3 HOT 11
- pip3 package doesn't work HOT 2
- Installation issue HOT 7
- Do you have a python version HOT 1
- where can i find the ref doc
- Ubuntu Studio 23.10 - Mary.mid example fails HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-midi.