-
Notifications
You must be signed in to change notification settings - Fork 42
Python script to "play" a *.SMF/*.mid file on a 3-axis CNC machine
License
michthom/MIDI-to-CNC
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
THIS PROGRAM COMES WITH NO WARRANTY PLEASE KEEP AN EYE ON YOUR MACHINE AS THE GENERATED CODE MAY BRING YOUR BUILD PLATFORM OFF LIMITS usage: mid2cnc.py [-h] [-infile [INFILE]] [-channels N [N ...]] [-outfile [OUTFILE]] [-machine {cupcake,custom,shapercube,thingomatic,ultimaker}] [-units {imperial,metric}] [-ppu XXX.XX YYY.YY ZZZ.ZZ] [-safemin XXX.XX YYY.YY ZZZ.ZZ] [-safemax XXX.XX YYY.YY ZZZ.ZZ] [-prefix [PRE_FILE]] [-postfix [POST_FILE]] [-axes XYZ] [-verbose] [-transpose Nx Ny Nz] Utility to process a Standard MIDI File (*.SMF/*.mid) to "play" it on up to 3 axes of a CNC machine. optional arguments: -h, --help show this help message and exit Input settings: -infile [INFILE], --infile [INFILE] the input MIDI filename (default: ./input.mid) -channels N [N ...], --channels N [N ...] list of MIDI channels you want to scan for event data (default: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) -outfile [OUTFILE], --outfile [OUTFILE] the output Gcode filename (default: ./output.gcode) Machine settings: -machine {cupcake,custom,shapercube,thingomatic,ultimaker}, --machine {cupcake,custom,shapercube,thingomatic,ultimaker} sets everything up appropriately for predefined machines, or flags use of custom settings. (default: cupcake) Customised settings: -units {imperial,metric}, --units {imperial,metric} set the measurement and feed rate units to your preferred scheme. (default: metric) -ppu XXX.XX YYY.YY ZZZ.ZZ, --ppu XXX.XX YYY.YY ZZZ.ZZ set arbitrary pulses-per-unit (ppu) for each of the X, Y and Z axes (default: None) -safemin XXX.XX YYY.YY ZZZ.ZZ, --safemin XXX.XX YYY.YY ZZZ.ZZ set minimum edge of the safe envelope for each of the X, Y and Z axes (default: None) -safemax XXX.XX YYY.YY ZZZ.ZZ, --safemax XXX.XX YYY.YY ZZZ.ZZ set maximum edge of the safe envelope for each of the X, Y and Z axes (default: None) -prefix [PRE_FILE], --prefix [PRE_FILE] A file containing Gcode to set your machine to a known state before the MIDI is played e.g. homing the axes if supported or required. (default: None) -postfix [POST_FILE], --postfix [POST_FILE] A file containing Gcode to return your machine to a known state after the MIDI is played e.g. homing the axes if supported or required. (default: None) Output settings: -axes XYZ, --axes XYZ ordered list of the axes you wish to "play" the MIDI data on. e.g. "X", "ZY", "YZX" (default: XYZ) -transpose Nx Ny Nz, --transpose Nx Ny Nz Transposes each axis N keys up/down the scale, e.g. 12 0 0 will raise the X axis one octave. -verbose, --verbose print verbose output to the terminal (default: False) Midiparser.py is old and cludgy and fail to process some files. You may want to use python-midi by just providing -pymidi option, but then you would need to install it manually from https://github.com/vishnubob/python-midi, ================================================================= Please join our Mailinglist at: http://groups.google.com/group/makerbotmusic and post your working tunes to the MakerBot Wiki: http://wiki.makerbot.com/makerbot-music ================================================================= Have fun and set all axes to MUSICCCCC!
About
Python script to "play" a *.SMF/*.mid file on a 3-axis CNC machine
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published