Frames: A nomenclature discussion

You can talk about almost anything that you want to on this board.

Moderator: Moderators

tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Frames: A nomenclature discussion

Post by tepples »

I propose these:

Music

Video field: A cycle of a 60.1 Hz or 50.0 Hz* time base
CD sector: A cycle of a 75 Hz time base
Jiffy: A cycle of a multitasking operating system's process scheduler time base, from 1 to 10 ms
Tick: One update of a music engine, which may be synchronized to video fields, CD sectors, or another time base on the order 20-200 Hz
Row: A cycle of the smallest significant rhythmic time base in a piece of music, consisting of a small (usually 2-15) whole or rational number of ticks. Also called tatum.
Groove: A repeating sequence of row lengths measured in ticks, used for rational or swung tempo
Pattern: A sequence of notes that can be repeated
Order table element: The use of a pattern at a given time in a piece

Graphics

Tile: An 8x8 or 8x16 pixel* image
Metatile: A small set of tiles to be displayed together in a grid shape next to other metatiles in a coarser grid
Cel: An image in an animated sequence, displayed for a small (usually 1-32) number of video fields
Metasprite: An arbitrarily sized set of tiles to be displayed together at some relative distance from one another, representing one cel
Actor: An object that moves during gameplay and is usually drawn by adding metasprites to a sprite display list sent to the PPU every video field

Which if any are inaccurate or clunky?


* May vary based on platform
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Frames: A nomenclature discussion

Post by FrankenGraphics »

tepples wrote:cel
I really like the use of the word cel as you described. For a non-english person the etymology* might not be obvious, but it's the best we have, i think. Unlike keyframe, it describes any one picture in a sequence/ of pictures, not just the ones holding special meta information (in digital animation) or representing original frames distinguished from interpolated (in hand drawn/film development-mixed animation).

*celluloid painting for use in animation against a fixed or scrolling background in classic animation.
row
I think i have a reservation, and some additions.
"A cycle of the smallest significant rhythmic time base in a piece of music" <-- is this how time base should be used? Wouldn't that make one row a full note? Or wait, i'm confusing time base with measure, am i not?

The term 'row' seems drawn from rows and columns in text mode graphics, where a row is abs(yposinpixels/tileheight).
When speaking of a row in a tracker, i think it, just like "order table element" is a fixed measure, as it would be in an old school text editor (compare with 'lines' when speaking of code). Except rows wrap around at the pattern length boundary.

A usable phrase could be: "on tri channel, what if you moved all notes in pattern 00, 01 and 03 on row 1C to row 1E?"
Of course, this doesn't exclude it being used as a relative measure: "I think C#4 would be stronger two rows off in either direction."

When speaking of Rows and Cols in nes graphics, the above formula works. Speaking of at which row or column a line of text should appear could be practical, for example. Or when dealing with scrolling issues or attributes.
Tile: An 8x8 or 8x16 pixel image
An 8x16 pixel image is two tiles, isn't it? Unless we want to differentiate tiles from characters and patterns, which seems to have been used interchangeably. That'd actually make sense to do but might cause confusion.
Order table element
Doesn't roll off the tounge and isn't directly understood, IMO. Are there alternatives? Pattern tick?
Groove: A repeating sequence of row lengths measured in ticks, used for rational or swung tempo
It might just be me, but i didn't even understand the description despite reading it over and over. :oops:

====
rainwarrior wrote:If you're using an engine that is tracing (interpolating) paths between points to move along, those definitely can and do get called keyframes. These kind of paths are less common in NES games though. Enemies in a scrolling shmup could use animated paths like this, for example.
That makes sense.

I'm looking for a way to distinguish... how should i put this? Ah well, let's say we've got 4 cels in a cycle running over 16 frames.
Each cel updates what ppu patterns are used. In between them, there's also position-domain animation. Metasprite goes up, then right, then down, then left one pixel. So there's two animation domains across the time domain. We could theoretically add more, like subpalette animation, even character masking...

Keys here could hold info on what to set timers and temps(or what arrays to look into) for the next alteration in the corresponding animation domain. Each time a timer reaches 0, the "step sequencer" advances one step in the appropriate domain, in a way described by arrays or maybe even some temp vars.

So the distinction is between the key that governs the total sum of animation on one hand, and the various components of animation on the other: picture, position, mask, priority, subpalette assignment, subpalette colours, what have you.
nitro2k01
Posts: 252
Joined: Sat Aug 28, 2010 9:01 am

Re: Frames: A nomenclature discussion

Post by nitro2k01 »

