Featured Post

Sunday, November 2, 2014

Working With Game Developers

It has been interesting over the years to work with different game developers and development teams. As you can probably tell by many of the games I've worked on, I'm more at home with independent developers. Back in the days of working with id Software, there would be a decision to be made, and it would be made very shortly after the need for a decision. More recently, in working with Brad Carney on Wrack, I'd suggest something and Brad would make a quick decision. This is generally not true of larger development teams, and decisions usually come very slowly from them.

Larger teams are also generally not interested in hearing what a composer/sound developer has to say about anything to do with a project except music/sound. If you talk about game play, graphics, ideas for additions to the project, they look at you like you're speaking a foreign language. This has often been the case with movie production teams, too.

When Wolfenstein 3D was getting close to release, the artists showed everyone the game manual they had designed. It was impressive work. I looked it over and read it. Something jumped out at me. Instead of using the word "Nazi" for the enemy, they had used the word "German." I said something to the effect that "German" included many people that did not support what the Nazis did, so those German people would not like being the enemy in the game. They got what I was saying and changed the term. They were willing to listen to what I had to say though it was not about music/sound effects.

After working on many projects, I decided that the most important thing about a project would be the people I'd be working with. I've turned down projects because I had a feeling they only wanted a musician, not a team member. That's not to say that I would have anything to add to a project other than music/sound effects, but I'd like to think if I did have something to add it wouldn't fall on deaf ears :-)

For me, a decision to work on a project also comes down to whether the others working on the project love what they are doing. If the project is only for making money, alarms go off in my head. I'd much rather work with people who love what they are doing (and happen to make money at it). Money doesn't make up for a mechanical working environment. And projects for the principal purpose of making money usually don't do that great in the end.

Wednesday, October 22, 2014

Sequencer Plus vapimpu driver

Does anyone know where this file can be found? I've had a request for it from someone who owns an older copy of SPG. It didn't come with this file. The copy I have doesn't have it, either.

Monday, October 20, 2014

CAL - Cakewalk Application Language

For those of you who use Sonar, there is a pretty well hidden gem, CAL, which is an event-processing language that allows extending SONAR with custom editing commands. You get to the CAL scripts by clicking Process>Run CAL or CTRL-F1.

Doing so gives you a list of CAL Scripts that shipped with Sonar (and maybe some you added).

So what do you do with this list? First of all, notice that some of the file names are in all CAPS and they are no longer than eight alphanumeric characters followed by the .cal. This means many of these scripts were written back in DOS Cakewalk days when a file name could not be longer than eight characters.

It may also mean that the CAL no longer works because Cakewalk has broken CAL over time, and they no longer actually support it except to include what is old code for backward compatibility.

For those of you familiar with Cubase, CAL is the Cubase Logical Editor on steroids (when CAL works in its present state).

Many Sonar users think CAL is merely a macro capability. It can be that, but it can manipulate data based upon the state of that and/or other data.

How do you find out what one of these CAL's with cryptic names do? They are merely text files with a .cal extension (instead of .txt). You can open the list of CAL files (as explained in the first paragraph), right click on one of them and open it with Notepad to read the comments by the author.

A CAL script works like any of Sonar's built-in editing commands. You have to select the data you wish to be edited [track(s) and time selection (From and Thru)].

One of the shipped CAL scripts is named "ANY_THIN.CAL." If you right click on it and open it in a text editor, you'll see Marty Schor wrote it to thin controller data based upon the change from one controller value to the next. You, the user, chooses which controller you want thinned and the minimum difference you want between two consecutive controller values. This is much better than just deleting every 2d, 3d, 4th, so on controller value. It keeps the data smoothly changing in keeping with the original shape of the controller data (the visual representation in Sonar). This CAL still works -- I just tested it.

Why would you want to thin controller data? Maybe for reasons unknown a lot of controller data causes glitches in playback on a VSTi or hardware module. You can thin the data and see if that removes the glitches.

In case there is a problem with undoing a CAL command, you should always work on a copy of the track you run a CAL on. I've not lost data due to CAL, but it could happen.

So, think about this: How would you do what ANY_THIN.CAL does if CAL were no longer supported in Sonar? Any method I can think of would certainly be extremely time consuming.

