Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: catastropher on May 18, 2014, 02:06:54 pm
-
As a lover of music, programming, and calculators, I'm always looking for ways to combine the three! Though I've wanted to do this forever, last week I finally decided to get to work on a program which allows you to enter notes in music notation, and play them back through the linkport! Currently, you can only enter quarter, eighth, and sixteenth notes, but it renders them using proper stem direction, note grouping, and ligature marks (the lines that connect eighth and sixteenth notes). Oh, and beats line up! Here are some screenshots of score in action (the inverted portion is where the cursor is):
(http://img.ourl.ca/score1.png)
(http://img.ourl.ca/score2.png)
(http://img.ourl.ca/score3.png)
Of course, I still have a lot of work to do, but I'm happy with how it's turned out so far. Right now, I need to fix the stem length for sixteenth notes, since the ligature marks can make the stem look too short (for example, second screenshot, first group of sixteenth notes, last note). Also, I need to add thirty-second notes and rests. And music playback is an eventual goal, which will use Ben Ryves's sound routines for 4-channel sound. But it's not bad for a start! :)
Now, I have a question for music-savvy people. In the first screenshot, the first two eighth notes are connected by a ligature mark to the following four sixteenth notes. Is this correct, or should they be separated?
-
This is looking awesome!
Was it made with assembly?
-
Now, I have a question for music-savvy people. In the first screenshot, the first two eighth notes are connected by a ligature mark to the following four sixteenth notes. Is this correct, or should they be separated?
They should be separated, assuming this is x/4 time, where x is anything.
-
This is looking awesome!
Was it made with assembly?
Thank you so much! :) Right now, it's written in C and compiled with tisdcc, but I'll probably hand-optimize the time-critical parts in assembly once I have everything working. I'd write it all in assembly, but I'm guessing that this will turn into a very large project. I may have to turn it into an app because I'll need enough RAM to hold the note data and the song data.
They should be separated, assuming this is x/4 time, where x is anything.
Thanks for the help! :) I'll have to modify the renderer to group them properly. So my guess is that they are grouped based on what beat they're on? I'll have to do some research into how grouping is done in irregular time signatures.
-
No, they're grouped based on what gets the beat. 6/8 is groups over the duration of 3 eighth notes, 4/4 over 2, etc.
-
OH, nice, a program in C! Haven't seen one yet :P
-
GlaßOS is in C. :P
-
I thought it was asm O.O
-
Nope, the author says he's not good enough for asm.
-
There's also Ti-Lib (http://www.yaronet.com/posts.php?s=158510) that deeph was working on, which includes a "C-ified" version of GBA lib (http://www.ticalc.org/archives/files/fileinfo/394/39478.html). You can see some examples of early versions of the library here (http://www.yaronet.com/posts.php?sl=0&s=138500&p=1&h=11#11).
And i thought that the first two 8th notes shouldn't have been connected to the 16th notes, but i wasn't sure. Either way it looks really great. How long does it take to render things? I imagine there are a lot of calculations and things going on behind the scenes... Great work so far :)
-
Dude, you are exactly like me. I love composing/playing music, calculators, and programming. Need any help with this project?
-
Yeah, another oncalc music editor :D
I was planning to add this layout to AudaciTI for musicians but only during holidays -.-
Anyway, good luck with your project :)