Jump to content
IGNORED

A presentation on VCS music


Kylearan

Recommended Posts

At this year's Revision demoparty, I gave a presentation about music on the VCS with a survey on available routines and tools, some thoughts on how this might have influenced music culture (from a demoscene point of view) and finally introducing TIATracker, my new sound routine and sequencer. A recording is available on YouTube in case you're interested:

 

 

  • Like 10
Link to comment
Share on other sites

Good presentation. Took a look at your tool. I'm not a programmer or a musician, so it's use to me is limited to curiosity, but I have to say, You have done a fantastic job with both presenting your design and creating the design. I can see how it would be useful. I mean, a guy like me, who knows next to nothing about music was able to putter around and make a simple, if mostly crummy tune after about an hour's work of just fooling around with it, with no manual to go by.

 

That speaks well of your GUI design approach in that someone with only a basic understanding of the VCS and its limitations can sit down and use it with zero instruction. This simple fact will surely make music creation for the VCS a lot more approachable for everyone from folks in the demoscene to game programmers.

 

There is one GUI suggestion I have that would help make doing things a little easier. Specifically, changing the drop down menu in the tracks to a toolbar of icons (on the side or top) that influences the selected track item when pressed. Given that things like adding rows, pauses, etc. is probably going to happen a lot for complex tunes, a toolbar would be a lot quicker and intuitive than a drop down menu. Things like mute channel could still be in a dropdown menu perhaps, or you could put a select box above each channel that would mute it if selected. From a UI standpoint, toolbars would be a lot easier to use than left click, moving your mouse and clicking again. The less clicks a user has to make, the better, because it speeds up the process and makes the program easier to use. That said, I love the clean simplicity of your design.

 

Anyway, I'm not a musician or a programmer and my time using it was limited, so take my thoughts with a grain of salt.

Edited by Lendorien
Link to comment
Share on other sites

9 bytes in RAM!?

 

That's interesting, because that's exactly how many bytes my theoretical integration of sound would have used for a game idea I had. I would have programmed it, but Stella hates my computer, so no ROM testing for me. :(

Link to comment
Share on other sites

What kind of computer do you have?

Well, when I was doing graphical mock-ups, I was still running a decade-old Windows XP machine.

 

I've since upgraded to a basic Windows 7 laptop, and the emulator still refuses to run, it just crashes.

Link to comment
Share on other sites

Great presentation Kylearan! :)

 

ApeFat looks cool. Agree about the percussion instrument definitions being the hardest - took a lot experimenting to get the percussion instruments I used in KC; here is an example audio file:

percussion_instruments.zip

 

The in-game sound engine in vwB is remotely similar to Rich_S's engine, it's what I used to create the definitions in the file.

 

Link to comment
Share on other sites

Great presentation Kylearan! :)

Thank you! :)

 

took a lot experimenting to get the percussion instruments I used in KC; here is an example audio file:

Thanks, will have a look/hear later!

 

The in-game sound engine in vwB is remotely similar to Rich_S's engine, it's what I used to create the definitions in the file.

Interesting. I admit I made my research and the presentation purely from a demoscene point of view. I'm sure I've missed some great proprietary sound routines from the homebrew game scene, and maybe some publicly available tools from there as well.

 

vwB is Virtual World Basic, right? Is it open source, and do you have a link?

  • Like 1
Link to comment
Share on other sites

Thank you! :)

 

 

Thanks, will have a look/hear later!

 

 

Interesting. I admit I made my research and the presentation purely from a demoscene point of view. I'm sure I've missed some great proprietary sound routines from the homebrew game scene, and maybe some publicly available tools from there as well.

 

vwB is Virtual World Basic, right? Is it open source, and do you have a link?

 

You're welcome! :)

 

Yes vwB is free like open source but has no open source license restrictions so that anyone can use it however they want, even to create closed source versions.

 

Here's the direct link: http://RelationalFramework.com/vwBASIC.htm/vwBASIC.zip

Link to comment
Share on other sites

Great presentation - pity it was so poorly attended!

 

The lack of TIA music is an issue for us games programmers also. I really hope your tool will encourage more chip musicians to consider the 2600.

 

Have you considered updating the audio registers more than once per frame? This could be a good approach for combining instrument and percussion sounds. The siren in star castle arcade is updated 4 times per frame. More frequent updates would also allow rudimentary samples to be played like the NES DMC channel. Though this would not work well with 4K demos!

 

Chris

  • Like 1
Link to comment
Share on other sites

Great presentation - pity it was so poorly attended!

It was 10am, the compo the night before ended at 2:30am. And then we lost another hour due to daylight-saving time starting. But I was there too, via live stream. icon_smile.gif

Have you considered updating the audio registers more than once per frame? This could be a good approach for combining instrument and percussion sounds. The siren in star castle arcade is updated 4 times per frame. More frequent updates would also allow rudimentary samples to be played like the NES DMC channel. Though this would not work well with 4K demos!

That's a good idea. And I think it must not necessarily require much more ROM, some effects just require more frequent register updates.

 

BTW: The more frequent updates in SCA allows mixing two frequencies. That way you can create almost any frequency quite precisely.

Link to comment
Share on other sites

Have you considered updating the audio registers more than once per frame? This could be a good approach for combining instrument and percussion sounds. The siren in star castle arcade is updated 4 times per frame. More frequent updates would also allow rudimentary samples to be played like the NES DMC channel. Though this would not work well with 4K demos!

Speaking of once a frame, batari Basic users are stuck with once a frame, but switching the tones only once a frame or longer (8, 12, 8, 12, 8, 12 . . .) doesn't sound too horrible:

 

ex_sound_with_background_music.bin

  • Like 1
Link to comment
Share on other sites

Have you considered updating the audio registers more than once per frame?

Yes, it's already on my long list of things to try. :) This is a thing commonly done on other platforms; for example on the C64, multispeed tunes (2x, 4x, 8x or even more) are quite common.

 

Basically I thought about two uses for updating the registers twice per frame:

 

1) Change parameters of an instrument, maybe allowing for more interesting effects. However, a chip musician told me that this would probably not improve instrument quality a lot, as it's mainly interesting if you have parameters like filters, which the VCS doesn't have. Still, would like to try that nonetheless.

 

2) Mix four "virtual" channels into two. To make this sound any good though, the time between audio register updates should be the equal all the time. So for example on a PAL system with 312 scanlines, the updates should happen after 156 scanlines respectively - which causes one update to happen in the middle of the display kernel.

 

This is bad: You either need to call the music player during the kernel, eating a lot of scanlines, or pre-compute the audio register values and only copy them during the kernel which can be done quickly but needs at least 4 additional bytes of RAM.

 

One day I'd like to try how it sounds if you do one register update at the beginning of overscan and the second at the end of vblank. But first I'd like to finish TIATracker 1.0. :)

 

Updating the registers a lot more frequently to play samples has been done before on the VCS, for example here.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...