- CLI
- Updated the default command (
m8
) to now print an M8 file (also shows up as the 'view' command) (Issue #5)
- Updated the default command (
- API
- Added
lib/types/M8File
for all M8 types that correspond to an M8 file - Added
lib/types/Serializable
for all M8 types that should support importing/exporting to supported non-byte formats (and other formats) - All classes now have their own file
- All internal types, (not associated with an M8 file type) have been put into
lib/types/internal
- All instrument types have been moved to
lib/types/instruments
- All internal types, (not associated with an M8 file type) have been put into
- Cleaned up code for consistency
- Converted the RGB values for each
Theme
color to be an actual type (lib/types/internal/RGB
) - Refactored all instrument types:
env
has been renamed toenvelopes
lfo
has been renamed tolfos
tableData
has been renamed totable
- Refactored
SongStep.tracks{1-8}
to beSongStep.tracks[8]
- Refactored
TableStep.fx{1-3}
to beTableStep.fx[3]
- Refactored instruments:
- Removed
lib/types/Instrument
and moved eachInstrument
type into its own file inlib/types/instruments
- Renamed
env
toenvelopes
- Renamed
lfo
tolfos
- Renamed
tableData
totable
- Removed
- Refactored
lib/types/internal/FX
:commandToStr
now takes an instrument instead of its kind
- Refactored
lib/types/internal/MIDIMapping
:typeToChar
is nowtypeToStr
- Removed dependence upon
Buffer
and all APIs taking/returning aBuffer
now take/return anArray<Number>
- Removed
lib/types/M8FileWriter.js
(no longer provided value) - Updated all types to support JSON import/export (
asObject
andfromObject
)
- Added
- CLI
- Added
export
andimport
commands to export to JSON and import from JSON (Issue #4) - Fix alignment for
project mixer
- Refactored the CLI into smaller, per-command files instead of one guargantuan file
- Updated
project midi-mapping
to print the actualDEST
values
- Added
- API
- Added helper methods to
index.js
for reading M8 files/typesloadInstrument
loadScale
loadSong
loadTable
loadTheme
- Added helper methods to
index.js
for writing M8 files/typesdumpInstrument
(Can be called with theM8FileReader
used to read theInstrument
to use the original values for skipped/unused bytes)dumpScale
dumpSong
(Can be called with theM8FileReader
used to read theSong
to use the original values for skipped/unused bytes)dumpTheme
- Added support for reading table data from an
Instrument
file - Added
M8FileWriter
tolib/types/
- Moved
M8FileReader
fromindex.js
tolib/types/
- Moved all classes from
lib/types.js
tolib/types/
into their own fileslib/types/Chain.js
lib/types/FX.js
lib/types/Groove.js
lib/types/Instrument.js
lib/types/M8FileReader.js
lib/types/M8Version.js
lib/types/Phrase.js
lib/types/Scale.js
lib/types/Song.js
lib/types/Table.js
lib/types/Theme.js
- Moved logic for sanitizing a
Sampler
instrument's path fromlib/cli.js
tolib/types/Instrument.SamplerParameters#samplePathToStr
- Replaced
readUInt8
withread
forlib/types/M8FileReader.js
- Updated
lib/types/Instrument.js
to exports instrument-specific typesFMSynth
Macrosynth
MIDIOut
None
Sampler
Wavsynth
- Updated
loadM8File
to useM8FileReader
instead of a file path - Updated all class constructors to initialize themselves using the default values M8 would use
- Updated
Song
to default to the appropriateScale
objects - Updated the
M8FileReader
constructor to use aBuffer
instead of a file path - Various refactorings that are too numerous to mention
- Added helper methods to
- CLI
- Added
instrument table
command - Added
instrument version
command - Added
scale version
command - Added
song phrase-at
command (same assong phrase
but it finds the phrase based on track/chain location so that it can resolve the "previous instrument" for commands) - Added
theme version
command - Fixed column alignment for
instrument view
andsong instrument
commands for emptyFMSYNTH
operators - Fixed column alignment for
project effects
command - Fixed column alignment for
song table
command - Fixed issue where booleans were being used for transports in
project midi-settings
- Fixed issue where columns were missing for
song groove
- Fixed issue where printing a
MIDI OUT
instrument would printBANK:PG
empty values - Fixed issue where printing FX commands fails when relying on knowing the last instrument
- Fixed issue where the
--starting-row
option was printed by mistake forproject midi-mapping
- Added
- API
- Renamed
getWaveStr
inFMSynthParameters
togetOscShapeStr
- Renamed
- CLI
- Added preview support for
theme view
- Added support for M8 firmwares
2.7.0
through2.7.6
(2.7.6
is the latest releast at this time, newer versions will work assuming no breaking changes)
- Added preview support for
- Added
scale view
to the CLI - Added
song instrument
to the CLI - Added
theme view
to the CLI - Added
Theme
support to the API - Added
Theme
support to the CLI - Renamed
project details
toproject view
in the CLI - Removed
instrument table
from the CLI - Updated
instrument envelope
andinstrument view
to work with M8 Instrument files
- Initial code drop that provides all known M8 views via the CLI and initial API representation