clydeshaffer / mozak Goto Github PK
View Code? Open in Web Editor NEWa music composer for DOS computers
License: MIT License
a music composer for DOS computers
License: MIT License
V to Visual select
Y to Yank
P to Put
(like vim basically)
In keyb.c prolly
really just add a struct for song-wide options, like tempo, time sig, etc...
then add this to save_song and load_song
(this will invalidate existing files)
hold shift + press enter to start song from beginning, normal enter press starts song from scroll_beat
so shift determines whether scroll_beat and cursor_beat are set to ZERO or just set cursor_beat = scroll_beat
check if shift_held and move by octave (+/- 12 notes) instead of single note
and move save_song(), load_song() into it as well as functions to simplify forward playback in the context of a game engine, so song.h (and .c) can be imported to a game engine to play Mozak tracks in the game
add a QUITCONFIRM_MODE that waits for either the Y or N key
render_quitconfirm() should just draw a box/window in the middle of the screen with the text
SAVE FILENAME.MZ? (Y/N)
18.2/s is NOT musical granularity
maybe see about making the first byte of the note struct "instrument_change", then adding whatever padding is needed to make instrument settings fit into the rest of sizeof(note)
simple to account for this in forward playback, but in compose mode the editor will have to scan for the more recent instrument change prior to cursor_beat whenever the cursor is moved
-add duration to rendering of notes in render_piano roll
-take duration into account when playing notes (array of 10 ints counting down steps until Key_Off per channel)
it sure would be something.
i guess it could work by grabbing mouse.h/.c from BMPEDIT and using it to move the compose mode cursor, though i'd want to make render_piano_roll more efficient (or at least make a version that redraws the cursor while leaving everything else in place)
enable switching the relevant channels into percussion mode, however that works
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.