I didn’t take a ton of interesting pictures the past two months–lots of teaching and organization and tech support. But here’s the interesting bits of the middle of the fall semester.
I finished writing a piece for Bassoon and Electronics. This isn’t what it’s called now, but it was called this very briefly (more info on that piece coming up in the next few days)
I started work on a contrabassoon piece, and I’m using a tool I developed for tracking the composition process (which I have a presentation on next week at CMS, which I need to finish). Here’s a quick shot of me composing while on an NDSU Press field trip (staying at Nineteen26 Campground and Lodging in Steele, ND).
(That same field trip, the NDSU Intro to Publishing class printed, folded, collated, and trimmed 275 copies of this year’s chapbook. I drove the van and drank a lot of coffee.) Here’s a photo of the group (courtesy Allan Burke):
A few weeks later, we took the same class to Altona, Manitoba, to tour Friesens Corporation. Friesens is one of Canada’s largest book printers. Here we are next to several tons of rolls of paper. I drove the van and drank a lot of coffee.
We turned Festival Concert Hall into a Black Box theatre again for our fall Thundering Heard! student composers recital. This year we’re trying to build an audience with New Music Punchcards.
Ooh! Also, the NDSU University Symphony Orchestra premiered my work The Uncertainty of Joy. (https://vimeo.com/1018999619, at about 50:30. Updates to the website coming soon!)
Back at home, we got a new gate for the backyard (we lost the old one when we expanded the garage door at the beginning of covid times)…
I hit 1,450 days on Duolingo…
Bartleby claimed more of Erin’s furniture…
And Erin went for a stroll.
Next week I’m off to the 2024 College Music Society/Association for Technology in Music Instruction conference, at the Washington, DC, Hilton. That’s right. Washington, DC. During election week. I can only assume that the conference hotel was cheaper for those dates.
From the inbox:
Dear composers,
Thank you all for your submissions to the Trans-Pacific Trio call for scores! We would like to extend a special thank you to those who composed music specifically for our ensemble. Part of our reason for this call for scores was simply the lack of repertoire for our instrumentation, and it means a lot to us that you took this opportunity to create more pieces as options for us to play! We also want to acknowledge that many of you wrote worthy pieces that we were unable to program this season, but certainly hope to play in the future!
2024-2025 is rare in that the Trans-Pacific Trio is all residing in the same location for the entire season. For this reason, we wanted to give preference to submissions that included all three members of our group. The works we have selected for our “Trios Only” concert in early February are the following:
For Clarinet, Bassoon, and Piano:
Angelo Bruzzese – Lumen
David Snow – A Baker’s Tale
David Vayo – Seis Cosechas
Bernie Walasavage – Trio
For Voice, Clarinet, and Piano:
Carter Crosby – Enacting Travesty
Nicole Knorr – Waiting to Speak
Kyle Vanderburg – Letters to the Poetry Editor (III and VI)
Because we received so many excellent pieces, the Trans-Pacific Trio has decided to incorporate several of them into an additional concert in May. The pieces we have selected for that concert include:
Paul Ayres – The Cloths of Heaven
David Crumb – Soundings
Allen Molineux – A Terse Terzetto
Concert dates and venues are being finalised, and will be posted on the Trans-Pacific Trio page of my website once confirmed:
https://www.marialordknivetonmusic.com/trans-pacific-trio
We will be in touch with those of you whose pieces we have programmed for this season!
Maria Lord-Kniveton
Trans-Pacific Trio
I’ve worked on some projects this summer (furniture, writing, parenthood), and I’ve been trying to stay away from social media, with varying results. So here’s a brain dump of things from this summer.
I finally refinished the last of the six mission-style chairs I bought from the University of Oklahoma in the mid-2010s. And then I refinished another that apparently hadn’t been glued properly. And then I reupholstered them all with new foam because dorm chairs from the 90s don’t have the best support.
I finished an orchestra piece I intended to finish in March. I’m very pleased with the result, but I can think of a half-dozen better ways I could have written it more efficiently. (The opening tempo isn’t “TEMPO,” I’m just scrolling through my camera roll and this is the pic I have).
The Uncertainty of Joy premieres this fall by the NDSU University Symphony Orchestra
I migrated the entire NDSU Performing Arts website to WordPress, for the second time in three years. When I abandoned the project a few years ago, I apparently saved nothing. We’re going to migrate it again later this year to Drupal (for reasons), but having the website in a content management system is a significant improvement. It also allowed me to learn Fedora Linux (we were initially going to host it at NDSU, and they only support Red Hat, which Fedora is related to. Letting programmers name things was a mistake. Hats.). Here’s how we update websites now, versus how we used to:
I taught at one of my favorite places, the International Music Camp, for half a week in July. I wasn’t comfortable being away the whole week, and OU colleague extraordinaire Steven Eiler taught the other half of Audio Technology. Here’s me and some of the class, up to no good.
I completely rewrote the instrument/equipment/locker checkout system in Liszt, which was one of the most complicated programming things I’ve done. Formerly, there were individual checkouts for lockers and instruments, and some people checked out lockers, and some people checked out instruments, and you put instruments in lockers, so it got complicated. Now checking out a locker checks out the instrument inside it, and vice versa. It also means you can check out every single NDSU piccolo instantly.
We (me, Cassie, Erin, Bartleby, and Lorraine) took a trip to Montana. Lorraine loves car rides!
On the way back we saw some NDSU fans.
Here’s one up close
Bonanzaville repaired the foundation to the Hunter Times building, so I spent a little time getting type cases put back in order. Working with the equipment at Bonanzaville helps to prevent me from buying a printing press and putting it in my basement.
Speaking of printing, I wrote and published a book for my Music Skills for Academic Success class. It’s definitely a work in progress. (This whole ordeal deserves a writeup of its own).
One of the other projects from this summer was organizing and preparing a high school composition competition called Score Wars. We did some publicity for that, including a radio interview on Prairie Public (to be aired at a later date) and an eeeeaaaarrrlllyyy morning spot on one of Fargo’s local TV stations.
Of course, school started at the end of August, and I started teaching the freshmen important things about Music. And, as it turns out, typefaces.
Cassie and I also spent the entire summer navigating becoming parents, which is a whole other story arc entirely.
But now, school has started, and we’re off to new and exciting projects–some of which I’ll write about later.
I’m spending the week working on some publishing updates, getting some scores up and ready to distribute, and finishing up an orchestra piece, But meanwhile, from the inbox this week:
Dear artist
After an arduous task by our evaluation commission, the works listed below have been selected for our “Fourth Cycle of Virtual Concerts” of “La Hora Acusmática”.
We will shortly send you the schedule of the four concerts planned for 2024.
Congratulations
.Works selected:
“Flutervoice II” Gustavo Chab
“Hiperaural” Ricardo De Armas
“Fire and dice 2014” Eric Delgado
“Spider web” Benjamin Fuhrman
“Beyond 88” Mattew Lam
“Noturno” Eduardo Nespoli
“Bayou” Michael Rosas Cobian
“Post Anthropocene” Edmar Soria
“Tape piece” Kyle Vandenburg
“Glitch Mass” Davide Vannuccini
“Abedul” Cami Albarracin
“7 minutes of recistance” Cristian Biasin
“Filo entre los espacios” Francis Rodriguez
“Sancocho” Sergio Flórez Rincón
“Mental upgrade” Simón Hutchinson
“Antithesis” Maxwell Miller
“Onirico y perpetuo” Rafael de Rioja
“Grind” Droki Ouro
“Parallaxe Parataxe” Nicola Cappeletti
“Watching time” Adolfo Núñez
“Granciporro” Leonardo Vita
“Thales from Dylawerson” Onur Dülger
Ausdrüecke – Jakob Gruchmann
“Bound” Lack Ballard
“Cloud chamber Remix” Heinz-Josef Florian
“Theurgy” Elliot Yair Hernández López
“Mutations” David Jason Snow
“Digital Hymn” Masafumi Oda
“Dolente” Piotr Pawlik
“Dim life” Seokmin Kang
“Le bruit de suspirs” Roxanne Turcotte
“YTEcho” Andreja Andric
From the inbox:
Dear Kyle Vanderburg,
We are happy to inform you that your presentation, “Debugging the Composer: designing a tool for self-reported composition processes” has been accepted to ATMI 2024 in Washington, D.C. November 7-9. Congratulations.
We ask that you 1) reply to this email confirming your intentions to present at the conference by May 15, and (2) register for the conference by June 20. Participants are also required to be active members of ATMI at least 1 month prior to the National conference. Information about hotels and ATMI member discount will be sent in the next few weeks.
CMS Registration link:https://www.music.org/index.php?option=com_eventbooking&task=register.individual_registration&event_id=138&Itemid=5784
ATMI Registration link: https://www.atmimusic.com/join/
Important Dates
May 15- Declare interest in presenting at conference
June 20th – Presenter Registration Deadline
July 1st – Bios/abstracts/headshots due
August 1st – Schedule Finalized
September 19th – Hotel Reservation Deadline
Please look for further correspondence regarding the date and time of your presentation. Due to shared programming with CMS, requests to present on specific dates may not be granted.
Congrats again and we look forward to welcoming you to Washington DC in November. Don’t hesitate to reach out if you have any questions at all before the event.
Sincerely,
ATMI 2024 Programming committee
Jason Fick, Chair
Kyle Vanderburg
Teresa Nakra
VJ Manzo
Peter Webster
Last week, as I was working on preparations for the College Music Society’s regional conference at NDSU, I received notification about an acceptance to their national conference this fall in Washington.
Dear Kyle Vanderburg,
Greetings from The College Music Society. I am pleased to inform you that your proposal for the 2024 CMS National Conference has been accepted! Below you will find a link to an official letter of invitation to participate in the conference, which will take place in Washington, D.C., November 7-9, 2024.
If you have any questions about your proposal’s acceptance or the conference, please contact Charlie Chadwell of the CMS office.
We look forward to your participation!
Sincerely,
Rachel Roberts
Chair, Program Committee
2024 CMS National Conference
This was in the works for most of the fall semester, but I can finally announce that my You Can’t Outrun Your Daydreams has been released on Volume 1 of MUSLAB’s Complex Planet album.
From back in September:
Kyle
MUSLAB International Electroacoustic Music Exhibition is pleased to inform you that your work has been selected to participate in the Phonographic co-production – MUSLAB- Cero Records PLANETA COMPLEJO.
This is an opportunity that we offer to people who have passed the curatorship process and who have chosen the option to participate in the selection for co-production CDs.
Your work as a composer offers an interesting perspective to our musical community, since it combines research and artistic creation proposing a personal aesthetic. Therefore, it fits perfectly with the general interests of the exhibition.
The COMPLEX PLANET exhibition includes a selection of different sound, video art and photographic works, where our different cultural identities are analyzed through the relationship between endemic social processes and globalization. The proposal is based on the fact that a fundamental characteristic, which enables evolution in nature, not only in biological contexts but also in social and cultural ones. Thus, both the endemic and global factors are a guarantee of evolution and adaptability that has to do with the importance of diversity.
Receive a cordial congratulations from the MUSLAB team.
Here’s a copy of the cover of the three-volume set:
Complex Planet/Planeta Complejo is available on all streaming platforms, online at http://www.cero-records.com/release/muslab-planeta-complejo-vol-1·2·3/, or if you’d like a physical copy, I have some left.
Hey! Tape Piece is making the rounds, and will be performed in Belfast next April!
Dear Kyle,
I am pleased to inform you that your submission “Tape Piece” for the Listening Rooms strand of the open call has been selected for the Sonorities Festival Belfast 2024 programme.
Please confirm that you are still happy for your work to be featured in the festival via email to [email removed] by no later than 4pm Thursday 2nd November GMT, 2023.
Once you confirm your participation, please contact [name removed] to confirm your technical requirements.
Finally, many thanks for your interest in our festival, and for sending us such engaging work.
Regards,
Sonorities Team
Dear Kyle Vanderburg,
Your paper “Inspiration/Perspiration: Creating a Map of the Music Composition Creative Process” has been selected for programming as part of the 7th annual ROCC conference at the University of North Georgia.
All participants must register for the conference.
The conference is scheduled for October 27 to October 29, and the program booklet will be sent electronically after the event. Congratulations and we look forward to an engaging conference this year.
Research on Contemporary Composition Conference
This will be fun! I haven’t had a presentation or performance in Georgia yet (but I did drive up from Jacksonville when I was there this spring for CMS).
You may know that I’m addition to my work as a composition instructor at NDSU and my work as a composer, one of my side gigs is web development—I write software (Liszt) for running schools of music. So of course, one of my composing tasks is maintaining a website where people can buy my music. And to make that happen, you kind of need some sort of shopping cart.
For the past several years, I’ve used a great shopping cart platform called Snipcart to handle the shopping part of my websites, both at KyleVanderburg.com and at NoteForge. It’s kind of a drop-in solution: include some code, and as long as your “add to cart” buttons are coded right, they take care of everything. It’s $10 a month, and they package up all the purchasing information and send it off to Stripe, my payment processor.
Recently though, Snipcart has been unable to charge my card for the monthly subscription. When I’ve pressed for diagnostic information, they’ve pointed me to Stripe, and I figure if I’m going to have to deal with Stripe anyway, why not save $10 a month and build my own shopping cart?
First off, I started off with some things that helped out already:
So with those constraints, the first thing I need are a couple of databases, one for the “cart” and one for “cart items.” Cart doesn’t need much more than some sort of identifier, while cart items need fields for cart id, item, and quantity. (It occurs to me on this write-up that there might be a way to build this without a Cart database, but too late now).
Next up, we need a cart page on the website to handle all the cart functions. I decided to program it in PHP because I’m faster at that than writing it with JavaScript. The first time the cart page (let’s call it cart.php) is loaded, it creates a Cart database record, gets a Globally Unique Identifier (GUID) and writes that GUID as a cookie to the user’s browser. (I considered using HTML local storage or PHP sessions, and cookies seemed like the easiest.) Liszt just generated GUIDs for every table row anyway so that’s easy.
In pseudocode: (Note: none of this is actually production code, but it’s close enough to explain it)
<?php
//Generate Cart ID if not set.
if(empty($_COOKIE['NoteForgeCart'])){
$cart->build(); //This will create the record and the GUID.
setcookie("NoteForgeCart",$cart->guid,time()+60*60*24*30,"/"); /* expires in 30 days */
$cartid=$cart->guid;
}else{$cartid = $_COOKIE['NoteForgeCart'];}
?>
I opted to use url constructions like cart.php?addItem=myAwesomeScore to manipulate the cart. This requires that every change to the cart cart involves a page reload, but the code is lightweight enough to where I’m not worried about performance. I could have written this in JavaScript and done some sort of Ajax call but…this was faster. Oh and of course instead of myAwesomeScore, I’m using the GUID of the product we’re adding.
<?php
//When we're adding items
if(isset($_GET['addNewItem'])){
$row = $product->getByGUID($_GET['addNewItem']);
if(!empty($row)){
//Add to Cart
$cart_items->build();
$update['cart']=$cartid;
$update['item']=$_GET['addNewItem'];
$update['qty']="1";
$cart_items->update($update);
}else{
//Invalid Product ID
echo "Invalid Product";
}
}
?>
From a user interface level, this means that product links can just be to cart.php?addNewItem=guid. Some css styling to load that page in an iFrame in the drawer I mentioned, and it’s an easy implementation.
Retrieving cart contents is easy since we can just do a database query for all the rows in the Cart Items database with a certain cart I’d. That code goes on Cart.php last.
<?php
foreach($cart_items->getByCart($cartid) as $cartitem){
$item=$product->getByGUID($cartitem['item']);
/* display cart items here, prettily */
}
?>
Deleting a cart item is easy to work out: a button which loads cart.php?removeItem=item reloads the cart and removes that row from the database.
<?php
//When we're deleting items
if(isset($_GET['removeItem'])){
$cart_items->getByGUID($_GET['removeItem']);
$cart_items->delete();
}
?>
Adding an item to the cart that’s already in the cart proves a challenge. When an item is added to the cart, the cart contents needs to be loaded to see if that item is already on the cart, and if so, to increase the quantity by one. This requires some additions to the addNewItem method.
<?php
$contents = $cart_items->getCartContents($cartid);
if(in_array($_GET['addNewItem'],$contents)){
//Item In Cart, Update Quantity
$cart_items->getSingleItem($cartid,$_GET['addNewItem']);
$update['qty']=$cart_items->row['qty']+1;
$cart_items->update($update);
}
?>
Changing quantities poses the next problem. A simple way would be to include a text field for quantity, and then add a handler for when it changes, to make a database update. That was a little more complicated than I wanted it to be. I considered + and – buttons, but if the page reloaded every time, it would be obnoxious for large quantities. I considered +1, +10, and +100 buttons, but that seemed similarly awkward. I opted for + and – buttons that ask the user how much to add or remove from the cart.
The next challenge is the actual checkout process. We need an intermediate page between cart.php and Stripe to format the data—something like cart-process.php. This will package the cart in a format that Stripe understands and pass it off to Stripe. Since the cart ID is just in a cookie, we can use that. This takes a bit of time to figure out the nested arrays, but the Stripe documentation (and the Stripe errors in the Apache logs) are well-written.
Once you can get Stripe to catch the data, you’re home free.
There’s a lot of things I haven’t sorted out in this quick and dirty process: shipping prices, whether products need to be shipped, taxes (though I think Stripe is doing that for me)(I figured that out since this write-up), digital assets, and so on. Snipcart used to automatically send out download links for digital goods, and I think I’ll just have to not have that for a bit.
I’ve been using a GitHub project to track everything, here’s what that looks like:
There’s some room for improvement, but it’s not bad for several hours of worth over the weekend to save $120 a year by writing 200 lines of code.
This code will (hopefully) go live later this week.