HN user

av500

1,394 karma
Posts49
Comments124
View on HN
techcrunch.com 5y ago

What3Words legal threats about open source Whatfreewords

av500
9pts0
github.com 9y ago

IBM model-M keyboard sound emulation to annoy co-workers

av500
94pts165
medium.com 10y ago

Ask for it – my experience from being a woman in tech

av500
2pts0
android.googlesource.com 11y ago

Toybox lands in Android AOSP

av500
2pts1
twitter.com 11y ago

#bentgate

av500
1pts0
plus.google.com 12y ago

Android AOSP maintainer quits

av500
328pts227
www.fosspatents.com 13y ago

Nokia is suing HTC, claiming VP8 infringes their patent

av500
3pts0
www.businesswire.com 13y ago

Google licenses VP8 patents from MPEG-LA

av500
109pts86
airlied.livejournal.com 13y ago

Raspberry Pi drivers are Not useful

av500
7pts0
pastebin.com 14y ago

Linux in 2015

av500
2pts0
www.freesoftwaremagazine.com 14y ago

The H264 time bomb will kill us all in 2015, run

av500
19pts10
translate.google.com 14y ago

Apple is being sued over "Memory" game trademark in Germany

av500
2pts0
lkml.org 14y ago

Simultaneous cat and external keyboard input causing kernel panic

av500
11pts3
blog.alsutton.com 14y ago

Microsoft/Nokia even fail to staff a WinPhone7 dev event with competent speakers

av500
4pts0
www.engadget.com 14y ago

Grid10 is a fail

av500
2pts0
h30565.www3.hp.com 14y ago

Google should asset strip and re-sell Motorola ASAP

av500
2pts0
www.streamingmedia.com 14y ago

MPEGLA says VP8/WEBM violate at least 12 patents

av500
5pts1
www.asymco.com 15y ago

Finally we can stop pretending that itunes helps the music industry

av500
3pts1
plus.google.com 15y ago

Mark Zuckerberg is on Google+

av500
2pts0
www.google.com 15y ago

a patent on "godly powers" published in 2007

av500
1pts0
current.com 15y ago

Finally: Japanese scientists create touchable holograms

av500
7pts3
compression.ru 15y ago

X264 wins yet another codec shootout, webm makes notable appearance

av500
4pts0
twitter.com 15y ago

MS want to buy Nokia Mobile division.

av500
2pts0
nenolod.net 15y ago

Motorola makes the Sony PS3 mistake as well

av500
2pts0
www.h-online.com 15y ago

OpenLogic survey: 71% mobile apps with FOSS code do not comply

av500
2pts0
www.engadget.com 15y ago

Nokia marries Microsoft

av500
62pts8
www.ti.com 15y ago

TI announces next generation ARM A15 mobile phone chip OMAP5

av500
1pts0
lists.mplayerhq.hu 15y ago

FFmpeg switches to git

av500
1pts0
parliamentfights.wordpress.com 15y ago

Http://parliamentfights.wordpress.com/

av500
2pts0
www.intellectualventures.com 15y ago

Myhrvolds IP outfit starts suing security and silicon vendors

av500
1pts0

BTW, the original motivation to write that code was a bug in an early version of the DSP chip, it would produce a loud "click" each time the MP3 data stream stopped or started. so instead of stopping the stream I would either play a file (processed as per above) or if stopped or paused repeately insert a frame of "silence" that I encoded for every possible sampling frequency. luckily total silence is a really short frame to store

MPEG layer 3 (MP3) differs from layers 1 and 2 in the fact that the frame data for a given audio frame can be spread out over several consecutive MP3 frames, that makes the stream effectively VBR (variable bitrate) even if the total bitrate is fixed at e.g. 128kbit/s. due to that you cannot simply cut at MP3 frame boundaries.

I wrote code to on-the-fly and in-memory convert a fixed bitrate MP3 stream into a variable bitrate one with differing frame length for each frame, adding padding data if needed to adhere to the allowed standard frame sizes. Once I had that I could drop or repeat MP3 frames, thus making the music play faster or slower. Since the reconstruction filters in MP3 decoder where already working across frame boundaries, they would also help to smooth over the artificial transitions introduced by this.

This works nicely up to a speed change of +/- 10%, going much slower would e.g. noticeably double snare drum hits or other percussive sounds.

of course you can also reassemble the frames in reverse order, I have a prototype MP3 "DJ" player where you can use a jog wheel to scrub forwards and backwards through an MP3 file without decoding it.

there, my secret is out :)

true, but as said below, I was a bit green at that time.

what we did have was that we would remember a song not by its full path which could be like 256 bytes long, but by only 8 bytes, so when we read in an playlist, we would convert each file path into these 8 bytes and use them to retrieve the tracks later. that made parsing playlists "slow". Rockbox did access the playlist as a file, so they would only resolve the path when the next song was needed, but then they had the time and leasure to write a Posix like file API whereas we moved in a hurry and used a much more primitive block based approach. this was also born out of the fact that our design initially had only 128k of RAM and a larger SDRAM for buffering while the drive is off was only added later...

I was more upset that Archos took our original design with a 4 line LCD and a rotary encoder and reduced it to a single line and U/D/L/R buttons - missing the whole point of "all" your music with you, thus needing a way to browse it fast...

basically the "mp3 player engine" that was used by Archos (and a few other companies at that time, TerraTex M3PO, SSI NEO25/NEO35) was our first project out of high school, so the code is pretty bad looking at it today :)

I was never angry about the fact that people preferred the alternative, given that with Archos we were running at breakneck speed to release a new product every year, constantly piling on more features for better or worse. there was little time to look back and reflect :)

not in code, but I think I answered a few questions. there was also the fact that another MP3 player I was involved in, the Terratec M3PO had a feature to change the MP3 playback speed and the Rockbox people wondered for years how we did that on the limited DSP that it had (same as on Archos products) - took them a long time and some hints to figure out :)

the problem with global shuffle was that you could have a LOT of music on the device, thus for a global shuffle you would need to hold an index of ALL the music in memory, and I did not like that.

Also, I was never a SHUFFLE ALL type of person myself since that would mix way too different styles of music for my taste - even today, I mostly listen to an album at a time

I "caused" Rockbox, being the original firmware developer for the Archos Jukebox 6000. apparently the firmware I wrote was so bad around playlist handling and our CEO unwilling to open source the code so that the boys and girls wrote their own.

at times it was one of the rather large open source SW projects in terms of users, developers, testers, translators, doc writers. I'm kinda proud to have caused that :)

AMA

"...and its very difficult to be the leader when one is on one side of this split and the other tries everything to push me out..."

that the gist of it, it's always the other side wanting him harm. he never ever acknowleged any wrongdoing on his side.