Jump to content
IGNORED

Are there tools for graphics and sound?


SvOlli

Recommended Posts

Hello,

 

I'm planning to participate in next years revision party, submitting a nice demo, preferably as a collaboration. Right now I've already hacked up some tech-demos to visualize some ideas. This path will continue. Anyway, I noticed that that some of the biggest slowdowns that I've encountered is that I'm lacking other good tools beside the assembler. Most noticeably I'm missing tools for generating sound and graphics.

 

For sound, I've already started some kind of a tracker-like program that can be used to generate sound. I've already a simple but compact play routine, that reads patterns and byte-streams to generate some from it. It's a start, notes are generated by using macros right now.

 

For graphics, I'm also thinking about writing some kind of "pixel-painter", a tool that can generate data for anything an Atari 2600 coder needs: 8, 16, 40, 48 bit wide bitmaps.

 

My approaches to sound and graphics editors would be open source and using the Qt-framework, so that could would work on Linux, Windows and Mac OS X as well. I've already hacked up some open source applications (small to medium) using Qt.

 

Before I start reinventing the wheel, I want to ask, if there's something available that I just didn't see. Is there?

Link to comment
Share on other sites

I have a few GIF converter tools on my site.

 

for 8 pixel sprites:

http://www.spiceware...ri/convert8.php

 

2 color shifting sprites (used for the Dragon in Medieval Mayhem)

http://www.spiceware...ari/convert.php

 

48 pixel

http://www.spiceware...t48_results.php

 

96 pixel

http://www.spiceware...i/convert96.php

 

Vector

http://www.spiceware...ari/vector8.php

 

Vector2x

http://www.spiceware...ri/vector2x.php

 

 

 

usage is like this:

Enter URL of GIF image (it doesn't support "upload", image must be on internet somewhere)

post-3056-0-39242600-1337721688_thumb.png

 

select which color is the background color. The image color table is shown in the top-right corner, and the image drawn using those numbers is shown at the bottom of the page. If colors are hard to make out, click CHANGE COLORS to cycle through some different page colorations.

post-3056-0-31405100-1337721692_thumb.png

 

copy/paste results into your code. I use an include file (linked to on the page) so I can use X and _ as I find it to be much easier to see what the images are when viewing the code vs using 1 and 0.

post-3056-0-62243200-1337721696_thumb.png

Link to comment
Share on other sites

For graphics I usually write custom converters that take BMP input.

For sound there's not much AFAICT. I'm working on a keyboard-like program so musicians can play around with the TIA sounds. At the moment it records WAV and dumps ASM tables, but there's still quite a lot of work required to get them into proper tables in the code.

Link to comment
Share on other sites

If you have access to a Mac OS 9-capable Mac I wrote a playfield painting app. The canvas uses the correct aspect ratio and the static image data can be plugged into a DASM file. It's capable of outputting 8-color RGB-cycled images. PF Painter can be found on this page at my site.

 

kisrael wrote the web-based PlayerPal to create multi-colored, animated sprites. Shameless plug: it plugs the generated sprite data into my DASM source code, which was written more for novices like myself so it's heavily-commented and not the most efficient way to go about moving and animating a sprite, but it works and is easily customizable.

Link to comment
Share on other sites

For graphics I usually write custom converters that take BMP input.

 

Ditto, though I use libpng. My custom programs get called in my Makefile, so any changes to my png images get updated automatically.

 

VbB has a very good Windows "img2code" program that I sometimes run through mono. It supports output in bB and asm formats.

 

For music I use Rosegarden to capture midi, and use custom converters to go from CSound export to data statements.

Link to comment
Share on other sites

I'm working on a keyboard-like program so musicians can play around with the TIA sounds.

Do you mean a keyboard-like program on the 2600, or on a PC?

 

I did a 2600 keyboard program, but it's just a keyboard right now. I haven't touched the program in a while-- no matter what I start to work on, I always get side-tracked by other things! My grandiose plan was to write a MIDI-compatible synthesizer program for the 2600. There's already a MIDI interface available, but from what I've read about it I don't really care for its design limitations (unless I've misunderstood its operation). I think it would be cool if someone created a "real" 2600 MIDI interface that uses the two controller ports to input and output 256 values (0 through 255) by reading and writing to SWCHA. Then you could plug a MIDI keyboard into the 2600 and play all the notes. As I understand the existing MIDI interface, it limits you to a small set of values.

 

