So the cat’s out of the bag.
My friend Julie and I are working on a new Tumblr app we’re calling Tumblr+. I’m handling most of the development, and she’s handling most of the design / PR, but I’ve decided that I may as well make a post.
Right now we’re working on the android app, because it’s less of a hassle being on Windows / Linux. An iOS port is planned, and we’re trying to come up with some ways to get it done, but we’ll worry about that later.
Android development was going to be with C#, but Java turned out to be easier in the long run because Xamarin wants all my money.
Release is still a long while away, but there are plans to do an open source git for everyone out there who wants to do a build from source. Other than that release plans are still shaky but here’s the plan. Early adopters will have a chance to grab the app for free, no adds, no gimmicks, if you download early, it’s yours forever. After a month we’re going to put a $1.00 price tag on it, and then release the source code to the world with a GPL license. You wanna build it and put it on your phone? Go for it! You’ll have to rebuild for each update, but we won’t make you pay for the builds you create yourself, so long as you’re not selling or redistributing it.
This will probably lead to piracy, but whatever. Not everyone can constantly be buying apps, but it’ll be super convenient and cool of you to buy the app.
At least that’s the plan for Android. iOS is again far off the horizon, so we’ll figure out what we do then, but that’s about all we can share.
This is all very WIP and not rock solid yet, but it’s getting done. If we keep going like this, we might be able to release a beta around christmas time, but don’t hold us to that.
If you’re excited or have suggestions, let us know! We’re interested in people telling us what they do and don’t like about the current tumblr app so we don’t make the same mistakes.
Not gonna lie, I’ve hit a bit of a road block with Sinfonia32. VLCDotNet is great for windows, but I don’t see a way for me to properly use it in Linux or MacOS. At least not the way it is. I’ve been playing with it for a few hours, and while I may just need to rebuild some source code to edit the paths correctly, it’s quite a pain. I can’t load .dlls on runtime in MacOS or Debian Linux, I have to have native libraries. Now with MacOS there are libraries inside VLC.app, no problem to get them, it’s just that VLCDotNet isn’t built to look for them or use them appropriately. Frankly the task of rebuilding a lot of that type of code is a bit daunting.
So I’m not sure what to do right now… It’s kind of sad. I’m going to poke at it again either later today and/or tomorrow, and then if I still can’t get anywhere with it, I’ll put it down for now. I may just have to plan to rebuild the project again in C++ when I get more comfortable with it. Not that Visual C++ is really very fun to play with, but it may be a bit better to compile in other operating systems. Only problem I see here is getting a cross platform GUI library for C++. I know it exists, I just am not really familiar with any. That’s a luxury I have with C#; Mono is awesome.
If things don’t go my way, I’ll be playing around more with my synth project. I’d like to get more cross platform to begin with, and use GTK# for the GUI, and I need to double check NAudio on Linux and MacOS. Then I’ll get started hammering out some real code for that.
Wish me luck I guess…
Gonna keep this post a bit shorter.
Hopefully that image isn’t too big. I know the form still says VLCTest, but don’t get confused. Sinfonia is slowly being rebuilt from the ground up. Frankly, it’s going faster than I thought it would. Considering I’m learning C# and Windows Forms virtually from scratch, I’m pretty proud. Still a lot to do though. Gotta play around with loading whole folders, keeping data on the computer, getting the duration bar working, and getting some forward and back buttons going.
What do you think of the color scheme? I’m not super fond of it, but it’s not super boring to look at now.
VLCDotNet isn’t as easy to work with as I’d like. It’s doing fine in this project, but I don’t think it’s gonna hold up for the Windows 8 App. The SDK for that is built up around Silverlight, and there is a Silverlight library in VLCDotNet, but the Forms .dll is absolutely useless. I probably just have to build it from source again… VLCDotNet isn’t quite VLCJ, but it’s doing okay. I Should try VLCSharp from the guy who made VLCJ… I meant to check it out, but got a bit busy working on this.
Incoming Wall of Text (it’s not that bad I swear)
It’s been so long since I’ve posted anything here I can hear the echo. I wish I meant that in a metaphorical sense. But yes, I’ve returned, not that anyone cares.
I guess I’d like to christen a new project of sorts. Although I’m a game dev student, and I have a lot in the works there, I’ve been big into audio work lately. As a musician, I guess I’m just drawn to that sort of stuff. I have 3 big projects in that area.
1. Synth32: a 32 bit music / sfx synth playing off the strengths of Famitracker and AS3SFXR in a spiritual sense, while upping the bitcount to 32 (ideally able to be tuned down to 16 and 8 bit). NAudio is a great library for this sort of stuff, and I’m going to be learning a lot about it in the next few weeks, as that’s what I spend a lot of time on in my programming class’s downtime. Nothing really to show for what little work I’ve done on it. NAudio is something new for me to learn. This may be part of a thing I’m doing for work, so this will probably come first. I tend to work on things when I get paid for them.
2. Sinfonia: It’s back baby! Or, it never really died is a better way to put it. JSong culminated into a rough VLC based music player. Nothing great, but nothing to sniff at for 3 months of work. I’m planning to start working on it a bit more, but not in Java. My high level language of choice right now is C#. Mostly because I’m sick of the JVM, and I like my binaries. I’ve been spending more time working on playing with WinForms then using NAudio or VLC for playback. I still need to make up my mind on my audio library. It will probably end up being NAudio just because I want to keep my library count down so as to keep my head somewhat adjoined to the rest of the walking corpse I call a body. Not sure if I’ll be getting a whole lot of this done anytime soon, but it is on my radar. Also, http://tubartist.tumblr.com, a friend of mine, will be helping me with some of the design and art for the project.
3. Now I’ve switched to Windows 8, and all things considered, I’m not having an awful time with it. Not as great as Windows 7 was when it came out, but a few tweaks and Windows 8 has been a great experience. I’ve also noticed that my 66 year old dad has taken very well to the new Metro interface, which was not expected. I digress, one of the things I’m interested in making is a music player that doesn’t suck for Windows 8 and RT. My big quip is that library management is piss poor in the default music player and Multimedia 8 or whatever that app is, not to mention that there is no internal volume control, only hardware volume control which sucks for us desktop users. Now, I’m not a huge fan of the Windows 8 store, but I have a bit of a workaround for it. People with Win8 Enterprise or Pro can turn on the ability to run unsigned apps, and Windows 8 and RT users can edit a reg value to get it to work. Also, getting a free dev license will allow you to build from source. Plus given the fact that there will be a hacked app store within the next few months, I don’t think there’s a whole lot to worry about in that regard.
Just in case anyone is worrying (no one is). All these projects will be open source and cross platform, with the exception of my Windows 8 project. That one can’t be cross platform, but it can be open source, and I will aid those who want to bypass the appstore.
I hear some of you cry (I wish), “Why no Java?” Well frankly, it’s not that I don’t like Java, I think it’s great. But aside from the other reasons, a lot of the work I want to do is revolving around C# these days for school. Next quarter I’ll be working in C++, so we’ll see what happens then, because I really want to get into C++ and OpenGL/SDL to get working on some nice low-level goodies, but that’s some time off.
The biggest struggle for me here is going to be that I need to learn a lot to complete any of these projects. We’ll see how they go, but I’m dedicated to at least finish one of them. Syth32 will probably have one time of the day for me to work on it (bored in class), while Sinfonia and Win8Player have other random times in the day to keep me working. Lets hope I don’t drive myself insane. I got like, 3 hours of work in on them today along with 5 hours of classes, so I think that this could work out. Just gotta keep myself working instead of gaming.
I’ll probably be updating the sticky post and sidebar accordingly in the next couple days. Someone please slap me if I forget.
In other news, Caravan Palace is a great band, and you should listen to them if you like french-jazz-gypsy-electronic music. It’s really good.
My Keyboard is so sore right now.
Work has been killer, I’ve had very little time to do much of anything, and I’ve been scrambling to get myself together for school.
May not look very different, but here you go:
Ok, so what’s new?
First is the fact that the sidebar now has a function. It will load up everything in that folder. Clicking on root will refresh the whole table, and all music will be available.
Second is the new way that data is written. A JSON file is generated on startup and it keeps track of:
Songs that have been imported
File structure from imported songs
I also added a “Clear All Music” button. More for debugging than anything really, but I think it’s pretty handy.
It’s still pretty buggy. Nothing major, but I need to play with it more before I can really start fixing up some of the quirky little bugs and misplaced features.
You may also notice that I have changed the name to Sinfonia. It’s still kind of experimental, but on this blog I will still refer to the project as JSong. No Sinfonia tag until release, which is still really really far away.
So where do I go from here?
Besides bug fixing and testing, I’d like to get a custom color scheme going, along with some custom images. While I have no art skills, I have a friend who may be doing something for me, but If anyone wants to suggest a layout change / color scheming, feel free to let me know what your ideas are. If I think you have something cool, I may ask you to do some sketches or something. I don’t know, I’m just kinda playing it by ear.
If I don’t get anywhere with a color scheme or anything like that sometime soon, I may just put up a separate post asking for some help.
Back to work. I’m running on Coffee and a Fajita.
Lets just get this out there, I DID NOT FINISH THE REWRITE. I’ve been working for 8 hours straight today, and while there were not many complications, I did not keep the original very well documented. I’m making sure to fix that in the rewrite.
Another disclaimer: THIS IS JUST FOR LOCAL FILES. I know I’ve promised Grooveshark and Last.fm support, but that’s coming in the future. I’m only one amateur programmer with a job programming java and a steam library full of games.
What you’re getting is what you’ve seen in the latest screenshot. I’ve provided various executables as well as my eclipse project with the mercurial settings removed (I hope). I was going to just do a bunch of direct downloads, but I figured I’d host on sourceforge. I’m not going to be moving any blogging there, but that’s another place where I’ll handle support. Right now it’s just for downloads and support. I may add mercurial there later, but we’ll see. Right now I have 5 .rar files (if you don’t have winrar, let me guide you to it; don’t worry, you don’t actually have to pay for it)
Here is the link to the sourceforge downloads page:
As of right now, I’ve been uploading and putting off this post for an hour. The last 2 packages are on their way. Remember: Linux x86 / x64, Windows x86 / x64, and the eclipse project. No raw source (it’s in the eclipse project; super easy to find) and no Mac OS build because Apple.
Please let me know what you think, and don’t be afraid to ask a question here if you need some help / have a suggestion.
Have a lengthy request / help request? E-mail me at:
Obligatory screenshot of progress:
I made it larger. Yay. I found that it was really starting to run out of space, and that was a problem. You’ll also notice that I got a working directory browser there in the right. I guess I can talk about the fun I had with that.
Now most people would probably just want to use a DefaultTreeModel. It allows you to scan a root directory, and create a JTree with all the nodes you could ask for. However, I needed these nodes to have special properties. So what I did, is I have a DirectoryPanel object. It creates a JTree and a root node with the name Music. Then, when you scan a directory, it places a node structure based on the name of the file/directory and its parents. IE it scans for the mp3, and then scans its parents upwards. It actually works pretty fast all things considered.
Each node has an assigned vector with 3 objects:
Location/MRL (needed for playing VLCj to play things)
All of these vectors are in an array list so I can easily access them. Once I get this interfaced with JSON I will have one text document that is parsed by multiple parts of the program. Right now the directory panel doesn’t save itself, and it doesn’t do anything other than display the file structure. I will not be changing that. Why?
Well to be frank, JSong needs a rewrite, and a new name. Why the rewrite? Well two things need overhaul. One is the way that it scans directories. Right now, I’m trying to scan my C: drive, and the window has turned black. This kills the computer (luckily this is only a joke). The other thing is that right now the directory browser and the table are out of sync. I’m going to get these in sync by storing necessary data inside a JSON file. I also need to get the scanning activity in a SwingWorker thread.
Why a new name? Well, JSong is nice, but I see enough J’s as it is working with Java. I was thinking about calling it Cacophony, as I like the sound of it, but it kind of has negative connotation to music. I randomly came up with the name when I was fooling around with MonoDevelop. (.Net is a pain in the ass by the way) Got an idea for a name? If I use it I’ll credit you somewhere for it.
The rewrite should probably only take a few hours, so I may have it up by the end of the day. If I don’t have a rewrite done, I will release a Pre-Alpha release here. I’ll include source as well as executable JARs for Windows and Linux. Mac OS is still a problem so if someone knows how to counteract the whole JAWT_GetJAWT failed issue, let me know.
I’ve written too much and I need to get back to work. You’ll be hearing from me in the near future.
While I didn’t fiddle with the layout or fix the duration bar && || directory browser, I did get to abandon MP3SPI usage for gathering Time metadata from songs. That means I can get all the metadata I need from VLCJ, which works with just about every file format. This means I will actually be opening up the file search system to check for more than just MP3s. Want to listen to FLAC or for some god awful reason WAV? Go ahead.
Enough rambling, here’s what you want to see / have already seen:
On a side note: I really like The Wombats, that is all.
Now the only bug here is that if a song has a time of something like 4:09, it will be displayed as 4:90. That’s now how minutes and seconds work. Even though I have eclipse open right now, I’m a bit to lazy to apply String.format() to the time. Damn it I’m tired. Tomorrow I’ll try to get the duration bar done before I head down to work. Now that I can get the total time of a song, it should not be that difficult.
Oh, and props to Mark Lee, the creator of VLCJ. I e-mailed him a question and he got back to me in a few hours. I really respect that, and if anyone of importance is reading this, either follow his model, or at least use VLCJ in your projects. It’s pretty neat. Anyway, back to The Wombats.
I like to release in a few ways.
One is just a direct download of my eclipse project folder and any required libraries.
Another is a link to a mercurial repository (I like it when people do this, but I only have private repos for now)
I also like posting stuff to pastebin because it’s easy to access for anyone, and it has fantastic syntax highlighting.
Honestly, direct downloads are usually the easiest for everyone, but I can see why some people like it when people use SVN repositories and Sourceforge to release projects.