Make music with code using DotNet Core

Curious about making music with code? As a software engineer and music guy, I have enjoyed seeing the connections between music and computers. The first computer programmer, Ada Lovelace predicted that computers will move beyond doing boring math problems into the world of creative arts. If a problem can be converted to a system of symbols, she reasoned that computers could help. She used music as her example.

In previous experiments, I have explored the ideas of code and music using TypeScript, NodeJs, and Angular. You can find this work here.

After looking around GitHub, I found a really cool music library for C# devs. I’m hoping to use it to create tools to make quick backup tracks for practicing improv. It’s just fun to explore electronic music, theory, and computational music. Make sure to check out the blog post by Maxim. ( the author of DryWetMidi ) It’s a pretty comprehensive guide to his library.

What is MIDI?

MIDI stands for musical instrument digital interface. (MIDI) Under a file format like WAV or MP3, the computer stores the raw wave form data about sound. The MIDI file format and protocols operate an conceptual layer of music data. You can think of a MIDI file having many tracks. You can assign different instruments ( sounds to tracks ). In each track, the musician can record songs as many events. MIDI music events might include turning a note on, turning a note off, engaging the sustain pedal, and changing tempo. MIDI music software like Garage band, Cakewalk and Bandlab can send the MIDI event data to a software synth which interprets the events into sound. In general, the MIDI event paradigm can be extended to support other things like lighting, lyrics, and other stuff.

DryWetMidi Features

  • Writing MIDI files: For my experiments, I have used DryWetMIDI to explore projects for making drum machines and arpeggio makers. I’m really curious about using computers to generate the skeleton of songs. Can computers generate a template for a POP song, a fiddle tune, or a ballad? We’re about to find out! DryWetMIDI provides a lower level API for raw MIDI event data. The higher level “Pattern” and “PatternBuilder” APIs enable coders to think of expressing a single thread of musical ideas. Let’s say you’re trying to describe a piece for a string quartet. The “PatternBuilder” API enables you to use a fluent syntax to describe the notes played by the cello player. While playing with this API, I have to say that I loved the ability to combine musical patterns. The framework can stack or combine musical patterns into a single pattern. Let’s say you have three violin parts in 3 patterns. The library enables you to blend those patterns into a single idea with one line of code. Maxim showed great care in designing these APIs.
  • Music theory tools: The framework provides good concepts for working for notes, intervals, chords and other fundamental concepts of music.
  • Reading MIDI files: The early examples show that DryWetMIDI can read MIDI files well. I’ve seen some utility functions that enable you to dump MIDI files to CSVs to support debugging. The documentation hints at a chord extraction API that looks really cool. Looking forward to testing this.
  • Device interaction: DryWetMIDI enables makers to send MIDI events and receive them. This capability might become helpful if you’re making a music tutor app. You can use the music device interaction API to watch note events. The system can provide feedback to the player if they’re playing the right notes at the appropriate time.

Visions for MusicMaker.NET for .NET Core

In the following code example, I’ve built an API to describe drum patterns using strings.
The strings represent sound at a resolution of 16th notes. Using the “MakeDrumTrack” service,
we can quickly express patterns of percussion.

IMidiServices midiServices = new MidiServices();
var service = new MakeDrumTrackService(midiServices);
var command = new MakeDrumTrackCommand
    BeatsPerMinute = 50,
    FileName = fileName,
    Tracks = new List<DrumTrackRow>
            Pattern = "x-x-|x-x-|x-x-|x-x-|x-x-|x-x-|x-x-|x-x-|",
            InstrumentNumber = DrumConstants.HiHat
            Pattern = "x---|----|x---|----|x---|----|x---|----|",
            InstrumentNumber = DrumConstants.AcousticBassDrum
            Pattern = "----|x---|----|x--x|----|x---|----|x--x|",
            InstrumentNumber = DrumConstants.AcousticSnare
            Pattern = "-x-x|x-x-|-x-x|x--x|-xx-|xx--|-xx-|x--x|",
            InstrumentNumber = DrumConstants.HiBongo
    UserId = "system"

// act
var response = service.MakeDrumTrack(command);

Using the ArpeggioPlayer service, we’ll be able to render out a small fragement of music given a list of chords and an arpeggio spec.

var tempo = 180;
var instrument = (byte)Instruments.AcousticGrandPiano;
var channel = 1;

