Thursday, August 30, 2012

Embedded Playlist.com Playlist (oops) for the Chopin-Transformed Project:

Prior to June 2012, you could embed a playlist.com playlist on a website and reference the playlist without leaving the original website (traditional flash-player type widget).   

There should still be a way to embed the playlist, since the playlist.com site is supposedly now HTML5, but the reference site would have to support the HTML5 player, etc. 

The playlist.com site support forum just writes that it is "restricted"; I'm not sure if this means can't be done at all, or if you have to get your own HTML5 widget code; maybe they just don't want to answer questions regarding how to do this.

Meanwhile, here's the playlist.com playlist I created for the Chopin Preludes, so that I can play from anywhere to listen and get ideas for the KP5-Album "Chopin Transformed" project.  I'm looking for other options to embed.

Playlist.com Chopin Preludes 

Listen Anywhere:

Wordpress peddling their HTML5 widget friends:

In June 2012, Wordpress also updated their blog with instructions for embedding HTML5 MP3 player in the WordPress.

WordPress HTML5 MP3 Player with Playlist


  • This is really an advertisement to buy the code from svnlabs for $25 because it prompts through the playlist creating process to save in proper XML format, etc.  But at least we can see how people would use this. 

Get To The Source:

jPlayer, HTML5 Audio & Video for jQuer

OK, this looks promising.... with this demo of the audio player.
  
No wonder the worm is so happy!

Back To My Current Streaming and Embedded Playlist Issues:

  • To stream audio from blogger, I tried to store the .mp3 files on Google Drive, but Google Drive blocks streaming audio. So, I can't use Google Drive as a .mp3 file repository and stream audio.
    • Google obviously has to cover their ( \ ) and assume that all .mp3's are stolen goods... I'm creating my own content here!
    • Why can't Google allow G Drive streaming just for Blogger?
    • Google really needs to catch up to WordPress on media support.
  • I created a DropBox account to stash my files in a public folder. Now I can stream from there. (Thank you, DropBox!) 
    • I couldn't use Amazon Cloud Drive, because there are no public-share settings.
    • On a side-note, DropBox has two-factor authentication via your cell phone now, and I immediately set that up.  Way to go DropBox! Other websites need to follow this lead; this is one way to get control of our personal security again in the cloud. Passwords are not enough!
  •  I could also use my Indaba Music account to store the files, but I won't do this unless this turns into a more lively collaboration project.
  • I understand that MixPOD.com is another option for an embedded playlist, so I'm going there next to try my Chopin playlist.
  • Here's the code I'm currently using for DropBox streaming for my project files:
    •  EHOW article
    • Google has an audio flash-player, at least.
 

Wednesday, August 29, 2012

KP5 = Chopin Preludes (Opus 28) Transformed



The goal of this project is to re-imagine and re-interpret the Chopin Preludes with a combination of piano, violin, and synthesizer elements. This project was suggested by my brother, Rex Baker, who will contribute piano parts and composition ideas, while I will be adding violin, synthesizer and mixing.

Why Chopin Preludes?:

 Chopin had an interesting creative life, and the Preludes were the short and sweet pieces from an interesting early development period. They included every key, so there are 24 unique pieces. This 24 piece approach is fertile ground for imitation and inspiration. If Chopin were to suddenly re-appear and wish to refresh his style, this is the imaginary scenario we are working on. Classical music transformed. 

What is the expected result?:

 It's is difficult to predict the output of this project, but it will be interesting to hear violin added to a Chopin framework if nothing else. The pieces will be inevitably longer than the original, the piano parts will change dramatically, and hopefully the pieces will be interesting for both intellectual and emotional attributes. There is no intention of keeping true to Chopin for style, precision, melody, or mood. We are "jamming with Chopin", and we hope those who love Chopin's music will find enrichment. 


Workflow Ideas:


1. Analyzing for Compositional Ideas:

Take each piece one at time, and in no particular order, and analyze, improvise, and synthesize ideas from the original. Find at least one element in the original piece that inspires or evokes ideas as a starting point for further development.

For example:
  • Simplify a run into a chord pattern.
  • Embellish a phrase.
  • Change a phrase to a rhythmic pattern, and keep some of the notes.
  • Sample the original to turn into beats.
  • Develop interesting harmonic relationships between piano and violin.
  • Keep the mood, key and tempo, but change everything else, etc.
    • Change different variables, like a math problem.

