If you can change it easily then it isn't really important which is the default, although in my opinion the MML style should be default since some people (including myself) may have used ppMCK to write music (while LilyPond is mainly for sheet music instead).tepples wrote:I'm supporting both behaviors in Pently's music compiler tool, selected with the command durations temporary or durations stick. But I wonder which to make the default.
Code: Select all
# Twinkle test # by Damian Yerrick durations stick notenames english # Drum kit ######################## sfx noisekick on noise pitch 10 0 volume 10 10 8 6 4 3 2 1 sfx trikick on triangle pitch e' c' a f# e volume 15 15 15 2 2 sfx closedhihat on noise pitch 12 timbre | 0 1 volume 5 3 2 1 1 sfx openhihat on noise pitch 12 timbre | 0 1 volume 6 5 4 4 3 3 3 2 2 2 1 1 1 1 1 drum kick noisekick drum tkick noisekick trikick drum clhat closedhihat # Instruments ###################### instrument fiddle timbre 1 volume 3 6 7 6 6 5 detached instrument bass # twinkle ###################### song twinkle time 6/8 scale 8 pattern melody with fiddle on pulse2 orelative c'4. c g g a a g2. f4. f e e d d c2. g4. g f f e e d2. g4. g f f e e d2. pattern bassline with bass on triangle orelative c' g e g f c e c d f c e g b, c' g e g d f c e g d e g d f c e g g, pattern bassfinal with bass on triangle c'2. pattern beat kick4. clhat kick clhat4 clhat8 at 1 tempo 90 play melody play beat play bassline at 23 tempo 75 at 24 tempo 60 play bassfinal at 24:2 stop drum at 25 fine
- (1.8 KiB) Downloaded 371 times
No significant changes to the player itself, just the tools around it:
- Experimental music preprocessor with syntax inspired by MML and LilyPond
- Ported all data conversion tools to Python 3
- NES shell: Hold Select to speed up by factor of 4
- (70.09 KiB) Downloaded 375 times
- Custom frame rates are used only for tempo processing, not for envelope processing.
- The first VRC6, MMC5, or Sunsoft 5B channel is mapped to the attack track.
- The noise and DPCM channels are ignored entirely.
- The volume column is ignored.
- Recognized effects include arpeggio (0xx -> ENxx), portamento to target pitch (3xx -> legato on/off), grace note wait before row (Gxx), grace note before rest (Sxx), pattern break (D00), note slide (Qxy or Rxy), song end (C00 -> fine), pattern jump (Bxx -> segno and dal segno), speed (Fxx), and tempo (Fxx). Others are ignored.
- Portamento to target pitch is reinterpreted as legato when nonzero (301 through 3FF) and not-legato when zero (300).
- Note slide (Qxy or Rxy) is treated as a slide to a legato note y semitones up or down one row later.
- Pattern break (Dxx) is always assumed to jump to row 00.
- It is not recommended to include a lot of tempo/speed changes in a single pattern, as each will expand to a setTempo in the conductor track.
And how would I go about figuring out the time signature in order to set the scale (whether a row means an eighth, sixteenth, or thirty-second note) and calculate measure numbers for at commands?
And is there demand for a way to assemble an NSF or NES program without having to have ca65 and ld65 installed?
Is there no volume control in Pently??volume column is ignored
Yes.Should I treat each pitch at which a drum instrument is played as a separate drum?
Ask the user to enter input, or command line argumentAnd how would I go about figuring out the time signature
I'm fine with ca65, but it might limit the # of users.And is there demand for a way to assemble an NSF or NES program without having to have ca65 and ld65 installed?
Volume envelopes work; just not the volume column.dougeff wrote:Is there no volume control in Pently??volume column is ignored
Hopefully that doesn't run into the 25 drum limit for too many projects.Yes.Should I treat each pitch at which a drum instrument is played as a separate drum?
The key signature (which controls choice of say D# vs. Eb), time signature, and scale may change from song to song or even during a song. The user may end up having to create a skeleton conductor track.
First of all I probably could of use any of the other freely usable solutions, but I like the conductor/pattern structure of the music as explained, and I also liked the general style of music so far composed so far.
For the functions that use fixed zero page locations (such as "snddatalo = 0" in pently_start_sound) I often assign them to a relocatable label called temp. Witch would be better to require? A 5 byte variable import or externally reserving specifically zero page 0 through 4?
pently_resume_music and pently_stop_music were not found with the linker.
I know this is not the case with every music engine (except maybe nerdtracker2), but i wonder if it's even possible to design the music data to be relocate without having to recompile the network of address pointers. I also wonder if it's easy to construct and play a pattern from RAM, so that there could be an option for the user to create and save some of her own music.
I have externally reserved $0000-$000F in all my own projects, starting the ZP segment at $0010. But the next release will allow temporary ZP to be relocated.43110 wrote:For the functions that use fixed zero page locations (such as "snddatalo = 0" in pently_start_sound) I often assign them to a relocatable label called temp. Witch would be better to require? A 5 byte variable import or externally reserving specifically zero page 0 through 4?
My bad. This will be corrected in the next release. Until I push it out, go down to line 156 or so and change .proc resume_music and .proc stop_music to have the prefixed names.pently_resume_music and pently_stop_music were not found with the linker.
In NT2, all offsets are ultimately relative to the start of a song, and songs cannot share instruments or patterns. I don't know how instrument or pattern sharing is possible with that sort of relocation.I know this is not the case with every music engine (except maybe nerdtracker2), but i wonder if it's even possible to design the music data to be relocate without having to recompile the network of address pointers.
The Sound Effects Editor included in Double Action 53 uses a subset of Pently 0.04 configured to store sound effects' envelope data in RAM. If you want to make something larger in scope, you could set it up such the tables are at fixed positions in WRAM ($6000-$7FFF).I also wonder if it's easy to construct and play a pattern from RAM, so that there could be an option for the user to create and save some of her own music.
- Corrected namespacing of pently_stop_music and pently_resume_music (reported by 43110)
- Allows relocating temporary zero page space (requested by 43110)
- pentlyas.py: Refactored without "god object"
- pentlyas.py: Changed syntax for arpeggio effect; the original was based on a misreading of MCK Beginner's Guide
- pentlyas.py: Optimizes out data of combined envelopes (instrument attacks and sound effects) that are a subsequence of a longer one. This improves handling of the "latebanjo" and "bf98flute2" instruments in the example songs.
- (75.65 KiB) Downloaded 336 times
Other than the obvious conversion from FamiTracker's text export, what other conversion source formats are expected?In [url=http://forums.nesdev.com/viewtopic.php?p=163455#p163455]this post[/url], Kasumi wrote:They might say, "I need you to type up every single note/rest in a file in this format." And then you have to do it if that's how their game works and you want to make music for it. Or write your own program to make that easier for yourself. Or make them write a program to make it easier for you.
Here's a formula to estimate the ROM size of a Pently project:Kasumi wrote:Different engines/converters might make the same song wildly different filesizes, so there's no answer to how big the song could/should be.
- Engine: about 1.5 KiB
- Sound effect: 4 bytes plus 2 bytes for each frame in the envelope
- Drum: 2 bytes each
- Instrument: 3 bytes plus 2 bytes for each frame in the envelope
- Song: 4 bytes, plus 2 bytes for each tempo change, plus 4 bytes for each play or stop command
- Pattern: 3 bytes, plus 1 for each note or rest, plus additional bytes for notes with oddball tied durations, plus 2 for each range shift (if the range is wider than 24 semitones), plus 2 for each legato (HOPO) sequence, plus 2 for each instrument change, plus 2 for each arpeggio change
I might be composing a soundtrack for a game using Pently, and as a someone who's been a Famitracker user for 6 years, a plethora of different questions pop up even when trying to come up with ideas for music. Can I do X or Y, or Z? What is the Famitracker equivalent to drums in Pently? Even having read the manual and a number of different posts, it's still a bit of a mess in my head, and at this point it might be worth learning how to use the engine as intended with the text/MML-style sort of thing. From what I can tell it's not too much different from making music with an assembly source by using labels, constants and whatever, but even if I end up going that route I'd say it's worth making a guide for people who want to go strictly with Famitracker because if someone is hired to make music in Famitracker, they need to have the rules explained to them thoroughly.
Not until I actually make the converter. I haven't had much of a chance to do so for two reasons: my recent illness and my having been hired to work on another NES game. Until then, please follow the guidelines described above at "Here are the compromises that I had planned to make" to see which envelopes and effects are most likely to end up ignored. Vibrato is ignored, and portamento-type effects become legato notes.za909 wrote:Is it possible to create a comprehensive guide that tells what can and cannot be when someone is composing music for Pently in Famitracker?
I apologize for the inconvenience, but paid projects, housework, my finances, and personal physical fitness take precedence over free projects, and I have not yet been hired to work on Pently. I had planned to incorporate Pently into my previous paid project, but the boss instead ended up going with a different playback engine because the project's composer found the "vibrato is ignored" and "portamento-type effects become legato notes" limits unacceptable.
I plan to associate each combination of a noise pitch and noise instrument with a separate drum. If there are more than 25 such combinations, I plan to make conversion fail with an error message whose wording I have not yet made final.What is the Famitracker equivalent to drums in Pently?