var track = new ChordPlayerTrack(instrument, channel, tempo);
var command = ArpeggioPatternCommandFactory.MakeArpeggioPatternCommand1();
var player = new ArpeggioPlayer(track, );
var chordChanges = GetChords1();  // Am | G | F | E


// Write MIDI file with DryWetMIDI
var midiFile = new MidiFile();
midiFile.Write("arp1.mid", true);

In the following method, the maker can describe the arpeggio patterns using ASCII art strings. The arpeggio patterns operate at resolution of sixteenth notes. This works fine for most POP or eletronic music. In future work, we can build web apps or mobile UX to enable the user to design the arpeggio patterns or drum patterns.

public static MakeArpeggioPatternCommand MakeArpeggioPatternCommand1()
    var command = new MakeArpeggioPatternCommand
        Pattern = new ArpeggioPattern
            Rows = new List<ArpeggioPatternRow>
                new() { Type = ArpeggioPatternRowType.Fifth, Octave = 2, Pattern = "----|----|----|---s|" },
                new() { Type = ArpeggioPatternRowType.Third, Octave = 2, Pattern = "----|--s-|s---|s---|" },
                new() { Type = ArpeggioPatternRowType.Root, Octave = 2, Pattern =  "---s|-s-s|---s|-s--|" },
                new() { Type = ArpeggioPatternRowType.Fifth, Octave = 1, Pattern = "--s-|s---|--s-|--s-|" },
                new() { Type = ArpeggioPatternRowType.Third, Octave = 1, Pattern = "-s--|----|-s--|----|" },
                new() { Type = ArpeggioPatternRowType.Root, Octave = 1, Pattern =  "s---|----|s---|----|" }
            InstrumentNumber = Instruments.Banjo
        UserId = "mrosario",
        BeatsPerMinute = 120,
        Channel = 0
    return command;

The previous code sample writes out a music fragment like the following.

If you’re interested in following my work here, check out the following repo.

Block Coding Activities for Your Young Maker


Hello! Hope that you and your family are having a great summer! Like many families, we’ve tried to find fun and constructive ways to engage the kids through the summer while they’re out of school. One of my friends asked me if I had any fun maker activities that involved coding. In this post, I wanted to give a shout out to a few things that have engaged my family.

Dance Pary 2019 from

One of my kids has become very motivated through the art of dance. With that in mind, I introduced her to this fun “hour of code” lesson from In this lesson, makers become connected to block based programming while directing cartoon dancers. In the early lessons, students learn to trigger dance moves based on keyboard events. I find that students become very engaged with good music. These lessons enable students to design their own dance party to various popular songs. Check out Dance Party 2019 from Please know that you can find many more engaging hour of code lessons from with your kid’s favorite characters. They’ve currated lessons that involve Minecraft, Frozen, Lego, and more.

CSFirst from Google – Digital Story Telling

In the maker education community, Scratch has become a cornerstone tool for teaching students to code. The gallery of enables you to review a broad range of stories and games built by the community. Scratch offers students a general purpose platform for creating games and interactive experiences. Google has put together a pretty cool set of lessons to guide students through their initial interactions with Scratch. Lessons involve experiences with art, digital story telling, and game design. My kids have enjoyed some of the game design lessons.

Check out Google CS First.

Makey Makey

Makey Makey

As artists and makers, we enjoy the process of creating something new from something old or familiar. The Makey Makey makes this possible. Makey makey is a USB device for your Mac or PC enabling makers of all ages to experiment with human computer interaction and inventing. The Makey makey interface enables you to design playful circuits and switches. The following videos describes the Makey makey in great detail with example experiments.

In our family, we’ve enjoyed playing with musical instrument building, controlling Minecraft with fruit, and constructing novel Nerf gun targets.

If you’re looking for project ideas with step by step instructions, you can check out the following link from Instructibles.

Related Posts

Recording Music and Audio with the Kids using Audacity

As a young person, my mom and dad invested a great deal in my growth as a musician. Looking back, I’m thankful that I’ve been able to use my gift of music to foster various ministries in our church. My wife and I love making music together by singing and playing the guitar. It’s honestly one of my favorite ways to re-charge and relax.

I wanted to give a shout out to a free tool that I have enjoyed using for basic music recording and talks. Audacity, a free and open source music recording software, has the ability to do a multi-track recording and has lots of basic effects. Audacity runs on Linux, Mac, and Windows. In contrast with other audio recording tools, I appreciate the simplicity of the user experience.