2. Simplified Workflow for recording piano, violin, drum, synthesizer parts:
  • Note key signature, tempo, and analyze chord information using CAPO app (Mac OS X 10.8 machine). 
  • Import original into Logic as a "header" track after setup project with original tempo.
  • Setup cycle recording for violin track after the "header" track.
  • Copy the original in the violin track cycle region.
  • Record multiple-takes of violin, synth, piano, etc, with original track to explore ideas.
  • Isolate violin-track and record additional synth, piano, and/or drum ideas without the original piano track.
    • This is a combination of composing and mixing.
  • Post and share for comment and input.
  • Apply the analytical process outlined in 1. and select elements to explore further. Make outline, mind-map, flow-chart, etc. if helpful.
  • Create a new project for re-composing based on draft mixes, new tempo, and analytical ideas.
  • Recreate, re-record, as required.
  • Include guest-collaboration tracks if possible. 
  • Prepare final mix.
  • Post and share for comment and input.
    • Create a YouTube video, for example. 


Examples from Prelude in C-Maj (recorded 9/28/12; starts with original track as a "header" first, then goes into violin + original

chopin-remix-opus28-1-Agitato-Cmaj-violin-v1.mp3


*Play 1


*Play 2

 
*Play 3


*Play 4

Thursday, August 23, 2012

Development Tools for Javascript - Reference Guide

Development Tools for Javascript:

NOTE:   This is reference document compiled from the embedded links. All credit is given to the original sources; this document does not contain original writing. I will be making further comments about these tools as I begin to evaluate or use in any upcoming projects. I've started a JAVA-based Algorithms class on Coursera and I will be focused on JAVA and Python for the next few months.


pyjs is a Rich Internet Application (RIA) Development Platform for both Web and Desktop. With pyjs you can write your JavaScript-powered web applications entirely in Python.
pyjs contains a Python-to-JavaScript compiler, an AJAX framework and a Widget Set API. pyjs started life as a Python port of Google Web Toolkit, the Java-to-JavaScript compiler.

What is pyjs Desktop?
pyjs Desktop allows the exact same Python web application source code to be executed as a standalone desktop application (running under Python) instead of being stuck in a Web browser.
For Free Software platforms, most Linux Distributions now come with pyjs and pyjs Desktop pre-packaged: Debian/Testing, FC13, ArchLinux and Gentoo.
For Windows, pyjs Desktop uses MSHTML. Since MSHTML comes pre-installed on Windows (as part of IE), there is very little extra to download (other than Python itself).

Why should I use pyjs?
You can write web applications in Python - a readable programming language - instead of in HTML and JavaScript, both of which become quickly unreadable for even medium-sized applications. Your application's design can benefit from encapsulating high level concepts into classes and modules (instead of trying to fit as much HTML as you can stand into one page); you can reuse - and import - classes and modules.
Also, the AJAX library takes care of all the browser interoperability issues on your behalf, leaving you free to focus on application development instead of learning all the "usual" browser incompatibilities.

 
9 JavaScript tools aimed at easing development
Once considered a script-kiddie toy, JavaScript has become a stalwart scripting language for developing Web applications, and vendors and open source organizations alike are pushing out IDEs and tools targeted at making JavaScript development easier and more reliable.
These tools move beyond familiar JavaScript technologies like jQuery and the growing set of JavaScript libraries to provide Web developers with a plethora of functionality, including debugging and support for HTML5 and other popular scripting languages.
Here is a look at some of the more compelling tools and frameworks for taking your JavaScript Web development projects to the next level.

ActiveState Komodo IDE 7
ActiveState Komodo IDE 7 supports JavaScript development, in addition to other popular Web development languages like PHP, Python, and Ruby. Version 7 backs the Node.js server-side JavaScript environment, offering such capabilities as editing, syntax-checking, code intelligence, and debugging. Support for CoffeeScript, which compiles to JavaScript, is featured, too. Improved syntax checking in Version 7 enables developers to check JavaScript or CSS within HTML.

Appcelerator Aptana Studio 3
Appcelerator's Aptana Studio 3 is an open source Web development IDE that supports JavaScript, HTML, and CSS Code Assist, to aid in authoring. Integrated JavaScript debugging is offered, as is debugging for Ruby on Rails applications. Other features include support for HTML5, Git repository integration, and the ability to customize the IDE. Aptana Studio can be installed as an Eclipse IDE plug-in. Appcelerator, which recently acquired Aptana Studio, also offers the Titanium Studio IDE, which provides similar functionality.

4D Wakanda
4D Wakanda is a JavaScript development platform for building Web and mobile business applications. The included Wakanda Server features a datastore for housing application data and models, and it's run by the WakandaDB NoSQL object engine. WakandaDB leverages JavaScript and classes for an application's business logic. Also featured are Wakanda Studio (a visual designer and code editor) and Wakanda Framework (a client-side framework comprised of interface widgets for the browser front end, a data source layer, and a data provider to communicate with the server).

dotCloud JS
The dotCloud JS software development kit is for building Web applications rapidly with JavaScript and HTML. Applications built with dotCloud JS can be deployed on the dotCloud PaaS cloud. Developers gain access to a selection of cloud APIs without having to write back-end code or deal with servers. APIs access capabilities like data storage and real-time data synchronization. Integration with Twilio and Twitter APIs is also featured. Developers can access 14 cloud services via dotCloud JS. A software stack based on Node.js, MongoDB, Redis, and WebSocket is included as well.

Copy the following lines and start hacking!

dotcloud.ready(function(){
  // your code goes here!
});

Telerik Kendo UI
Telerik Kendo UI is a framework for building HTML5 and JavaScript mobile applications and sites. It incorporates adaptive rendering and leverages JavaScript, HTML5, and CSS3 to adapt a mobile application's native look and feel on any smartphone or tablet while supporting all major browsers. Controls and widgets for building iPad user interfaces are also part of the tool. Kendo also features themes, templates, and an MVVM (Model View View Model) framework.

SproutCore
 The open source SproutCore JavaScript framework is intended to enable development of Web applications with less code. SproutCore applications move business logic to the browser to provide immediate responses to users' taps and clicks; there is no need for round trips across network connections. A binding system is featured for building data-centric applications, leveraging application state and data flow descriptions. Semantic templates allow developers to write HTML and CSS that automatically update when models change. An in-memory database is provided for managing and querying data and synchronizing with a server. Applications build a directory of static assets that can be deployed to any server.

Alpha Five v11
The Alpha Fire rapid application development tool is aimed at building AJAX business applications for Web and mobile devices. Developers can include charts, graphs, and analytics in their applications, enabling users to summarize trends. The tool features JavaScript classes and libraries, and it supports jQuery. JavaScript is generated for the developer, enabling usage by those who are not able to write the code. The tool also leverages CSS3.


Eclipse JavaScript Development Tools
 The Eclipse JSDT (JavaScript Development Tools) is a set of plug-ins for Eclipse aimed at supporting JavaScript application and Web development. JSDT adds a JavaScript project type to the Eclipse Workbench, along with views, editors, wizards, and builders. The tool set features JSDT Core, including a parser and compiler DOM; JSDT UI, with user interface code to create the JavaScript IDE; and JSDT Debug, for debugging JavaScript using Rhino and Crossfire. Also featured is JSDT Web, which supports client-side JavaScript implemented in the Eclipse Web Tools Platform's Source Editing project.

Oracle NetBeans IDE

Oracle's NetBeans IDE supports error-checking for JavaScript, CSS, and HTML, including JavaScript 1.7. The editor also recognizes JavaScript and HTML in XTHML, PHP, and JSP (JavaServer Pages) files. Browser compatibility is provided when developers specify browser types and versions in the JavaScript Options panel. The IDE features an AJAX-ready environment for choosing a server-side scripting language like PHP or Groovy, and integration is enabled for third-party JavaScript toolkits and Web frameworks. Code completion and integrated documentation for JavaScript toolkits like JQuery and Script.aculo.us is provided via the NetBeans JavaScript editor.

Beyond jQuery: 17 JavaScript tools for the HTML5 generation
 jQuery sure seems to be everywhere, and with good reason: Its creators took all of the neat ideas from libraries like Prototype, Dojo, and Yahoo's YUI, then turned them into something easier to use. When jQuery nurtured a fertile plug-in culture, the library became irreplaceable.

In the midst of all of this success, it's easy to forget that plenty of other JavaScript libraries are worth checking out. Some do much the same thing as jQuery, simplifying the basic chores of manipulating the DOM, while offering their own advantages. A number of other libraries offer newer features -- for animation, data visualization, or other niches -- or different ways of thinking about life in the browser. Here are 17-plus JavaScript libraries worth adding to your toolset.


YUI (Yahoo User Inferface)
The Yahoo User Interface Library was one of the first big, cross-browser toolsets released as open source, and it remains one of the biggest and most fertile. Yahoo started version 3 in 2009, and both versions 2 and 3 continue to get better. The collection of charts, widgets, and other tools has more variety than almost any other JavaScript library. Yahoo has also devoted more attention to cosmetic issues than some of the others. Many of the features that drive Flickr and Yahoo Mail are here, and are waiting for your glue code.

Mashi
One of the stated goals of HTML5, at least for some groups, is to replace the Flash plug-in, the gold standard for making sprites and letters dance across the screen. This change is slowly coming as the game industry and the presentation industry start to duplicate some of the sophisticated tools available in the Flash universe. Mashi is an impressive example of how the sprites can be set in motion. It offers more than several dozen standard easing functions for moving sprites along a timeline.

MooTools
Like jQuery and YUI, MooTools offers nice, browser-independent shorthand for manipulating arrays, divs, spans, and whatnot. My favorite part continues to be the custom library construction tool that lets you select the functions you want. Check some boxes and get an entirely optimized version of MooTools with just the functions you need and none of the bloat you don't. That's lightweight.

pp3Dico
The list of game engines for the browser is long and growing longer now that the JavaScript canvas object is better established and relatively consistent. The results don't look as nice as Flash to my eyes, but I suspect that the gap will close dramatically. If you like board games, you'll like the three-dimensional, orthographic views of game boards from pp3Diso. It takes just a few lines of code to set them up.

VideoForEverybody
In theory, nothing could be easier than sticking a video tag into your HTML. In practice, the behavior of so many supposedly standard-compliant browsers is different enough that you'll be pulling out your hair if you try to support all of them. A number of good HTML5 libraries let you write standard HTML5 video tags that will be replaced with Flash or QuickTime if the browser isn't ready to handle your video. The Video for Everybody project offers one of the better libraries, filled with features that operate in the background to smooth delivery on older browsers like IE8.

Raphaël
If the pundits are correct, there are many, many terabytes of data just waiting for people to come along and try to make sense of the bits. The first generation of HTML5 libraries was more focused on building forms and generating tables. Now a number of libraries are zeroing in on building charts and drawing graphs on the object. You'll find plenty of great options for basic line graphs, bar graphs, and combinations. Raphaël is a small JavaScript library that should simplify your work with vector graphics on the Web.

JSChart

Also among the libraries aimed at chart building is JSCharts, which allows you to easily create charts in different templates like bar charts, pie charts, or simple line graphs.

Flot
Flot for its part produces graphical plots of arbitrary datasets on-the-fly client-side, and it includes interactive features like zooming and mouse tracking.

Protovis
Some libraries go even further for data visualization. The collection of demos for Protovis and its newer cousin D3 -- a name meant as shorthand for Data Driven Documents -- show how sophisticated constructions like Voronoi diagrams and network graphs can illustrate more than the up and down of some value.

Simile Widgets
Simile Widgets offers a different collection of views for data visualization that are more focused on maps and timelines. Each of these data visualization projects illustrate how we're just beginning to come up with good ways of turning data into pictures that can help us absorb large volumes of information quickly and efficiently.


Tile5
Most of us will continue to use the big mapping libraries for standard jobs like showing street addresses. But what if you want to do something different, like change the rendering or fiddle with layers in ways the big libraries don't allow? Tile5 can pull the mapping tiles from such sources as GeoCommons, then lay them out so that the user can shove them around just like the maps from Google, Mapquest, or Yahoo. But there are other opportunities: The animation operation can change any of the parameters of the display. This is usually used for panning across the map and landing in one spot.

jQuery Mobile
As the mobile browsers begin to dominate the Web, it becomes more and more important to package the information in a form that's easier to browse on smartphones and tablets. That's not so easy when the fingers are fat and the eyes can't focus on small fonts. jQuery Mobile, Jo, and Sencha Touch are three libraries that offer touch-friendly menus that dig down into data structures and present the information for the small screen.
HTML5SQL
It's easy to forget that cookies can store 4,096 bytes of data. You would never want to store that much because each cookie is bundled together with subsequent trips to the server -- that's why local databases were invented. Taking advantage of them is getting easier as new libraries simplify the details of interacting with the API. HTML5SQL, for instance, will feed relatively simple SQL statements to the database, allowing you to create tables, fill them with data, and then query them. You'll spend more time crafting your SQL than your JavaScript.
TaffyDB
If you don't want to think in SQL while writing JavaScript, TaffyDB accomplishes much of the same tabular querying with JSON, and the queries and the updates can be chained together.
Firebug
One of the biggest challenges for JavaScript programmers is building larger applications, and bigger always means more debugging. While you can get by with embedding alert statements in smaller pages, larger ones require more structure for the debugging information. Firebug, an extension for Firefox, offers an elaborate debugging platform, including conditional breakpoints and the ability to edit the state. The JavaScript can write directly to the console object with three levels of severity.



Blackbird
Blackbird is a stand-alone library that pops up a separate console window that looks quite elegant. You can set four levels of bugs and the user can turn the messages on or off. A profiler is ready to time the routines on the local browser.
Gameboy
This collection of JavaScript libraries only scratches the surface because a wide collection of translators and emulators makes it possible to run practically any language in your browser. Pyjamas is a rich development platform built around a Python-to-JavaScript compiler. The Google Web Toolkit converts Java into JavaScript, and RubyJS converts Ruby. The list of languages that can be emulated is long, and practically nothing is out of reach. Rather than continue to list them, I'll just link to a Gameboy emulator to prove the point.


REQUIRE.JS -  A Javascript Module Loader
RequireJS can help you manage the script modules, load them in the right order, and make it easy to combine the scripts later via the RequireJS optimizer without needing to change your markup. It also gives you an easy way to load scripts after the page has loaded, allowing you to spread out the download size over time.
RequireJS has a module system that lets you define well-scoped modules, but you do not have to follow that system to get the benefits of dependency management and build-time optimizations. Over time, if you start to create more modular code that needs to be reused in a few places, the module format for RequireJS makes it easy to write encapsulated code that can be loaded on the fly. It can grow with you, particularly if you want to incorporate internationalization (i18n) string bundles, to localize your project for different languages, or load some HTML strings and make sure those strings are available before executing code, or even use JSONP services as dependencies.
   
        </span><span style="font-size: 10pt;">jQuery+RequireJS Sample Page</span><span style="font-size: 10pt;">
       
   

   
       

jQuery+RequireJS Sample Page

   



Batch Tools:
Phatch – Python app to batch process photographs for web applications
Phatch is a simple to use cross-platform GUI Photo Batch Processor which handles all popular image formats and can duplicate (sub)folder hierarchies. Phatch can batch resize, rotate, apply perspective, shadows, rounded corners, ... and more in minutes instead of hours or days if you do it manually. Phatch allows you to use EXIF and IPTC tags for renaming and data stamping. Phatch also supports a console version to batch photos on webservers.

Eclipse Plug-in Installation:
  1. From the Help menu, select Install New Software... to open the Install New Software dialog.
  2. Paste the URL for the update site into the Work With text box, and hit the Enter (or Return) key.
  3. In the populated table below, check the box next to the name of the plug-in, and then click the Next button.
  4. Click the Next button to go to the license page.
  5. Choose the option to accept the terms of the license agreement, and click the Finish button.
  6. You may need to restart Eclipse to continue.


Wednesday, August 08, 2012

Online Collaboration and Social Media: The Promise and The Reality

A Plea for Online Music Collaboration:

     I'm not a genius at using social media! In fact I was completely bored with Facebook and did not understand why being "liked" on Facebook meant anything to anyone. To me, "everyone", and "everything they do", is much more nuanced and complex than what is reflected in a thumbs-up or thumbs-down icon click-count or friend tally. All I could think of was the Roman gladiators getting the signal.... not a pleasant thought. I find more value in one face-to-face conversation than in a months' worth of Facebook postings.

     In fact, I deactivated my Facebook account the day before the big IPO for principled reasons: I didn't think my personal information needed to be bought and sold for the advertising feeding frenzy that is expected to unfold as Facebook attempts to monetize their grossly overvalued IPO. I don't mind seeing billionaires created from idealized investment scenarios, but where is the value to the people who are supplying all of the free analytic data about what they "like" or "don't like".  Have we all been reduced to this one-dimensional level of intellectual assessment? Are we sure this data is even accurate or relevant?  

bye bye pot-o-gold....


     All those virtual friends did not seem to be doing anything interesting on Facebook, but on blogs, there seems to be a lot of interesting "collecting" of data, photography harvesting/cataloging, and sometimes some good opinion-making. Some blogs share good original writing, original graphics-arts, tips-and-tricks, etc. In other words, there is real content. Sometimes you can find personalized and intellectually sincere contributions in blogs; so I'm sticking with blogs for now to get my curiosity fix.

     Then there is Twitter. I do have a Twitter account @kpaul99, but I have no idea how to express myself correctly in 140 characters. All I hear about is the people that get in trouble for saying stupid things or sending stupid images. I see the little Twitter widgets in the bottom or side of a web-page, but I don't see anything more than people sending a Tweet to their followers to look at the web page.... huh? I thought that was what Google, Yahoo, Bing, etc., was for. I don't need people to notify me what to read, especially content on the web. Tweet that!  

     OK, I'll concede that a couple of days ago I did find some information via Twitter by searching for the word "violin".  This gave me a list of Tweets from some well-known violinists and self-promoted artists that exposed me to some interesting people that I had not heard of before. That search also led to me start to follow some of these violinists and artists. This led me to learn about Mark O'Conner's announcement for his violin method publications, and interesting artists like Zoe Keating, who does cello "looping and layering" performances (she supposedly also has 1.3M Twitter followers, and people buy her albums as a result).

     Maybe I need to get "with-the-program" and Tweet: "Please collaborate with me online!" everyday, and then beg people to follow me on Twitter until they say yes. Why? Because so far the online music collaboration thing is not working out as well as I had hoped and dreamed, even though I am passionate about the possibilities of sharing original music composition and music production efforts via the web. 

Indaba Music


      I've tried to use Indaba Music for the last two and one-half years to find musicians to collaborate with, but I don't want to be the "project manager" and drive the recording project, and/or beg other people to record with me. I just want to jump into a group of people that will put equal effort into a project and share a common vision about the music they want to produce. I want to be invited to a project based on my existing output available on the web for everyone to hear.  I know this is a lot to expect, because in the real world, we have to self-promote every day to get access to the portals of success, or get someone's attention who may be already distracted by everyone else (on Facebook).  

      Now I am not discounting the finished projects that I have been involved in on Indaba (we did publish two albums on iTunes), but after our "project leader" got back to his real-job photography projects, the group activity dwindled and finally halted. While we had a strong project-leader, we seemed to have some success. The lesson here is that online collaboration takes a strong leader to bring other people into activity, and just like the face-to-face world, the work does not get done without very dedicated and inspired people. Of course paying people up-front for their output will get production going faster...(Thank you record-companies for at least doing this for some people; some musicians are living the dream).


     Indaba Music is fantastic for people who want to join "remixing" contests they offer, but if you just want to jump into an awesome collaborating group for a recording project, it will take a lot of persuasion, patience, and persistence to get something going. I don't have that much steam at the end of the day. 

     I still believe that online collaboration is great for musicians who have a day-job and can only afford part-time investments in their music. I believe that record companies should audition and hire more "studio musicians" via online submission sites, as there are many musicians who can record their individual tracks in their own home studios,  and submit for mixing elsewhere. I'm sure this is already being done with full-timers, but what about the part-timers?


     I really do admire the people who can successfully "socialize" and make connections via the web, but for me, the reality has not met the expectation. My expectation has been that I could find musicians who have their own steam and shared vision to create music via online collaboration. I'm still looking for these collaborators, and hopefully someone will read this and send me an email, a Tweet, or something else.... You don't even need to "like" me on Facebook; just collaborate with me.  Thank you.


     P.S. Somebody will dig this out of the Google archives someday and laugh at the naivety. Until then, you can buy my 2012 album on iTunes.  Since this is blogspot, we can still "socialize" on Google+.  



Don't be...