tepples wrote:Video field: A cycle of a 60.1 Hz or 50.0 Hz time base
Surely you mean 59.94? And video field is a discussion in and of itself. In regular TV broadcasts, the video is encoded as 25/~30 frames per second, but 2 fields per frame. Gaming systems however often tricked TV sets into displaying progressive scan, by only sending odd or only even fields. (As I'm sure you're well aware.) What for example a SNES transmits could trivially be seen as 50/~60 FPS, whereas a regular broadcast could not.
tepples wrote:Tick: One update of a music engine, which may be synchronized to video fields, CD sectors, or another time base on the order 20-200 Hz
Do you know of examples where a music engine is synced to CD sectors. (CD-DA doesn't count imo since it's streaming audio and not tempo syncing note data to that rate.)
tepples wrote:Row: A cycle of the smallest significant rhythmic time base in a piece of music, consisting of a small (usually 2-15) whole or rational number of ticks. Also called tatum.
The potential problem with this use is that it's ambiguous whether this is referring to a row in a pattern (for one channel only) or across all available channels. This would depend on the layout of the tracker in question. The word could also deliberately omit to define this.
tepples wrote:Pattern: A sequence of notes that can be repeated
Order table element: The use of a pattern at a given time in a piece
Again, tying into the potential ambiguity depending on the tracker layout:
  • In Fast Tracker II (and, I believe in Pro Tracker before it) the order table contains one object per row. Each object contains one sequence of notes, and a row spans across all channels.
  • In Famitracker, the order table contains one object per channel, per row. Each object contains a sequence of notes, for only one channel.
  • In LSDj, the order table (called song) contains one object per channel. This object in turn contains a second table of objects, which then contains a single sequence of notes, for one channel.
It might be difficult to find a truly universal useful nomenclature.
tepples wrote:Tile: An 8x8 or 8x16 pixel image
Shouldn't that be "usually"? That would depend on the hardware. Perhaps there are consoles with a 16x16 tile size or even weirder ones.
tepples wrote:Cel: An image in an animated sequence, displayed for a small (usually 1-32) number of video fields
I think I'd prefer animation frame, despite it being a longer word.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Frames: A nomenclature discussion

Post by FrankenGraphics »

nitro2k01 wrote:In Famitracker, the order table contains one object per channel, per row. Each object contains a sequence of notes, for only one channel.
In LSDj, the order table (called song) contains one object per channel. This object in turn contains a second table of objects, which then contains a single sequence of notes, for one channel.
It might be difficult to find a truly universal useful nomenclature.
I don't think it's that hard. Famitracker follows the (slightly loose) standard of every pattern sequencer i've ever used in this regard; be it yamaha, alesis, korg or some eurorack boutique module, and pattern sequencers are the standard (in what sense there is a standard) which some other trackers seem to have chosen (actively or by pathtaking chance) to deviate from.

Most often, they do call the totality of pattern sequences a song. (Edit: Actually; as does famitracker too.)

