--- In pjrcmp3dev@yahoogroups.com, Laine Walker-Avina <lwalkera@...>
wrote:
>
>
> On Apr 21, 2006, at 09:54, besjr69 wrote:
>
> > ALL,
> >
> > I about to start work on some code to speed up startup. If I
read the
> > code correctly the program reads the file headers off disk and stores
> > the information into a linked list contained in memory. This is the
> > major problem with the slow startup code. The header information is
> > being read from the harddrive to build the linked list. What I'd
like
> > to do is develop a PC application that creates the file header
> > information and stores it as a text file in the MP3 root directory.
> > Next I'd like to make the MP3 player read this text file and
build the
> > linked list off of it. This would eliminate disk access and speed up
> > the startup time tremendously (less than 10 secs estimated).
> >
> > What I need to know from fellow developers is if this is possible.
> > Can the firmware or SDCC support file read access? If I can make
this
> > work we would not only speed up startup time, but also be able to
> > support playlist although it would be in a different formaton from
> > MPu.
> >
> >
> > Bobby Simmons
> >
> > PS - for those who want to solve the sorting issue I have a
> > alternative solution using a DOS batch file. It will require you to
> > load Directory Sort [ds.exe] on your PC or MP3 hard drive. The only
> > issue is that you have to press any key at the ds.exe prompt for each
> > directory. I've found using the [Space Bar] makes it a lot faster
> > than using the [Enter] key. See below:
> >
> > //batchfile
> > @echo off
> > [drive]:\
> > for /r %%i in (.) do ds l /w %%i
> > cd\
> > //endbatchfile
>
> As I recall from when I tried to speed up startup, the main bottleneck
> isn't parsing the directory structure, but in reading from the hard
> disk (I helped rewrite dirlist.c). A better idea would be to just load
> the info to start playing, and then stream the rest of the directory
> structure while playing the current file.
>
> -Laine
>
This is exactly what I'm trying to tackle as well. The idea is to
store the same informations that is parsed off the HD into a text file
- sort of like a map of the HD. Then at startup, I could just open
the file and build the linked list off of the file instead. Whenever
you open a file for I/O operation is is loaded or streamed into
memory. This is a heck of a lot faster than moving across the drive.
Also, if this works I'd be able to create playlist using the same PC
application. Of course, it wouldn't be in the MPu. format. I'd have
to use a text file format as well.
I also plan on modifying the dirlist.c to put a divider between the
playlists and the normal directories. That's way down the road. I'll
keep everyone updated on my progress as I move along. This could be
easy (doubtful) or very hard to implement (likely).
Bobby
--- In pjrcmp3dev@yahoogroups.com, Laine Walker-Avina <lwalkera@...>
wrote:
>
> As I recall from when I tried to speed up startup, the main bottleneck
> isn't parsing the directory structure, but in reading from the hard
> disk (I helped rewrite dirlist.c). A better idea would be to just load
> the info to start playing, and then stream the rest of the directory
> structure while playing the current file.
>
> -Laine
>
A function could be added before before the dirlist_init() call in
main.c that could start save file to play in a simular way as
main.c:init_current_list_and_file(). Two new states would be needed in
the state machine INDEXING_PLAYING_AND_CACHING and INDEXING_PLAYING.
The hard thing to determin is how much indexing to do per pass through
the machine.
Keith
Does anyone know where I can download the source code for the latest
builds? David [www.davidgillham.com] used to have a link on his
website but it appears to be missing.
Bobby
--- In pjrcmp3dev@yahoogroups.com, "besjr69" <besjr69@...> wrote:
>
> Does anyone know where I can download the source code for the latest
> builds? David [www.davidgillham.com] used to have a link on his
> website but it appears to be missing.
>
> Bobby
>
Have you tried a CVS check out from Paul's CVS server?
http://www.pjrc.com/tech/mp3/firmware.html#cvs
Keith
I am looking for a programmer to port the code for a player to DOS> I
want to use a 386 single board computer to make an MP3 player with the
STA013. I need a program that can take the file from the hard drive
(with a command line in DOS) and stream it to the STA013. I have a 16
pin GPIO port available.
I will take care of the hardware. I just need someone, preferably in
the LA area but this is not mandatory, to convert some
micro-controller code to DOS for me.
Anyone out these got skills and needs a few hundred dollars extra?
Maybe even into 4 figures if they are good and can also read the ID3
tags and gves me the code to hook up an LCD to the leftover GPIO ports.
Dan Fraser
dmfraser@...
714-420-7535
--- In pjrcmp3dev@yahoogroups.com, "chuckles951" <chuckles951@...> wrote:
>
> I am looking for a programmer to port the code for a player to DOS> I
> want to use a 386 single board computer to make an MP3 player with the
> STA013. I need a program that can take the file from the hard drive
> (with a command line in DOS) and stream it to the STA013. I have a 16
> pin GPIO port available.
>
> I will take care of the hardware. I just need someone, preferably in
> the LA area but this is not mandatory, to convert some
> micro-controller code to DOS for me.
Are you at liberty to describe the hardware? It could help give
people an idea of how involved the software will be.
For instance, you might use the parallel port (built into most 386
motherboards, or?), and connect it to a shift register to serialize
the data stream (MP3 frame bits) for the STA013. You could probably
shim some kind of start/stop token into the stream to pass commands to
the STA013 as well. This would probably make programming a DOS app
pretty simple, notwithstanding the finnicky nature of parallel ports.
--- In pjrcmp3dev@yahoogroups.com, "colonwq" <keith.schincke@...> wrote:
>
> Hey Guys,
>
> I have finally gotten time to look at implementing an inorder sort for
> file listing.
I finally have free weekends again, so I hope to take a look at this
in the next little while. But first... I have to get a new HD.
--- In pjrcmp3dev@yahoogroups.com, "Bernie Pallek" <bmatthiasp@...> wrote:
>
> --- In pjrcmp3dev@yahoogroups.com, "colonwq" <keith.schincke@> wrote:
> >
> > Hey Guys,
> >
> > I have finally gotten time to look at implementing an inorder sort for
> > file listing.
>
> I finally have free weekends again, so I hope to take a look at this
> in the next little while. But first... I have to get a new HD.
>
I have gotten in order insert to work with the three pointers
available. Keeping track of the parent directory and going into
sub-directories is my remaining coding issue. This is slower than the
simple append to the end indexing that the player currently uses.
Also, while the current and proposed directory indexing code does not
have a subdirectory limit. The file_open_by_1st_cluster() is limited
to 64 file handles and will limit us to that number of sub-directories.
I have my new code ifdef'ed out right now and may commit it after I
clean some things up so that more eyes can look at the issues that
remain. Once I get the directory inorder indexing worked out, the file
indexing portion will be trivial.
Keith
I have commited some new code to the CVS server.
I removed the old tree based file browser code and related ifdef's.
I added my in order insert code for directories.The code will add new
directories in alphabetical order based on the stricmp() function from
the player. This is a case insensitive compare like strcasecmp(3) from
Unix. This code is ifdef'ed in with a DIRLIST_2 define in the
dirlist.c file.
The code is a little slower than the previous 'append to the end'
code. The old code took 26.6 seconds to index my 242 directories. The
new code took 27.6 seconds. Since most of my directory entries were
already in alpha order, the insert degraded to a link list walking to
the end with an append. I think a more random set of directory entries
will have less of a run time change.
I also think the new directory indexing code changed the way the
playlist code works. We may want to break the two operations apart:
build a directory/file tree and then walk it to build the playlist. I
may look at this later after I have had some time to think about the
issues.
I have also added a in oder insert of files to the dirlist.c file.
This code should work the same as the directory insert except I am
needing to use different addr[567] functions. It works for a few files
and directories and then it goes boom. I need to use a different combo
of theh addr commands I think. This code is currently ifdef'ed out but
can be enabled by defining FILELIST_2 in the dirlist.c file.
Let me know what feed back you guys may have on the code. I would also
like someone to try to help with the FILELIST_2 code.
Keith
Hey Guys,
I am getting a couple of simm_malloc errors on startup:
WARNING: malloc_blocks, block is already allocated - 00BE - 00BF - 01
Does simm_malloc return 0 or null if there is an error in malloc'ing
memory?
The PJRC library docs says that malloc_blocks will set the carry bit
if there is an error but it does not say what simm_malloc does with
that value.
Keith
Hey Guys,
I am getting a couple of simm_malloc errors on startup:
WARNING: malloc_blocks, block is already allocated - 00BE - 00BF - 01
Does simm_malloc return 0 or null if there is an error in malloc'ing
memory?
The PJRC library docs says that malloc_blocks will set the carry bit
if there is an error but it does not say what simm_malloc does with
that value.
Keith
Been a while since I posted here,
Just wondering if any progress has been made concerning the ocassional
propensity of the STA013 to come out of power on reset in a "hung"
state?
Dave August
Hey Guys,
I just commited updated and corrected code for my new directory
inexing code. My new update fixes a couple of cases where the
subdir_start and subdir_end was not being updated correctly. This
correctes some issues where the directory browsing would not display
some subdirectories or start someplace other than the start of the list.
Also, the updated code fixed a logic error where I would deref and use
a NULL pointer.
Files are still indexed in FAT order. The playlist is also still built
in FAT order. This means playing the harddrive in order may not start
in the first directory. I am working on a seprate playlist_init()
function that will be called after main.c:dirlist_init() and befor
main.c:playlist_purge_empty(). I am thinking of using code simular to
dirlist.c:dirlist_show()
Cheers,
Keith
Hey Guys,
I have commited some new code to the CVS. The playlist is built after
the harddrive is indexed instead of during the indexing process. This
results in the in order playing of the harddrive matching with the
directory index order instead of FAT order.
I updated the start up screens to display "Building playlists" while
the list is being built and empty entries removed. I will see if I can
refine the process to skip empty direcories.
Keith
Do you guys think it would be a good feature to delete directories
from the dirlist tree that do not have any MP3 or sub directories?
This would elimiate subdirectories from the file browser that do not
containe any useful information. Current, when you try to go into one
of these directories the code does not go into the directory and the
display stays the same. This could possibly give the impression to the
user that the UI code is broken.
This would be more code than just a simm_free as the deleted directory
node is part of a linked list.
How tight are we for program code space on the player with the current
CVS firmware?
Keith
anyone know of an ic that will take the 4 signals from the STA chip
and convert them to digital / coaxial out instead of analoge L+R like
the 4334 does ?
--- In pjrcmp3dev@yahoogroups.com, "colonwq" <keith.schincke@...> wrote:
>
> Hey Guys,
>
> I have commited some new code to the CVS. The playlist is built after
> the harddrive is indexed instead of during the indexing process. This
> results in the in order playing of the harddrive matching with the
> directory index order instead of FAT order.
>
> I updated the start up screens to display "Building playlists" while
> the list is being built and empty entries removed. I will see if I can
> refine the process to skip empty direcories.
>
> Keith
>
Does it make indexing faster?
--- In pjrcmp3dev@yahoogroups.com, "besjr69" <besjr69@...> wrote:
>
>
> Does it make indexing faster?
>
Doing the playlist after the indexing will speed the indexing by
removing the playlist calls from the index routine. It will not
shorted the startup to first song time because all of the same code
will have to be ran.
The indexing speed went from 26.something to 27.something seconds when
I added the in order insert. Since most of my hard drive is sorted
already, the insert degraded almost to the worst possible condition.
This always searching to the end of the list to find the insert
point.This leads me to believe the indexing speed is limited by the
rate at which data can be read in from the hard drive not the rate
that it can be processed. Even if we went to an external file index
file format it will still take a "long" time to read the file from the
hard drive. Any speed increase would be from making a smaller file
that contains all the data file the fat file.
The best way to speed up the current index speed is the reduce the
amount of printing to the screen/LCD. I have some code that can be
ifdef'ed in the CVS code in dirlist.c:dirlist_add_dir() that will
print a dot per directory processed instead of the directory full
name. I do not have the startup log in front me of how much faster it
increased the speed. I think it was a second or so.
Keith
Hi, I am at the soldering the parts (at step 10 of rev C), I dont have
XCS10XL, 87C52 and VP4-0060 and the SIMM too, but thats not a problem I
think.
The problem is that Im new to the programing (actualy I have a PIC
programer only (for pic14 & pic16 series), and just making a tutorials
for this microcontrollers (using very basics of assembly)...this was to
get the idea "where" am I at the programing, processors and
microcontrollers.
So, what I need to run the MP3 player? What parts need to be programed,
what hardware do I need? And so on...just to get the point what I have
to learn. Also if there is PDFs of these books it will be very kind to
share it!
Thanks a lot, and sorry for the bad english !
PS. If you wondering "From where these guy have the board in first
place" ? :) A friend of mine helps me to make it.
Hi All... I am new in this group and a senior student in the
department of electronics engineering..
My project is concerning a MP3 player with Nokia 6100 LCD display..
Can you suggest a micro- which powerfull to be sufficent to show jpg's
and also graphics and to play mpeg.s by the meaning MP3 decoder.. Or
do I have to do this project with seperate two micros..?? Is there a
micro in 8051 family that I know ( ex: 89C52 etc.. ) to be sufficent
or another family member u know??
Any idea.. ?
Thanks for replies..
I recently upgraded my PJRC Mp3 player from being a portable player to a fixed
piece of my home stereo system. It currently resides on my Laser Disk Player. I
have pics on my site of both completed units (the no longer existing portable
player and the now fixed player). I have a little documentation on how I
accomplished things and I will answer any questions to help others along as
well, if there are others still working on this projects. With the upgrade I
added a NAS board from an external HDD enclosure into my player and now have
access to my HDD from the Netwrok. I switch between the NAS and MP3 player
similar to how other have switched between the USB external HDD enclosures, by
only allowing one device to controll the HDD at a time with a set of relays.
Visit my site for more information, heres a link to my pjrc projects
http://www.stormscorner.com/ewb/?cat=22
I am next hoping to find a more stable version of the firmware. I think I am
currently using 0.6.90 and it seems a little unstable. I did this firmware
upgrade at least a year or more ago. And I havent been following the firmware
progress at all. Is there any and where are we?
I am hoping to narrow the scan of my HDD to only the MP3 folder seeming how I
will be storing other data on this drive. I will continue my conversation of the
firmware only the Development Group. I just wanted to share my project with
everyone. Sorry for the cross posting.
Jesse
Hello,
I am interested in making a device that has all the same parts as the
mp3 player and then some how add a digital video connection to this.
I want to start off making a device that can play mpeg audio and
video. After that works, I want to reverse the process and be able
to record audio and video from a source.
My ultimate goal is a basic portable PVR system (record & play) to
record digital cable coiming from my digital cable terminal to a hard
drive and be able to play it anywhere I want.
Has any thought about doing this? or has some ideas on how I could
add video to the mp3 player?
Thanks
Mike
I am just studying on this subject.. Your and my goal are almost same.. Ýts my final project in my Electronics Engineering education.. I dont know anymore but when I learn more, we could talk virtually.. And also, if u can find other information, I want you share them.. I ensure to share all information :)) Take care.. Bests for your study..
Ayhan AK
Mike Sawyer <sawyerm@...> wrote:
Hello, I am interested in making a device that has all
the same parts as the mp3 player and then some how add a digital video connection to this. I want to start off making a device that can play mpeg audio and video. After that works, I want to reverse the process and be able to record audio and video from a source.
My ultimate goal is a basic portable PVR system (record & play) to record digital cable coiming from my digital cable terminal to a hard drive and be able to play it anywhere I want.
Has any thought about doing this? or has some ideas on how I could add video to the mp3 player?
Thanks Mike
". ...~ ( AyhaNAK ) ~... ."
..All my best wishes.. ':.........: ' ..Mit freundlichen Gruß..
Im trying to limit my firmware to only search in a directory called MP3s. I have
a netwrok interface to my HDD and I am using it to store lots of other data. If
I could limit my firmware to just the MP3s directory it would reduce the
"searching for mp3s" time close to in half. I have been poking around in the
code a bit but Im not sure on where to find the part that deals with this. Any
info would be greatly appreciated. Thanks, Jesse...
--- In pjrcmp3dev@yahoogroups.com, Jesse Smith <stoi2m1@...> wrote:
>
> Im trying to limit my firmware to only search in a directory called
> MP3s. I have a netwrok interface to my HDD and I am using it to store
> lots of other data. If I could limit my firmware to just the MP3s
> directory it would reduce the "searching for mp3s" time close to in
> half. I have been poking around in the code a bit but Im not sure on
> where to find the part that deals with this. Any info would be greatly
> appreciated. Thanks, Jesse...
>
One way I think you could do it is to replace the
dirlist.c:dirlist_init() call to dirlist_add_dir(root) with a function
call that will work the same but will look though the root directory
for the MP3 directory and then call dirlist_add_dir() with that sub
directory. You might even replace the value of root dirent with the
values generated for the MP3 dirent.
I would try to work up some code for this but my Linux build
environment is in shambles right now.
I would recommend working with the code in the CVS tree instead of the
0.6.90 code. IMHO, the CVS has better options and may be more stable
for you.
If you get this to work for you, we could add this to the main tree
and add an option to 'Index /MP3 only'
Keith
I just purchased a usb to rs-232 adapter today and have been able to successfully communicate with my player.
I will be following the directions on the pjrc site for setting up my development environment. I havent messed with firmware in at least 2 years and that was only to modify my display messages. I wanted my screens to reference next album, artist or track for my organization of my mp3s is:
\artist1\album1\track1
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2
----- Original Message ---- From: colonwq <keith.schincke@...> To: pjrcmp3dev@yahoogroups.com Sent: Wednesday, December 20, 2006 4:00:45 PM Subject: [pjrcmp3dev] Re: Limiting the directory the firmware searches for MP3s
--- In pjrcmp3dev@yahoogro ups.com, Jesse Smith <stoi2m1@... > wrote: > > Im trying to limit my firmware to only search in a directory called > MP3s. I have a netwrok interface to my HDD and I am using it to store > lots of other data. If I could limit my firmware to just the MP3s > directory it would reduce the "searching for mp3s" time close to in > half. I have been poking around in the code a bit but Im not sure on > where to find the part that deals with this. Any info would be greatly > appreciated. Thanks, Jesse... >
One way I think you could do it is to replace the dirlist.c:dirlist_ init() call to dirlist_add_ dir(root) with a function call that will work the same but will look though the root directory for the MP3 directory and then call dirlist_add_ dir() with that sub directory. You might even replace
the value of root dirent with the values generated for the MP3 dirent.
I would try to work up some code for this but my Linux build environment is in shambles right now.
I would recommend working with the code in the CVS tree instead of the 0.6.90 code. IMHO, the CVS has better options and may be more stable for you.
If you get this to work for you, we could add this to the main tree and add an option to 'Index /MP3 only'
Sorry about the last message it sent before I was finished completeing the email. Im unfamiliar with the dagon hot keys in the new yahoo interface!
I just purchased a usb to rs-232 adapter today and have been able to successfully communicate with my player.
I will be following the directions on the pjrc site for setting up my development environment. I havent messed with firmware in at least 2 years, and my old environment has sense been deleted, and that was only to modify my display messages. I wanted my screens to reference album, artist or track instead of next directory or previous directory it would say next artist or previous artist and next album or previous album based on the configuration of my file storage format.
\artist1\album1\track1
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2
\artist1\album1\track2 and so on...
Anyway thats besides the point I would like to focus on that at a later time. For now I am only interested in setting up the code to search only the directory that my mp3s reside. Just sharing a little info on where I stand and where things might be heading.
Ill give a little more feedback in a few days when I have a little more to share.
Jesse
----- Original Message ---- From: colonwq <keith.schincke@...> To: pjrcmp3dev@yahoogroups.com Sent: Wednesday, December 20, 2006 4:00:45 PM Subject: [pjrcmp3dev] Re: Limiting the directory the firmware searches for MP3s
--- In pjrcmp3dev@yahoogro ups.com, Jesse Smith <stoi2m1@... > wrote: > > Im trying to limit my firmware to only search in a directory called > MP3s. I have a netwrok interface to my HDD and I am using it to store > lots of other data. If I could limit my firmware to just the MP3s > directory it would reduce the "searching for mp3s" time close to in > half. I have been poking around in the code a bit but Im not sure on > where to find the part that deals with this. Any info would be greatly > appreciated. Thanks, Jesse... >
One way I think you could do it is to replace the dirlist.c:dirlist_ init() call to dirlist_add_ dir(root) with a function call that will work the same but will look though the root directory for the MP3 directory and then call dirlist_add_ dir() with that sub directory. You might even replace
the value of root dirent with the values generated for the MP3 dirent.
I would try to work up some code for this but my Linux build environment is in shambles right now.
I would recommend working with the code in the CVS tree instead of the 0.6.90 code. IMHO, the CVS has better options and may be more stable for you.
If you get this to work for you, we could add this to the main tree and add an option to 'Index /MP3 only'
Hi
I Have a PJRC mp3Player , and change my hard disk to 80Gb(Toshiba
MK8032GAX). I Copy About 38Gb Mp3 file (about 12500 Music) , After I
start it I See "Out Of memory" in Hyper terminal And stop .
What Can I do ?
What is the maximume Number Of song and Directory Level ?
Thanks for help.