Yes, it could be built in to Sonar.

But how about this? You have a stringed instrument VSTi. It allows setting a capo to any of 24 frets plus Open -- no capo. It accepts key-switch data or Controller 4 data to set the capo. You don't know the final key of a song you're working on, so you decide not to use key-switches so you won't transpose them when you transpose the key data on that VSTi's track.

The capo position chart in the VSTi docs gives the CC#4 values for each fret. You have a lot of fret changes. So you start inserting Controller 4 data in multiple places, each time having to check the position chart for an appropriate value. You use this VSTi a lot. All of this gets very tedious. Macro software won't help you here. How will it "know" what values to insert for proper capo placement?

Here's where a CAL script can really help. Reading this script in Notepad, it says you should run it in Event View for the track(s) you want to use it on. You click on the first note you want the capo to affect. You also select the note to set the From/Thru times for that note (click in the leftmost column of Event View on the same row as the note and the cell turns black).

Now you CTRL-F1 and double click FretInsert.cal. It opens a small window with "Capo at which fret position? (0-24)." you enter 8 for the 8th fret. Blam, a Controller 4 event with a value of 43 is inserted one tick before the note you selected.

How does this work?

Using a CAL function called "switch," the script finds the appropriate controller data based upon your capo fret selection. Say "FretPosition" is the variable that stores the user's input and "FretPositionData" is the controller 4 data required to set that fret position. Switch takes the value of FretPosition, looks that value up and sets FretPositionData to equal the controller data for that fret.