My idea is to have a program that lets you select between different functions.

 

One function would be a waveform designer so you can design waveforms. For example, it would have a certain number of predefined waveforms, like a square wave, triangle wave, sawtooth wave, and sine wave. Then you could copy that waveform to RAM and either add to it or subtract from it, as well as multiply it by a given harmonic. For instance, you might start with a second-harmonic sine wave and add a third-harmonic sine wave to it, resulting in two tones separated by a perfect fifth. Or you could start with a first-harmonic square wave and subtract a first-harmonic sawtooth wave from it. Each wave would range from a volume of 0 to a volume of 15, and as you add or subtract waves the new result would be converted back to a range of 0 to 15. You could play notes on a keyboard display to see how the result sounds, or use a real MIDI keyboard instead of the onscreen keyboard.

 

Another function would be a sound shaper so you can sculpt new sounds by defining different ADSR envelopes.

 

Another function would be a composing utility so you can create melodies by selecting which notes to play, for which duration, using which waveform, using which ADSR envelope, storing the information in RAM for playback.

 

There would also need to be a way to save the composition to a storage device like the SaveKey, or load it back into RAM again. Thus, you could play live with a keyboard or have the program play back a melody like a sequencer or player piano.

 

And there would also be the ability to add effects like glissando, tremolo, or vibrato, or bend notes using the controls on the MIDI keyboard.

 

Like I said-- it was a grandiose plan!

 

So far all I did was create a keyboard display. Each octave is color-coded for easier identification, with yellow being the octave that starts with middle C. Higher octaves go from yellow to red and violet, while lower octaves go from yellow to green, blue, and purple. The display shows five-and-a-third octaves, and if you move the hand up to the top or down to the bottom the display shifts up or down an octave to get the full range of a standard piano keyboard. At the moment all you can do is move the hand up and down to point at each key, and shift the keyboard up or down as described.

 

post-7456-0-23411800-1337749008_thumb.png

Keyboard.bin

Link to comment
Share on other sites

I have a few GIF converter tools on my site.

That leaves my with the question: how do you create the GIFs?

 

The WUDSN IDE also comes with converters for image data. I should take a look, after I found a suitable "pixel-painter" on Linux for the base graphics.

Link to comment
Share on other sites

I'm working on a keyboard-like program so musicians can play around with the TIA sounds.

Do you mean a keyboard-like program on the 2600, or on a PC?

Well:

it records WAV and dumps ASM tables

So yeah, PC. Stella's TIASnd code combined with a bit of SDL. I might push it on github once it's more functional.

 

I think it would be cool if someone created a "real" 2600 MIDI interface

Have you heard of Watari?

Link to comment
Share on other sites

That leaves my with the question: how do you create the GIFs?

 

The WUDSN IDE also comes with converters for image data. I should take a look, after I found a suitable "pixel-painter" on Linux for the base graphics.

Dunno - I'm on a Mac so I'm not familiar with what paint programs are available for Linux.

 

The converters are for the graphics that the pixel artists send to me so I don't have to convert them by hand. I usually just draw place holder images directly in my code using _ and X, though for Space Rocks I took screen grabs from Asteroids and converted those so that I could test out my "vector" converters.

Link to comment
Share on other sites

I've heard of MIDI2600, and seen YouTube videos of the 2600 being played with it. Unfortunately, I can no longer find the documentation about it, but the "implementation" guide that I'd seen for the MIDI2600 seemed to indicate that it doesn't send 1-byte MIDI instructions per se to the Atari, rather it sends signals that correspond to specific controller inputs such as "joystick 0 left," or "joystick 1 right," or a particular key being pressed on one of the keypads. I already said that I may have misunderstood the information, but I don't see how it can send "true" MIDI commands to the Atari based on what I'd read. Now, if different joystick signals can be combined with each other at the same time, then that's different, because that's the only way you could send a "true" MIDI command. For example, a value of %01101000 would correspond to the left joystick being pressed right and up at the same time, plus the right joystick also being pressed left, down, and up at the same time. You wouldn't be able to use the joysticks and/or keypads to send all of the different possible values from 0 to 255, but I should think you could use a MIDI keyboard to do that-- if you had an interface that would take the MIDI output from the keyboard and send it as an 8-bit value to the 2600 via the two controller ports.

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...