Posts Tagged ‘dnbMedia’


Electronic music generation


The problem with writing electronic music is that it is normally done through an interface that doesn’t always reflect the artists’ primary interests. I’ll admit, Ableton Live is an excellent tool, and I use it as my primary tool for many creative tasks. However, I need finer control. I need to be able to apply a function to automate a control change sequence of events.

Some ideas:

  • Make the program revolve around minimalism so that the musical structure of the song is defined up-front, and can be dynamically changed using the smaller parts as the main ideas. Like a tracker does with patterns, but more modern.
  • Having designed image processing software, adapt ideas from this program in terms of visual layout and functionality, but more mouse driven.
  • Listen to structure of songs and represent them to create test input for the music-generating algorithm.
  • Generalize enough for other hardware, but also focus on building own hardware explicitly to maximize utility.
  • Balance the flexibility afforded by old NES programming language MML and the assembly compiler, against its tediousness in writing harmonies. Take advantage of the declarative ability to define musical phrases symbolically.

Speaking of NES:

It’s fairly easy to generate the 32ksample loop that the NES’s noise channel uses. The following C code will generate it on stdout (8bits/sample, 1 channel)

int main (int argc, char * argv[]) {
  unsigned char feedback;
  unsigned short nreg=1;
  int i;
  for (i=0;i>13)&1)^((nreg>>14)&1);
    nreg=(nreg<>14)&1)?'~':' ');

Then you loop it and only play it at specific sample rates, specifically (for US NESes) 3,579,545 Hz divided by the numbers in the NTSC line at

For the NES triangle, just take an ordinary triangle wave and degrade it to 4bits.



Recent development


Lately I’ve been learning new languages, Prolog being one of them. The problem with blogs is they need to be updated every now and then, and I don’t intend to do so in the most timely manner, but I will from time to time dump stuff here that seems important.

Current projects include:

  • Traffic on Demand (TOD)
    • Primary technical consultant
    • Network / Database administrator
    • Software developer
    • System engineer
  • UNCW
    • Grade student project and attend lab on Friday
    • Work with Eddie (the sysadmin)
      • FOG Server
        • Hoping to deploy before the summer’s up onto a decent server with the blessing of campus IT division which controls DHCP
      • Sysprep
        • Get it working for multiple hardware
  • Personal synthesizer project (dnbMedia)
    • Hardware
      • Desktop
        • Windows XP 32bit – 2.4 GHz – 2GB RAM
        • Presonus Firepod
        • Fostex 5″ stereo set and 8″ sub
        • Balanced cables
      • Laptop
        • MacBook – 2.4 GHz – 2GB RAM
      • M-Audio Keystation 88es
      • Behringer BCR-2000 rotary controller
    • Software
      • PortAudio
      • RtMidi
      • wxWidgets
      • libsamplerate (SRC)
    • Next steps:
      • Incorporate a filtering library
      • Needs more foundational structure
  • Software Engineering project
    • Reengineer UML diagrams from written code for TOD
  • Symbolic Artificial Intelligence project
    • Russian Language translation
  • Systems Simulation project
    • Simulate before and after computerization of operations for TOD
  • Carolina Christian Radio
    • Keep audio programming up to date
    • Server manager

I’d like to contribute more to the open source software community, but the problems I’ve encountered have been the typical “I can’t get it to work on my computer” issues that plague much of software development in general, or a complete lack of communication from some authors.

I was at an engineering conference not too long ago, and met some very interesting people. I have not studied under the engineer track, but I have known many engineers in my day, and have learned from them how things are to be done. I consider myself an engineer to some degree, given my level of involvement and background with technology, and the broad level of support that I offer my clients.

My phone is an LG Dare, which I selected for its simplicity and touch-screen usability. It offers audio and video playback and some other decent features, but it disappoints me in that I cannot develop software that will run on it. I could hack it to run some flash, but honestly I have no desire to relearn flash since it wouldn’t be very rewarding. It has an Alarm-only mode, which is my favorite element; no waking me up these days! The “waking me up” tier of support is not currently offered but can be made available for an additional fee.