Our crazy idea to spend a lot of time on something that's already been invented!

But we think we can do it better-faster-cheaper!

Our mission:  To create CD-based MP3 players using old computer parts.  These players ultimately should work with a small input device (other than a bulky keyboard) and without a monitor.  They should boot from the CD-ROM, run off a minimal amount of RAM (4-8MB), and require no other storage space (hard drives).  This will allow players to be turned off at any point without loss of data.
OK, so at this point we're looking for an alternative to booting from the CD.  We've so far considered a small hard drive, a bootable ROM card, or a small PCMCIA memory card connected via the IDE interface.

10/28/00 List of Bugs
- Tested the code more to see what other bugs I could find.  Here's what I found:
* System crashes when "forward" is hit too quickly, starts running by itself again though
* Can only eject the CD once per run of the program (if it crashes and restarts you get another eject)
* LCD driver randomly stops running, restarts when mp3front restarts.  Seems to occur most often when 0:01 remaining on a song (or possibly when it's just reaching EOF)
* On some songs time remains at 0:00 (LCD driver may have stopped in this case)
* On at least one song the time randomly changes times in nonlinear fashion
* Song number is always 0
* mpg123 won't play songs encoded at 33.2khz (which is a weird frequency anyways)

- Seems to run pretty well if you don't touch the controls right now :)  Look for all this stuff to be fixed (hopefully) next week!

10/27/00 New Features, New Bugs
- Matt updated some of the code.  It now makes a list of filenames so the randomizer knows what songs it played before.  Also now has support for mp3s in multiple directories.  Before it would only accept CDs without directories since there is now way of telling a directory from a filename (which is kind of strange but that's what Matt told me).  Anyways he got around this problem by just trying to cd to each name and if it would then he knew it was a directory and not a file.  Smart Matt!
- Well the new stuff is great, but for each new thing, other stuff stopped working (isn't that what you always expect?).  After a CD starts playing it can't be ejected now.  The CD-ROM stops playing for 5 seconds, refuses to eject the CD, then starts playing again.  Also the display shows "0" for every song number now, probably due to a bug in the new file-handling system.
- No new pics since nothing looks different.
- This weekend Matt is going to see his woman and I'm going home to sit in the dentist chair Saturday.  So don't expect any updates until Monday.  Maybe I'll find a case this weekend.  That'd be da cooo-est!
10/25/00 New LCD, Display Layout
- Not too much new to report.  Matt got the LCD to display the time remaining for each song when it's playing, and also has some graphical characters for stop, play, pause, repeat, and randomize.  Rebuilt the first LCD using a short parallel ribbon cable, so it connects directly to the motherboard.  Attempted to get a low-profile case at Computer Success (our favorite little computer store! :) but they didn't have them anymore, so the player remains on my desk until we find a way to package it.  Contacted two companies about solid-state storage devices.  One has a solid-state memory "drive," the other has a IDE to PCMCIA interface that flashcards could be connected to.
- Matt will continue coding, including fixing the problem that the keyboard doesn't accept input when the video card is taken out now :) Beams will continue looking for a case and storage for the OS.


The player with the newest display connected (longer-corded version on the right).


Somewhat bad picture of what the display looks like now.

 

10/23/00 Hardwired sound card
- Here's the results of the last 2 days' work.  I couldn't find any other good cheap way to mount the soundcard sideways, so the soundcard is now hardwired to the motherboard.  I would have taken off the ISA slot, but I don't have a desoldering station, so instead I just connected all the lines to the final ISA connector's pins on the bottom of the motherboard.  I used an old hard drive ribbon cable for the lines.  For traces on the card that were thick I used two wires instead of one, since they are designed to handle more current, and I used 22-gauge wire for the ground pin (all using the scientific method of guessing).


There it is!  Now doesn't that look scary? (video card is temporary)


Detected fine in Linux, next test proved that the card was functioning... we have sound!

- Played around with the problem of the LCD not getting enough power.  Checked the resistance across the LCD Vcc and ground and found that to be 3.20 Kohms, which using the magical formula i=V/R found the amperage to be 1.5mA, the nominal amperage at 5V, so I just wired that into the power supply and woo it's powering up fine now :)
- On the software end Matt got the LCD to display the current song playing.  He's planning on adding the time remaining, and also possibly making long titles scroll across the screen.


Look at my desk... wow it's a mess!  Good thing I don't use it to do homework!


LCD displaying the title


Sound card in position just above the motherboard (and not covering the CPU because it gets HOT!  Piece of paper acting as insulation between the motherboard and sound card right now :)

 

10/21/00 New and improved version
- Matt continues work on the software, while I build a better-looking version of the LCD with the second one we ordered.  Here are the results:


Woohooo now it's got it's own little connector (that's taped down so it doesn't fall apart).


Back of the display.  Yes masking tape isn't the best to use, but it was the closest sticky tape-form object!

- Everyone seems to have their own way of hooking up the LCD, but here's a diagram of our way which also allows you to power the LCD and contract from the parallel port itself.  Click me! mmm that feels good!

Also important to note: Using the cable shown above (a motherboard to LPT ribbon cable) the pins are in the order 1, 14, 2, 15, 3, 16, 4, 17, 5, 18, 6, 19, 7, 20, 8, 21, 9, 22, 10, 23, 11, 24, 12, 25, 13 from pin 1 (usually marked with red-spotted wire, left to right in the above photo).

10/20/00 It works!!!!
- LCD's showed up in the mail today.  Tried wiring it up, didn't work.  Went to Radio Shack to get a potentiometer (the magic piece), wired that in, then look at dat it works!  Of course one of the small data line wires broke before we got it to display anything, so we ended up with this as our 1st output of the display, but hey it's working right now! :)

OK, here's one to prove that we can actually make it say what we want.

On the cable I hacked up (an Iomega Zip drive parallel cable) the wire colorings are the following (dominant color listed first).  In a perfect world these colors will be universal (aka check your cable yourself, this is only what I found on the brand cable I used).

1 tan - white
2 brown - white
3 pink - white
4 orange - white
5 yellow - white
6 green - white
7 blue - white
8 purple - white
9 black - white
10 brown - tan
11 pink - tan
12 orange - tan
13 tan
14 white - brown (dot pattern)
15 white - black (stripe pattern, hard to tell color from 14)
16 white - pink
17 white - orange
18 white - yellow
19 white - green
20 white - blue
21 white - purple
22 white - grey
23 tan - brown (hard to distinguish the last 3, look closely!)
24 tan - pink
25 tan - orange

10/19/00 Wheeeee!

- A couple things happened in the last few days:
  Matt sent someone living at 123 Fat in Afghanistan a bunch of info since he used that address to update his virus definitions.  Imagine someone living in a hut on a sheep-herding farm getting some information about McAfee VirusScan....
   Checked my bank account online... the money was taken out for the LCD's on the 18th so I'm assuming they were shipped that day.



Discovered my laptop has VOLTAGE!!!!  4.99V of it to be exact.  Ooh better pay that phone bill too!


Matt didn't believe it so he went out to look at the voltage on our player.  Wooo it has VOLTAGE too!

Here's another good diagram and some low-level code stuffs:
http://ee.cleversoul.com/lcd_project.html

- Matt is writing some LCD driver thingies.  When the displays come I get to SOLDER!  Hot things are fun.
- Matt writes a little kernel module to turn the pins of the parallel port on and off.  Now he's got the low-level stuff done, so next he gets to write the initialization program thingy, or at least that's what he says he's doing :)
- We determine that it's all numbers n stuff and in a perfect world we can accomplish anything!

10/16/00 Not much new...
- Ordered the displays.  Hopefully they'll be here by the end of the week.  Also got a winamp driver to output song titles, just to play around with and make sure I wired the displays correctly once I get them.
10/15/00 Research
- I looked up some more info on connecting the LCD to the parallel port, and tired to find a good source for our displays

http://mobydisk.com/winamp/lcd_hardware.html - Good wiring diagram
http://www.beyondlogic.org - More info on ports
http://www.bgmicro.com/ - Good cheap parts
http://www.teleport.com/~raybutts/lcd-faq.htm - LCD FAQ

BG Micro has some cheap 4x20 character displays based off the Hitachi HD44780 controller (which seems to be the standard) for $5.95 each, will order tomorrow.

10/13/00 More midterms, Radio Shack, and Women
- Matt finds some bugs and fixes them.  Most are related to his keyboard input function thingy.
- Went to Radio Shack.  The girl there didn't know the difference between LEDs and LCDs.  Go figure.  Anyways, as I should have known from the beginning, Radio Shack didn't have any LCD displays.  Time to look elsewhere.
- Midterms suck.  Especially the one I took today. *BLAH*
- Matt's woman is here for the weekend.  Don't expect much to get done till Monday :)


Look at it sitting there happily with our stereo system.  Too bad we can't see what it's playing! :)

10/12/00 Midterms, Concerts, and stuff...
- Matt works more with his Linux stuff and gets it to do just about everything we want to.  Keys are all mapped to the number pad, complete with eject button.  New CD starts playing when it's put in the drive.  Only works with CDs that have MP3s in the root directory right now. I on the other hand spend all my time studying for my Thermodynamics midterm, then go take that beast, then celebrate by going to the Dixie Chicks concert.  If I would have known they were letting cameras in I would have taken my digital camera.  O'well....
- Got some LCD displays that had been donated to us.  Unfortunately they are 64x480 pixel displays with no built-in character set and a generic serial interface that is hard to understand (LM211 for anyone that wants the model number).  So instead of trying to write our own character set and make it interface with the serial port, we decided to just go to Radio Shack and see if they have anything, then look online if we can't find anything there.  www.crystalfontz.com has some nice ones, but they're $45 each... blah!
- It's late.  I have another midterm tomorrow that I haven't studied for. Sleep is good!


Big LCD GOOD!  Sucky interface BAD!

10/11/00 I should be studying for midterms...
- Attempted to boot both OS's without the video card.  DOS died after doing something with the CD-ROM for about 10 seconds (heck if I know what it did... there's no video card!  Linux booted up and started playing no prob.  Another point for Linux!
- Starting to consider alternatives to putting OS on every CD.  Found out that when a CD is made bootable it uses another format that only allows 8.3-character filenames.  Considering using small hard drives for now.  Will research some kind of bootable card with ~4MB for the OS.
10/10/00 New stuff happens! Wheeeeee!
- I (Beams) managed to get the entire DOS OS, CD-ROM drivers, SB16 drivers, and mp3 player on a single floppy (with about 9k to spare).  System boots into mpxplay after copying it to a ramdisk (so the program will run independently of the drive and prevent any possible skipping).  Tried playing a CD-ROM with all mp3s in the root directory manually with success.  Only thing left to do is to get mpxplay to load the directory and begin playing on its own, then it will be ready for a bootable CD test.  The lack of long filename support makes creating playlists more difficult, but mpxplay loads all the ID3 tags when given a directory manually.

Here's the list of files:

A:\>dir /s
Volume in drive A has no label.
Volume Serial Number is 3B5D-14FA

Directory of A:\

04/23/1999 10:22p 93,890 COMMAND.COM
10/10/2000 02:25p 243 AUTOEXEC.BAT
10/10/2000 02:24p 161 CONFIG.SYS
05/11/1998 08:01p 33,191 HIMEM.SYS
05/11/1998 08:01p 41,302 OAKCDROM.SYS
05/11/1998 08:01p 12,663 RAMDRIVE.SYS
05/06/1998 08:01p 25,473 MSCDEX.EXE
05/11/1998 08:01p 68,871 DRVSPACE.BIN

Directory of A:\SB16

10/21/1996 04:05a 295,074 DIAGNOSE.EXE
06/23/1997 02:18a 106,374 MIXERSET.EXE
09/28/1995 02:10a 424 CTMIX.CFG

Directory of A:\SB16\DRV

01/09/1995 04:08a 45,954 CTVDSK.DRV
09/09/1994 04:04a 15,586 CTWDSK.DRV
12/07/1995 04:04a 12,218 CTWMEM.DRV
02/20/1997 03:04a 34,353 CTSB16.SYS
05/03/1995 01:03a 10,330 CTMMSYS.SYS
07/11/1997 04:16a 5,898 AUXDRV.DRV
08/18/1995 01:22a 18,008 CTMIDI.DRV

Directory of A:\mpxplay

02/06/2000 03:39p 324 FILE_ID.DIZ
10/10/2000 02:33p 9,505 MPXPLAY.INI
02/06/2000 03:49p 389,024 MPXPLAY.EXE

Total Files Listed:
21 File(s) 1,218,866 bytes
9 Dir(s) 9,216 bytes free


- Matt got his boot floppy working and has begun playing with mpg123.  This looks promising for long filenames.

Later that night...
- Matt gets his floppy to work correctly running mpg123.  We decide to use linux since we can customize it more and write our own drivers for input and output to a LCD display.  
- I attempt to make a bootdisk, but run into a minor problem with mpxplay playing the data track as an audio track.  I started looking for a LCD display we can build a prototype with.
- Find a printer port pinout.  We decide to use the printer port since we can use DMA and it requires less hardware on the LCD side.

Even later that night...
- Matt learns all about forks and children and pipes and all that crazy stuff.  As long as he doesn't eat his babies we should be ok.

Night of 10/9/00
- Matt's boot floppy gets bad sectors after too many reboots.
- Beams decides to look for a DOS alternative.
- Beams' version boots, using a hacked Win98 boot disk, old SB16 drivers, and a 500K mp3 that's transferred to a ramdisk, then played using mpxplay.  All this fits on 2 floppies, and is successful.  Next step is to learn mpxplay key commands, then attempting to make a bootable CD-ROM.
- Matt continues work on Linux bootdisk.


Our prototyping box (on the kitchen counter).  Wheeeee!!!

Weekend of 10/6/00
- Random road trip to Matt's to pick up some old boxes. 
- Bought a K5-133 for the second board in the bare box. 
- Matt started working on a linux boot floppy for prototyping.
- Matt's boot floppy loads the ramdisk OK, but won't run INIT on the K5's.  Works fine on any other box (including VMWare).  Continuing work on linux port.
c2000 Plocmstart | Keep yer socks on!