kellydunn / bloopsaphone Goto Github PK
View Code? Open in Web Editor NEWarcade sounds and chiptunes for ruby and c (originally by _why)
License: Other
arcade sounds and chiptunes for ruby and c (originally by _why)
License: Other
|~~ |~~ | | :$: bloopsaphone :$: `''''''''''''''''` for writing chiptune-style songs in c or ruby. you know: the sounds of ataris, gameboys and the like. ~ -$- ABOUT this is a small c library for sending chiptunes through portaudio, which is a rather light cross-platform audio lib. <http://www.portaudio.com/> it also records to a wav file using libsndfile. right now i'm only including ruby bindings. you are welcome to contribute code to hook up to other languages, though. i wrote this for h-ety h. <http://hacketyhack.net/> i don't have binaries ready for this yet, so if you're on windows or os x, you may have to wait until HH comes out at ART AND CODE. the tribulations you face. ~ -$- THE BLOOPSAPHONE THEME SONG (in ruby) require 'bloops' # the bloops o' phone b = Bloops.new b.tempo = 320 # melodious s1 = b.sound Bloops::SQUARE s1.punch = 0.5 s1.sustain = 0.4 s1.decay = 0.2 s1.arp = 0.4 s1.aspeed = 0.6 s1.repeat = 0.6 s1.phase = 0.2 s1.psweep = 0.2 # beats s2 = b.sound Bloops::NOISE s2.punch = 0.5 s2.sustain = 0.2 s2.decay = 0.4 s2.slide = -0.4 s2.phase = 0.2 s2.psweep = 0.2 # the tracks b.tune s1, "f#5 c6 e4 b6 g5 d6 4 f#5 e5 c5 b6 c6 d6 4 " b.tune s2, "4 c6 4 b5 4 4 e4 4 c6 4 b5 4 4 e4" # and away we go b.play sleep 1 while !b.stopped? ~ -$- BUILDING FOR RUBY If Ruby is in your path and PortAudio 1.9 or greater is installed: make ruby To install PortAudio 1.9 under Ubuntu: aptitude install portaudio19-dev Under MacPorts, you may need to add /opt/local to your make settings: make CFLAGS="-I/opt/local/include" \ LDFLAGS="-L/opt/local/lib" \ ruby ~ -$- THE IDEALS, -1- ASYNCHRONOUS. You send it a song and it plays in the background. You'll get an event when it finishes. -2- SMALL. This is just a toy, I don't want it to be very big and comprehensive. Just to play little tunes with a nostalgic arcade sound rather than the CASIO-stylings of most MIDI. -3- CUSTOM NOTATION. Someone told me about Nokring, iMelody, numbered musical notation and I did some reading. They're little languages for texting yourself a ringtone. <http://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language> <http://homepage.mac.com/alvinmok/ericsson/emelody.html> Bloopsaphone uses a variation on RTTTL. Instead of commas, I use whitespace. A rest is simply a number. A plus sign moves everything up an octave. A minus down an octave. The Simpsons' Theme, for instance, would be: 32 + C E F# 8:A G E C - 8:A 8:F# 8:F# 8:F# 2:G Which translates into: * a 1/32nd note rest. * change one octave up. * C quarter note. * E quarter note. * F# quarter note. * A eighth note. * G quarter. * E quarter. * C one-quarter note. * change one octave down. * A eighth. * Three F# eighths. * G half note. The colons are optional. They are there because you can place an octave number after each note. Somehow "8B6" (an eighth note of B at the sixth octave) looks more confusing than "8:B6". I guess I figured that the timing "8" is conceptually separate from the actual tone "B6", even though they both comprise the note itself. -4- SERIALIZE SOUNDS. To accomodate passing instruments between ruby and c, bloopsaphone comes with a tiny file format for describing sounds. You can find examples of these in the sounds/ folder in this distro. Possible sound types are 'square', 'sawtooth', 'sine' and 'noise'. All other settings go from 0.0 to 1.0. The 'freq' setting is only used if the sound is played without a tune.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.