As a Dad, I’m excited to share the gift of music with my kids. My little girl has become very interested in singing lately. To help motivate her, I have started recording some of our jam sessions with Audacity. She loves showing off our work to mom. When my wife and I record music, I do use some professional mic equipment. For the recording sessions that I’m doing with my daughter, the laptop mic works just fine.

If you’re interested in starting a podcast, you might consider starting with Audacity. You can always advance to a more complex tool later. I found a comprehensive post on starting podcasts here. I do like their recommendation for purchasing a higher quality mic. In my experience, I’ve never had any issues with Audacity with advanced recording gear.

Here’s some of the key features that I appreciate from Audacity

  1. Multi-track recording: Let’s say that you want to record many singers or instrumentalists individually, Audacity enables you to layer individual tracks for each recording session. This enables you to edit, mute, solo and apply effects on an individual basis.
  2. Metronome: For some music recording situations, it’s helpful to have a metronome to help you align your tracks across sessions. You can add a metronome track by clicking “Generate > Rhythm track.” Audacity will enable you to set the tempo and generate a click track.
  3. Export to major audio formats: Out of the box, you can export your work to most popular audio formats like Wav, Ogg, and mp3. It’s pretty easy to share your work on services like SoundCloud.
  4. Effects: Audacity has many helpful effects for the entry-level sound engineer. You can amplify sound, apply compression, and apply reverb. When I’m playing with the kids in a silly manner, we sometimes enjoy becoming chipmunks by increasing the speed of tracks or adding lots of echoes.
  5. Editing audio: Audacity has a basic set of tools for editing audio. Once you’ve installed Audacity, you might check out David Taylor’s complete guide to Audacity. He provides a detailed introduction to the tool and many advanced features.

In researching this post, I found a pretty cool Edutopia article talking about the benefits of audio recording for writing. I like the idea of using an audio recording as a brainstorming tool. I also like the idea of reflecting on work by recording it and playing it back. I might try this idea as I’m teaching the kids piano.

Related Posts

Music Maker: Using NodeJS to Create Songs

Music maker screen shot

In my graduate school career, I had the opportunity with our evolutionary complexity lab to study creating music using neural networks and interactive genetic algorithms. It’s fun to study these two topics together since I enjoy crafting code and music. If you enjoy this too, you might enjoy Music maker, a library I created to explore generating music with code. Sonic Pi by Sam Aaron, a popular tool to teach music theory and Ruby code, inspired me to build this tool. My team from InspiredToEducate.NET enjoyed teaching a coding workshop on music using Sonic Pi. We, however, encountered a challenge of installing Sonic-Pi on a lab of computers. The workshop targets 5th-grade to 8th-grade students who have good typing skills. It would be cool if something like Sonic-Pi supported features like Blockly coding too.

In terms of musical motivations, I wanted to provide features like the following:

  • Like Sonic-Pi, the tool should make it easy to generate chords and scales.
  • I want it to feel simple like Sonic-Pi. I, however, don’t think I’ve achieved this yet.
  • I wanted the tool to have a concept of players who can generate music over a chord progression. I believe it would be cool to grow an ecosystem of players for various time signatures and musical types.
    I wanted to support the MIDI file format for output making it possible to blend music from this tool in sequencers broadly available on the market. This also enables us to print out sheet music using the MIDI files.
  • Building drum patterns can be tedious at times, I wanted to create a way to express rhythm simply.
  • We desired to have a browser-based interface that a teacher could install on a Raspberry Pi or some other computer. This was a key idea from one of my teachers.  I’m focusing on building a tool that works on a local area network.  (not the broad internet)
  • From a coding perspective, we need to build a tool that could interface with Blockly coding someday. JavaScript became a logical choice. I’ve wanted to explore a project the used TypeScript, NodeJS and Express too. I especially enjoyed using TypeScript for enums, classes, abstract classes, etc.

Here’s a sample MIDI file for your enjoyment:  jazz midi test

I do want to give a shout out to David Ingram of Google for putting together jsmidgen. David’s library handled all the low-level concerns for generating MIDI files, adding tracks, and notes. Please keep in mind that MIDI is a music protocol and file format that focuses on the idea of turning notes and off like switches over time. Make sure to check out his work. It’s great NodeJS library.