(do

(switch FretPosition ; set the CC# 4 data value for the chosen fret position
 
  0 (= FretPositionData 0)
1 (= FretPositionData 3)
2 (= FretPositionData 9)
3 (= FretPositionData 15)
4 (= FretPositionData 20)
5 (= FretPositionData 26)
6 (= FretPositionData 33)
7 (= FretPositionData 38)
8 (= FretPositionData 43)  <<< The user entered 8 so switch ran this function
9 (= FretPositionData 47)
10 (= FretPositionData 53)
11 (= FretPositionData 58)
12 (= FretPositionData 64)
13 (= FretPositionData 69)
14 (= FretPositionData 74)
15 (= FretPositionData 79)
16 (= FretPositionData 85)
17 (= FretPositionData 91)
18 (= FretPositionData 96)
19 (= FretPositionData 103)
20 (= FretPositionData 108)
21 (= FretPositionData 114)
22 (= FretPositionData 119)
23 (= FretPositionData 124)
24 (= FretPositionData 127)

)

; now insert the event one tick before the Now time (which the user set when he/she clicked on the note in the Event List.

(insert (- Now 1) Event.Chan CONTROL 4 FretPositionData)

(- Now 1) is the computereze version of  Now minus one (Now - 1).
Event.Chan inserts the selected note's channel for this controller event.
CONTROL means insert a controller event.
4 is the controller number to insert.
And FretPositionData is the value that switch looked up -- 43 in this case.

This is explained only to show you how powerful and time saving a CAL script can be.

And I'm not an expert on CAL -- I hack the code/test it/hack it/test it and so on seemingly out to infinity before I get a script to work.

There are a lot of CAL scripts on the internet. If you decide to try some of them out and they work or do not work, post a message here with the name of the file. Maybe there are some that do not work but are worthy of editing so they do work. Maybe others should be tossed because they do not work any more.

For those of you reading this who do use CAL, please post a reply and let us know which scripts you use. Also, if you know of some that do not work, post that too.

Maybe a fire can be built under Cakewalk so they will bring CAL back in a big way, with great documentation for its use. Else it will certainly be well behind Reaper SWS and Cubase Logical Editor.

Right now CAL is like a map based computer game that doesn't have a fully working, updated map editor, but it can still help do things with CAL that no other DAW I know of can do. SWS (for Reaper) may be able to do it, but I didn't see anything like it mentioned in the SWS docs.

For those of you who write your own CAL scripts, I learned the hard way that you cannot insert data where no clip exists. This means even between clips. The insert goes into limbo. Also, there is already a documented problem working with CAL and Linked Clips

For documentation on CAL, do a search for "Cakewalk Application Language Programming Guide for Sonar." The latest I've found is version 2.2 (24 FEB 2010). There's other documentation out there, too.You won't find any documentation like this in Sonar's help file.

Thanks to Glen Gardenas, Ton Valkenburgh and Frans H. M. Bergen for putting the CAL info together!


Sunday, September 7, 2014

SoundCloud -- You Have A Problem

I decided to upload the music I've written for Wrack so far -- to SoundCloud. I went ahead and paid for an account since I'm going to upload other music too. I have 21 tracks for Wrack so far. Using the SoundCloud Upload link, I selected the files and watched as they uploaded.

Then I received an error saying that the tracks had a problem. There was an error message on each one of them. What?

After loading and reloading pages for a few minutes, I realized that all of the tracks were there -- except one.

The site kept reporting 21 tracks in the playlist I uploaded to, but clearly there were just 20.

After double checking the track names, I saw a warning that one track had an error uploading (a song I named "Wreckoning")..

I re-uploaded it. Still there was a cryptic message to the effect of an uploading error.

All the while I was logged in, there was a notification that I had messages. I had checked them and had clicked "Mark as Read" MANY times because the same messages were still popping up.

About to give up, I happened to click to open the messages once more, and there it
was:

By the time I saw this, I had been working for two hours to check and double check the uploaded songs. I had also re-uploaded the song with the cryptic "there's been a problem" message. "Case 12175768!" If they started at case "1," then they' have issued over twelve million copyright notifications!!

I clicked on the link to dispute the "violation." This came up:
"We've received a report ..." -- yeah, from your "automatic content protection system."

I searched on SoundCloud for the artist and song listed -- a song of that name was listed, but under a different artist name.

Next stop YouTube. Found the song. It was obvious that the "automatic content protection system" has some bugs. When I listened to the song I 'infringed," it was not even vaguely similar to Wreckoning."

Here's the "reportedly infringed" material: https://www.youtube.com/watch?v=htxZZKv4pMw

Here's Wreckoning on SoundCloud*: https://soundcloud.com/bobbyprincemusic/wreckoning?in=bobbyprincemusic/sets/music-from-wrack

*[3 hours and 33 minutes after I submitted the "Contest copyright claim" form seen below, I received an email from SoundCloud advising that Wreckoning "has been released to my account." No apology for the intrusion on my time was included in the email,]

After clicking, "I want to dispute the copyright claim, I landed on this page:
Sorry for the oversized graphic. Blogger has no size between "Original" and "XLarge" that's readable.
After going through this procedure, I have a problem with the following:

  • SoundCloud makes customers jump through hoops because some "automated system" reported a copyright infringement. A human should double check the "automated system" before a notice is sent out.
  • SoundCloud's cryptic "problem uploading file" message should say their automated system has flagged this file as possibly being subject to the copyright of someone else, and a human will check this matter and notify of any further action taken.
  • Why would SoundCloud "share my contact information with the party making the allegations of infringement" when that party is an "automated content protection system?"
SoundCloud is still in the early alpha stage as far as I can tell. It's not really ready for prime time. Maybe I made a mistake paying for it?

Friday, August 29, 2014

"Happy" Makes Me Happy

To me, the song "Happy" was an inspiration to those of us who try not to write "flash in the pan" music. The overall vibe of the recording seems to attract listeners of all ages. And I think people will feel good about the song when they hear it many years from now. It will far outlast the "bubble gum" music that's being crammed down the public's throat these days.

I'm sayin' there's hope for good music yet.

This morning on the Today Show, the pop artist of the day/week/month/summer/year was Ariana Grande, singing (maybe lip syncing) a couple of her mega-hits, including "Problem." There was no pretense of a band or any musicians or background singers. Just dancers making the typical moves of the day.

As for the lyrics to "Problem," they prove that when five people write a song, it can be as monotonous as the best. The music strongly supports the lyrics in its own monotony. Wonderful stuff with a wonderful message for the young women who have learned every syllable of the lyrics. How could they not learn them? The chorus is monotony and repetition on steroids.

This all goes to say once again -- "MARKETING DUDE!" If you get the right marketing people, you can sell any music -- and quality won't matter. Of course you've just got to get a producer/engineer who's up on the latest plugins and equipment, to give "the sound" and max VOLUME so even your ballads can compete with Death Metal.

With marketing, you can become an overnight sensation -- the best singer/songwriter/producer in the world! And if you sign with Universal Music Group, you can appear on the Today Show (NBC/Universal), hold your head high and lip sync, "play" along with your hand syncing band and danceyourazzoff to your studio recordings!

Make sure to instruct your marketing experts to stress that you are:
  1. an actor
  2. a singer
  3. a songwriter
  4. a musician
  5. a multi-instrumentalist (the instrument list is too expansive -- basically, give me the freaking thing and I'll make some kind of music with it!)
  6. a rapper
  7. a dancer 
  8. a record producer
  9. a recording engineer
  10. a re-mixer
  11. a DJ
  12. a television music competition coach
  13. an author
  14. a poet
  15. a fashion designer
  16. a chef
  17. almost out of puberty
  18. an entrepreneur
  19. a volunteer to all worthy causes
  20. a human and animal rights activist
  21. a philanthropist
  22. a reformed drug addict who "doesn't often do them any more"
  23. prone to violence only on "very rare" occasions
Oh, and you must have the word "featuring" on all of your songs -- followed by the name of a rapper whose own marketing people have everyone convinced that he/she is the best rapper in the whole universe!

I could go on, but I won't. And I'm not bitter about any of this. It's just the way it is.

I'm just having fun and "keepin' it real" for this one post.

Finding Inspiration For Writing

Alexander D. asked when the soundtrack for Wrack will be available. Wrack is a game in production. It has grown and changed a lot since its inception. With Episode One to be completed by the end of September, the work on the other episodes will begin. As a result of the longer production time, I have had the opportunity to write music as levels have been more or less finalized. I'm not writing ahead. The reason is that I get inspiration from the new/updated artwork and storyboards. You can hear the style of the level music change from Level One to Level Six. The changes have inspired a different mood for the music on the later levels.

So, do I release a partial soundtrack? That wouldn't seem fair when there's lots more music to be written yet. It would be nice if albums could be released through the mainstream like Wrack is being released -- where I could add/update tracks and they'd be available to anyone who already bought the album. But "services" like iTunes are not set up that way. It's an opportunity waiting for anyone interested in sales and marketing of music. Anyone up for competing with iTunes and the like?

I guess the album will finally be ready for release when the game is completed.

Tuesday, June 10, 2014

Data Backup Discoveries

In a previous post about backing up data, I was looking for some usable software that didn't try to do everything. The other day, I ran upon AutoVer for "automatic versioning & backup." It's freeware written by Hunter Beanland, and it does exactly what I wanted -- any files I edit/save in my data directory are mirrored to another drive. I have not used it for versioning yet, since I create versions myself whenever I make a change in a file that I'm not sure is going to work.

To set up AutoVer, you create "watch folders" and set where the backup will be kept. At the same time, you can have the software create an initial backup. All of this runs in the background with no effect that I can see on continuing to use the computer for other things. It's as fast (or even faster) at doing what it does as any commercial backup software I've used.

The files are directly readable on the backup drive, so no having to wait for one huge backup file to be read before you have access to your backup file.

If you try this software and decide to use it, please consider sending Hunter a donation for his efforts.

http://beanland.net.au/AutoVer/

A couple of weeks back, I was thinking about replacing a Thermaltake BlacX single external eSATA/SATA/USB drive bay with the dual model, and the day I was going to place the order, the single bay quit working. I ordered the dual model. Only one drive was accessible when I connected everything up. After searching, I found a footnote in Thermaltake's website FAQ that says the connected motherboard must support port multiplying. A footnote is no place for important information like that.

So, I'm running the drive bay via its other connection -- USB 2.0. It's as fast as I need for mirroring the files. Otherwise I'd have sent the bay back.

There's great peace of mind in having the backup drives. I'm alternating backup drives once a week (to keep one off site). That way, I am almost assured that I'll lose no more than one week of work in case of a studio disaster.