The small differences between pattern sequencers is often in the ui/gui (and mostly it's then about navigation, confirmation and stuff like that), but not really in the underlying structure.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Frames: A nomenclature discussion

Post by tepples »

FrankenGraphics wrote:"A cycle of the smallest significant rhythmic time base in a piece of music" <-- is this how time base should be used? Wouldn't that make one row a full note? Or wait, i'm confusing time base with measure, am i not?
In 4/4 time, each measure is a whole note. A 16th note is smaller than a whole note.
FrankenGraphics wrote:An 8x16 pixel image is two tiles, isn't it?
It behaves as one in the NES's 8x16 pixel sprite mode.
FrankenGraphics wrote:
tepples wrote:Groove: A repeating sequence of row lengths measured in ticks, used for rational or swung tempo
It might just be me, but i didn't even understand the description despite reading it over and over.
Say you have a tick rate matching the NTSC NES field rate (60.10 Hz), and you want a tempo of 124 quarter notes per minute, with a row equaling a sixteenth note. A tempo of 496 rows per minute implies 60.1*60/496 = close to 7.25 ticks per row. If you alternate among 8, 7, 7, and 7 ticks per sixteenth note, it averages out to 7.25 ticks per sixteenth note, or 124.3 quarter notes per minute.

Or you might set a grid of swung eighth notes by alternating between 12 and 8 or 13 and 7 ticks. This averages out to 20 ticks per quarter note or 180 quarter notes per minute, but the on-beat eighth note is longer than the off-beat one, creating a swing feel.

For more information on grooves in 0CC-FamiTracker, see 0CC-readme.txt.
nitro2k01 wrote:
tepples wrote:Video field: A cycle of a 60.1 Hz or 50.0 Hz time base
Surely you mean 59.94?
Video following the NTSC standard has a field rate of 60000/1001 = about 59.94 Hz.
The NES PPU and Super NES S-PPU produce nonstandard video with a field rate of 39375000/655171 = about 60.10 Hz.
nitro2k01 wrote:Do you know of examples where a music engine is synced to CD sectors. (CD-DA doesn't count imo since it's streaming audio and not tempo syncing note data to that rate.)
I haven't seen it used in practice, but it's a well-known time base that a CD-based system might have used for audio engine updates.
nitro2k01 wrote:
tepples wrote:Row: A cycle of the smallest significant rhythmic time base in a piece of music
The potential problem with this use is that it's ambiguous whether this is referring to a row in a pattern (for one channel only) or across all available channels. This would depend on the layout of the tracker in question. The word could also deliberately omit to define this.
A row considered as a unit of time is independent of how many patterns happen to be advancing every row. The most prominent use case I can see for different row periods on different channels is sound effects and music playing at once.
nitro2k01 wrote:Again, tying into the potential ambiguity depending on the tracker layout
Pro/Scream/Fast/Impulse have multi-channel patterns because that's convenient with the comparatively large memory of a 16-bit Amiga or IBM PC. By contrast, NT2, FT, and Pently have single-channel patterns because on the smaller memory of an 8-bit machine, it becomes more important to reuse e.g. bass and drum patterns across different melody patterns. The order table in NT2 and FT is coarse, aligning pattern starts along all channels; Pently's is finer, allowing a pattern to restart on any row. I haven't used LSDJ so I'm not familiar with its architecture.
nitro2k01 wrote:Shouldn't that be "usually"? That would depend on the hardware. Perhaps there are consoles with a 16x16 tile size
Sprites on TG16 and Neo Geo are made of 16x16-pixel tiles, for instance. But I was defining these relative to the NES so as not to confuse readers with excessive generality. That's also why I used 60.1 Hz.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Frames: A nomenclature discussion

Post by rainwarrior »

FrankenGraphics wrote:
rainwarrior wrote:If you're using an engine that is tracing (interpolating) paths between points to move along, those definitely can and do get called keyframes. These kind of paths are less common in NES games though. Enemies in a scrolling shmup could use animated paths like this, for example.
That makes sense.

I'm looking for a way to distinguish... how should i put this? Ah well, let's say we've got 4 cels in a cycle running over 16 frames.
Each cel updates what ppu patterns are used. In between them, there's also position-domain animation. Metasprite goes up, then right, then down, then left one pixel. So there's two animation domains across the time domain. We could theoretically add more, like subpalette animation, even character masking...

Keys here could hold info on what to set timers and temps(or what arrays to look into) for the next alteration in the corresponding animation domain. Each time a timer reaches 0, the "step sequencer" advances one step in the appropriate domain, in a way described by arrays or maybe even some temp vars.

So the distinction is between the key that governs the total sum of animation on one hand, and the various components of animation on the other: picture, position, mask, priority, subpalette assignment, subpalette colours, what have you.
Sure, in more general animation editors basically everything is a timeline with keframes on it, and the animation engine interpolates between keyframes for each of them. In a context like that, it would probably be natural to call changes on the sprite timeline keyframes.

The timelines could be position, colour, velocity, gravity, blend mode, etc. whatever's useful. I've used/worked on animation editors like this. For the "sprite" timeline maybe the only available interpolator is just a hold (or perversely you might call it a "nearest neighbour" interpolation).

So I think in a context like that to provide analogy I probably would call it a keyframe. Looking at just the sprites changing over time, I wouldn't have, though.


On another note, I usually feel like "metasprite" is an awkward and unnecessary distinction from "sprite". I get that it's trying to differentiate a hardware sprite (single tile) from the overall thing, but it seems to invert what's important to me. The word "sprite" should just be the one you talk about most (the metasprite), and the hardware sprite is the more specific technical thing that should be made awkward with more attached words. So in most cases I'd say "sprite tile" for the hardware sprite where it should be disambiguated, and just "sprite" instead of metasprite.

...tons of people here seem to love typing "metasprite" out over and over, so maybe I'm a weirdo in this preference.


edit: additional note moved to post below, tokumaru intervened
Last edited by rainwarrior on Fri Sep 22, 2017 3:28 pm, edited 2 times in total.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Frames: A nomenclature discussion

Post by tokumaru »

The problem is that a single hardware sprite isn't always a single tile, so "sprite tile" doesn't make much sense. Even on the NES they can be 2 tiles (8x16 sprites), and the Genesis can do any combination from 1x1 to 4x4 tiles.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Frames: A nomenclature discussion

Post by rainwarrior »

tokumaru wrote:The problem is that a single hardware sprite isn't always a single tile, so "sprite tile" doesn't make much sense. Even on the NES they can be 2 tiles (8x16 sprites), and the Genesis can do any combination from 1x1 to 4x4 tiles.
Heh, that's perhaps another layer of ambiguity about what "tile" means. I'd say all of those are still one "sprite tile". Maybe they're multiple "CHR tiles" though. ;) Hey, there's also people that like to call CHR "pattern", just to mingle with the tracker terms more too.

There's an SNES case where the distinction of multiple 8x8 tiles in a single hardware sprite matters, to do with overflow, but describing that properly is going to require lots of words even in the best of times.


edit: was trying to post this above, moved down here
FrankenGraphics wrote:Ah well, let's say we've got 4 cels in a cycle running over 16 frames.
If they're evenly spaced that would have traditionally just been called animating "on fours". ...though on the NES I think the memory limitations make uneven timings a huge advantage in a lot of cases, so this traditional terminology becomes less useful.
Post Reply