Here’s a quick tour of the API. It’s a work in progress.

Where do I get the code?

  • run app.js to load the browser application.   Once the application is running, you should find it running on http://localhost:3000 .
  • Make sure to check out the demo type scripts and music_maker.ts for sample code.

JSMIDGen reference

To learn more JSMIDGEN,
please visit

Hello world

var fs = require('fs');
var Midi = require('jsmidgen');
var Util = require('jsmidgen').Util;
import mm = require('./MusicMaker')

var beat=25;
var file = new Midi.File();

// Build a track
var track = new Midi.Track();

// Play a scale
var scale = mm.MakeScale("c4", mm.ScaleType.MajorPentatonic,2)

for(var i=0; i<scale.length; i++){

// Write a MIDI file
fs.writeFileSync('test.mid', file.toBytes(), 'binary');

Creating a new file and track

var file = new Midi.File();
var track = new Midi.Track();

// Play cool music here ...

Play three notes

track.addNote(0, mm.GetNoteNumber("c4"), beat);
track.addNote(0, mm.GetNoteNumber("d4"), beat);
track.addNote(0, mm.GetNoteNumber("e4"), beat);

Saving file to MIDI

fs.writeFileSync('test.mid', file.toBytes(), 'binary');

Playing a scale

var scale = mm.MakeScale("c4", mm.ScaleType.MajorPentatonic,2)

for(var i=0; i<scale.length; i++){

Playing drum patterns

var DrumNotes = mm.DrumNotes;
var addRhythmPattern = mm.AddRhythmPattern;
addRhythmPattern(track, "x-x-|x-x-|xxx-|x-xx",DrumNotes.ClosedHighHat);

Setup chord progression

var chordList = new Array();
chordList.push(new mm.ChordChange(mm.MakeChord("e4", mm.ChordType.Minor),4));
chordList.push(new mm.ChordChange(mm.MakeChord("c4", mm.ChordType.Major),4));
chordList.push(new mm.ChordChange(mm.MakeChord("d4", mm.ChordType.Major),4));
chordList.push(new mm.ChordChange(mm.MakeChord("c4", mm.ChordType.Major),4));

Play random notes from chord progression

var p = new mm.RandomPlayer
p.PlayFromChordChanges(track, chordList, 0);

Play root of chord every measure

var p = new mm.SimplePlayer
p.PlayFromChordChanges(track, chordList, 0);

Tour of chord players

var chordList = new Array();

// setup chord progression
chordList.push(new mm.ChordChange(mm.MakeChord("e4", mm.ChordType.Minor),4));
chordList.push(new mm.ChordChange(mm.MakeChord("c4", mm.ChordType.Major),4));
chordList.push(new mm.ChordChange(mm.MakeChord("d4", mm.ChordType.Major),4));
chordList.push(new mm.ChordChange(mm.MakeChord("c4", mm.ChordType.Major),4));

var chordPlayer = new mm.SimplePlayer
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.Arpeggio1
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.RandomPlayer
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.BassPLayer1
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.BassPLayer2
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.BassPLayer3
chordPlayer.PlayFromChordChanges(track, chordList, 0);

chordPlayer = new mm.OffBeatPlayer
chordPlayer.PlayFromChordChanges(track, chordList, 0);


If you write music using Music Maker, got ideas for features, or you’d like to contribute to the project, drop me a line in the comments or contact me through GitHub!  Hope you have a great one!


Real Impact – Women in STEAM Conference 2017

I wanted to give a shoutout to one of my favorite “hands on” learning organizations in Macon: Real Impact Center.   Real impact center focuses on helping to inspire the next generation of young ladies to consider careers as science and technology professionals.  Given that women are underrepresented in STEM career fields, Real Impact has an important mission in exposing girls to STEM careers, giving them ‘hands on’ maker experiences, and helping them see that STEAM careers are cool.   On April 29th, Real Impact organized the “Women in STEAM Conference” in Macon, GA serving more than 250 young ladies with inspiring speakers and hands-on learning experiences.    InspiredToEducate.NET had the honor of presenting a workshop on making electronic music using code.

Stephanie Espy, the author of STEM Gems, shared an empowering message to the ladies on becoming a successful science/technology leader.   Her book interviews 44 female STEM professionals and reviews patterns on their success.   I love books that explore the roots of innovative and creative thinking.   Her book seems to explore patterns of experiences of female STEM leaders like the roles parents play in learning, patterns in play, patterns in teaching, attitudes, and growth mindset.    It was a great keynote!

stem gems1

women in steam conf 2017

Our team had a great time sharing our workshop on Sonic-Pi, making cool electronic music through code.   Sonic-Pi, designed by Sam Aaron, provides a playful environment for writing techno or electronic music using simple coding patterns.   While it’s a great tool to engage students in code education, it’s primary objective is to engage students in exploring music theory.   It’s such a fun learning tool.   During this talk, we had the opportunity to share about the makers movement, our SparkMacon Makerspace, and the fun experiences of building stuff with code.   Given that we were serving girls during our workshop, I had the opportunity to share about the first computer programmer: Ada Lovelace.    Many were surprised to learn that the first computer programmer was a woman.   Additionally, she was one of the first to realize that computers would do more than just crunch math problems.   Hundreds of years ago before electronic computers, she theorized that computers could be used for creative experiences if you could symbolize the creative problem.  Since music theory provides a set of symbols and ideas for defining music, tools for creating music with computers became possible.   If you think about how many creative tasks we accomplish on computers today(creating graphics, music, engineering structures, etc),  this was a profound and visionary concept.

It was fun getting to share this workshop since I love music and building stuff with code.  Music people and coders go through the same emotional challenges when they start.  Both disciplines require practice, problem decomposition, building up of muscle memory, and social skills.  Some of the best programmers I’ve known were music people.   I also want to give a shout out to my friends Joey Allen and Isaiah who coached the workshop with me.   They did a great job inspiring the girls.   In the one hour workshop, almost everyone had the opportunity to sequence some sound samples and put them into a loop.   Some of the more advanced students started building drum patterns,melodies, and longer musical forms.

If you’re interested in learning more about Sonic Pi, check out, my blog post and this free ebook.  Interested in teaching an extended course in Sonic-Pi? check out   It has lesson plans covering 10+ weeks of material.

Special thanks to Real Impact for your leadership in growing the next generation of young makers in Macon, GA!   You are amazing!!  If you’re interested in learning more about Real Impact Center, providing financial support or volunteering, make sure to connect with their website:  .   They have some pretty awesome summer camps this summer!


Sonic Pi Screen



10 Tools You’ll Love at SparkMacon Makerspace

Spark Macon

SparkMacon is a community space equipped with the tools and grass-roots education required to convert your idea into a reality. We blend the best of art & technology. In this post, I wanted to give you a taste of the types of tools our makerspace can offer to makers of all ages.

Our Community: We’re very proud of our community. Many of our members go out of their way to coach, mentor, and teach the tools and their skills. Why? Because they love what they do and want to share that joy with others.

3D printing: Got an idea for a product? With our 3D printing equipment, you can create a prototype!

3D Modeling Software: With the high interest in 3D printing, it becomes important to know how to create 3D models. Our community will be offering additional workshops to train you in 3D modeling software that works for you. TinkerCAD is one of my favorite tools for beginners.

Laser Cutter: Laser cutting and engraving is such a fun technology. In the following video, you can how to use the laser cutter to create 3D structures. Great tool for artists and robot builders!!

Wood working space
Wood working space

Adobe Creative Cloud: Thanks to the generous support of Adobe, our space offers our members full access to the Adobe Creative Cloud. These are amazing tools for digital artists and creatives.

Robot building: We’re currently building out workshops to help you create your own DIY robot for tinkering and learning.

Electronics: The Arduino has become a popular open source electronics tool for prototyping products. If you’re interested in trying out Raspberry Pi’s, wearables, and other electronics tools, you have to visit our electronics lab.

Korg Kross: For our music creatives, we offer software and equipment for basic music recording and audio recording. When we first opened SparkMacon, it was REALLY fun learing our Korg Kross. We really need to have a SparkMacon Jam session soon!

HP Sprout

Make sure to visit to learn about our training workshops. There’s a maker and artist in all of us! We hope to support you in your creativity! Learn more at

I want to thank all of our members and partner communities. We’re very thankful for you, your support, and helping to grow our community by sharing your craft. We would be nothing without our community.

Hope you have a great week!

Why Does the Makers Movement Matter?

Robots Under God: A Project from Atlanta Mini Maker Faire 2013

As I woke up to attend the Atlanta Makerfaire 2014, I started to reflect upon why I personally get excited about growing the SparkMacon MakerSpace community. Why is building a makerspace community important? Why is growing a community of art and technology creatives worthy of investment and time?

Highlights from Atlanta Maker Faire 2014

Growing Innovative Culture and People: I personally believe that the organizations that will make the biggest impact in the world are creative organizations.   In the past few years, I started to become an anthropologist of innovation. I’m naturally curious about how communities organize themselves so that they maximize their impact and creative output. (i.e. Google, Apple, Pixar, Ideo, etc.)  What do these communities believe and value? What motivates them? How do they lead and communicate? Helping to grow SparkMacon’s community has been such a wonderful opportunity to explore these questions with other Middle Georgia leaders. By working hard and putting people first, we are trying to find answers to these questions. We have such a wonderful and generous team.

I believe the Makers movement is a game changer. In the context of education, I hope that we can inspire students to just love learning. The Maker education movement has challenged our communities to give students freedom to explore their own creativity and process of discovery. It’s amazing to see a child’s creative capacity if they are given the creative freedom, tools, and supportive coaching. On the business front, it’s amazing that we now live in a world where an ideas can be sketched on a computer. (i.e. an app, a 3D design, a song, art, etc) Over the next few years, we will continue to see that it’s possible to take the “bits” of your idea and convert them into a prototype or something that can be sold. (“atoms”) Check out our blog post here for more details on this trend.  I’m excited that I was able to take a Google Cardboard prototype that I created using TinkerCAD and turn it into a working minimum viable product.  The sketching process took one or two hours.  The 3D printing process took 5 to 6 hours.  In a world where digital fabrication technologies enable us to prototype new products in days, how do we teach our students and communities to become great product designers?  How do we empower their creativity and capacity for innovation?

Google Cardboard

Being creative and tinkering with my kids: While I enjoy technology, I love my family. I’m very thankful to my mom and dad for fostering my personal creativity through music. These creative experiences have given my life joy, richness, depth, and way to serve others though music.  I will always cherish my experiences as a choir director.   I think I’ve taken this ethos into my career as a software developer and my path as an aspiring maker. It’s wonderful to be able to be able to share the joy of making and tinkering with my kids and my wife. I love hearing my kids say “that’s cool!!” when they discover a cool robot, play with lego’s or make something awesome on their own. It’s the best feeling in the world.

Please consider finding and supporting a Makerspace or MakerFaire in your area.   It’s a worthy community effort.   It’s not just about technology or art.  It’s about making the world a better place.

All the best!


Support SparkMacon: Our MakerSpace for Macon, GA by giving to our IndieGogo funding campaign. .

Even small contributions are helpful. We’re very thankful for the generosity of our readers.
Top Stories on InspiredToEducate.NET


Science Education



5 Reasons Why We Should Value Teaching Music

Michael's violin

We love the Christmas season since we’re a musical family. My wife and I help lead a small music ministry in our church. I enjoy playing violin, piano, guitar and leading young musicians. I love to make music with my wife who has a wonderful taste in music, has a great ear for balance and sings a mean “alto” line.
As Advent and Christmas approach, it’s difficult to not get excited about all the opportunities to make music together and celebrate our faith through music making. Through this anticipation, I started to reflect upon the role music has had in forming me as a father, leader, and computer science professional. I wanted to share a few insights from my personal reflection.

Motivations for teaching music

  • Students need to practice the craft of making: I believe our capacity to create is one of our greatest gifts in personhood. In the act of making music, students learn the craft of pure expression. True music goes beyond reading notes on a page, reproducing guitar licks or simply imitating a master musician. True music happens when the notes, the silence, the timing, and the dynamics appear in the right proportion. True music happens when the student says something with their music from their soul. The craft of making also teaches students courage. It takes a lot for a young composer to share their gift/song with an audience. It takes a lot to get over fear: What if they don’t like it!?
  • Discipline: I have to say that I hated practicing music as a kid. I have to confess my parents were very effective at holding me accountable for practicing. While I didn’t appreciate this at the time, I have to admit that the discipline of practicing music got transferred into my discipline for learning computer science and the many other areas of my life. I still need to practice more!
  • Integrated thought: From a perspective of biology, music helps students develop both halves of their brain. The creative part of your mind becomes engaged with your creative mind.
  • Listening: Bernard M. Baruch has a great quote: “Most of the successful people I’ve known are the ones who do more listening than talking.” Students of music have to learn the craft of listening. Why? In group music making, students learn to listen for their entrances. In a choir, singers learn to listen to the phrases from the other voices. This act of listening helps the choir make one unified sound and communicate a unified emotional experience.
  • Team work and cooperation: Through the act of music making in a group, students learn how to follow each other. In the case of band or orchestra, students learn to follow the leadership of a master. On a personal level, I learned my first lessons about leadership from music, not computer science. In college, I was asked by my pastor to take a leadership position as a choir director and worship leader. Building on my experiences of great music teachers and choir directors, I was able to make that transition from being a player of music to someone who can encourage others to share their talents.

Schools, like any organization, have limited resources. How do we ensure that young person has the opportunity to grow their character and personhood through music? How do we protect arts education so that our students value being innovative and creative?

Music Lessons Info Graphic

Critical review of Seth Godin’s essay on “Art and Science and Making Things”

“Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while. That’s because they were able to connect experiences they’ve had and synthesize new things.”

Steve Jobs

I have played violin since the age of five.   In my youth, music helped build up my sense of worth, helped me enjoy making art with others, and encouraged me to appreciate making.    I have to confess that I hated the discipline of practicing and found it a chore.

As an adult, I reflect upon this time of my life with appreciation for my parents.   I cherish my talent as a musician.   It’s a source of creative thinking for my craft of writing software and leading teams.   When I learn a hard piece of music, I look at the page of dots and start to break the pieces of music into digestible phrases.   I attempt to slowly master each phrase of the music and incrementally integrate the parts into a total expressive form.   This same creative process occurs during software design.  In music and software, one breaks the experience into parts, masters each element, and puts the parts together.

As a musician and a technologist, I tend to pay attention to media discussing the intersection of art, technology and creativity.   Seth Godin recently gave an amazing and inspiring talk at the 2012 World Maker Faire.     His lecture challenged us to recognize how creative thinking and “making” are under attack by industrialization.  As a culture, why do we not value art and creativity?


I appreciated many aspects of Seth’s talk:

  • Just start and share:  Seth challenges us to start creating.   In many cases, our culture has taught us to seek and create perfection.   Many feel that we will never become perfect at making and creating.   So, why should we start?  Mr. Godin loudly challenges us to just start creating and share your work.  As Jon Acuff would say, “Murder perfection.”
  • Where do we teach experimentation and continuous improvement?  In school or the work place, how do we encourage innovation and creative thinking?   How do we create space for experimentation and the inevitable failed trials and experiments?
  • The internet is the platform to connect:  Mr. Godin argues that we are attracted to other makers and creative people.   The internet is a huge opportunity for people to connect with other creative people and inspire each other.

I do have a few challenges with Seth Godin’s talk though.

1)      There is no science lab that actually teaches science: During his talk, he claims that we do not really teach science in labs in schools.   Why?  Students are not discovering new knowledge.   They are just reproducing results and following scripted processes.    I would argue that the discipline of teaching science labs through scripted procedures is important.

  1. Any new scientific discovery must be peer reviewed and reproduced by peers in the community.
  2. In music, learning scales, theory, and imitating classics is important to learning the techniques of music making.   Likewise, scientists need the opportunity to pass along their craft of knowledge discovery to the next generation by teaching tools, processes, techniques and concepts.
  3. In the world of art, apprentices often learn the craft of their masters through imitation and modeling the behavior of a master.

2)      Industrialization stands in conflict with creative and independent thinking: Mr. Godin defines industrialization as the craft of incrementally making stuff better by a small degree.   In Mr. Godin’s view, true art favors the radical introduction of new ideas and expression.   I felt that Seth Godin put industrialization and art in stark opposition to each other.   Can the world use more art and creativity? Yes.  I, however, do not believe that every act of making should be an artistic experience.   Makers define the balance between the radical exploration of ideas (art) and incremental innovation. (industrialization)     Makers define themselves by the purpose of their creative act.  Does the piece exist to say something?  Does the piece exist for a functional reason? Perhaps the true conflict in our culture is pragmatism versus the opportunity for pure expression.

I value Seth Godin’s challenge to create space for true innovation and creative thinking.    This style of thinking needs a place in our educational system.   If we do not teach our students to be creative, how do we expect humanity to survive in a future filled with largely unknown challenges!?

How would you foster creativity in your classes or places of work?