From 4d94cec841251757619ffbeec37adac3f7d8ab45 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 08:56:31 +0200 Subject: [PATCH 01/11] Add MuzHack files --- LICENSE | 51 ++++++++++++++ muzhack/description.md | 1 + muzhack/files/adapter-board-files | 1 + muzhack/files/littleBitsMidiNotes.ino | 1 + muzhack/instructions.md | 97 ++++++++++++++++++++++++++ muzhack/metadata.yaml | 9 +++ muzhack/pictures/tubfun.jpg | Bin 0 -> 138905 bytes 7 files changed, 160 insertions(+) create mode 100644 LICENSE create mode 100644 muzhack/description.md create mode 120000 muzhack/files/adapter-board-files create mode 120000 muzhack/files/littleBitsMidiNotes.ino create mode 100644 muzhack/instructions.md create mode 100644 muzhack/metadata.yaml create mode 100644 muzhack/pictures/tubfun.jpg diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..100f8e0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,51 @@ +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. +"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. +"Licensor" means the individual or entity that offers the Work under the terms of this License. +"Original Author" means the individual or entity who created the Work. +"Work" means the copyrightable work of authorship offered under the terms of this License. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike. +2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; +to create and reproduce Derivative Works; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(e) and 4(f). + +4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(d), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(d), as requested. +You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-NonCommercial-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. +You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. +If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. +For the avoidance of doubt, where the Work is a musical composition: + +Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. +Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. +Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. diff --git a/muzhack/description.md b/muzhack/description.md new file mode 100644 index 0000000..4e8c68a --- /dev/null +++ b/muzhack/description.md @@ -0,0 +1 @@ +My lovely wife bought me the littlebits synth kit for Christmas, and I spent several days annoying everyone with screechy sounds. After a while I wanted more control over it, to sync it with other things, or to play it from a proper keyboard. diff --git a/muzhack/files/adapter-board-files b/muzhack/files/adapter-board-files new file mode 120000 index 0000000..ef17a5e --- /dev/null +++ b/muzhack/files/adapter-board-files @@ -0,0 +1 @@ +../../adapter-board-files \ No newline at end of file diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino new file mode 120000 index 0000000..16c5d5a --- /dev/null +++ b/muzhack/files/littleBitsMidiNotes.ino @@ -0,0 +1 @@ +../../littleBitsMidiNotes.ino \ No newline at end of file diff --git a/muzhack/instructions.md b/muzhack/instructions.md new file mode 100644 index 0000000..7b87efe --- /dev/null +++ b/muzhack/instructions.md @@ -0,0 +1,97 @@ +# Shopping List +You will need the following stuff - + +* [LittleBits synth kit](http://littlebits.cc/kits/synth-kit) +* EITHER + * 2x JST SH Jumper 3 Wire Assembly (available at Sparkfun) +* OR + * 2x JST-SH 3-pin 1mm connectors (available at Sparkfun in the US or Protopic in the UK) + * Materials to etch your own, small, simple PCB (unless you order them from a PCB manufacturer) + * I won't go into the details in this project, but there's many other guides on how to make them - + http://www.instructables.com/id/How-to-Etch-a-PCB/ + http://www.instructables.com/id/Cheap-and-Easy-Toner-Transfer-for-PCB-Making/ +* An Arduino Leonardo, must be a Leonardo if you want to do USB MIDI, other Arduinos will work otherwise. +* [A Breadboard](http://en.wikipedia.org/wiki/Breadboard) +* Some solid core wire, the right size to fit in the breadboard (around 1mm) like this, available at any electronics shop. +MIDI Sequencing software, I use [Ableton Live](http://www.ableton.com/), but [Garageband](https://www.apple.com/mac/garageband/), [FL Studio](http://www.image-line.com/flstudio/) or [Reaper](http://www.reaper.fm/) (free!) will work. + +# Step 1: Make the Connector +We're going to connect the littlebits to the Arduino via a breadboard. Currently there's no way to get or make your own 'bitsnap' connector, that's the three-pinned magnetic plastic thing on your littlebits. So instead of making our own, we'll use the 'split' module, which handily uses readily available connectors for it's wires. This means we **don't need to make any permanent changes to the littlebits :)** + +Instead of cutting cables, or breaking apart the connectors, we can take advantage of the little white connector on the split module, replacing the input on that with our own from the Arduino. There's a couple of options here, you can either use the jumper-wires in the first picture (much easier, harder to find, a bit more expensive) or use the surface-mount connectors shown in the second picture (advanced, easer to find, cheaper). + +## Jumper wires +Simply strip the ends of the wires and either solder a short length of solid-core wire to each of the three ends. If you're relatively new to soldering you can [find out how to do it on this instructable](http://www.instructables.com/id/Soldering-wires-together/). + +Now, take your *split* module and remove the two input ends, those are the ones that only have one set of wires going to them. Just pull the white plug out of it's plastic socket. It might need a bit of a wiggle but they're fairly easy. + +Insert your plug (along with it's nicely soldered tails) into the socket on the input bit. You've now got a connector to plug your littlebits into your breadboard! Simple as that. + +## Surface-mount connectors +Now, this option may not be suitable for any beginner solderers out there, it involves some VERY small pins, that are very close together. With that in mind, here we go… + +The eagle files and printable board for the little adapter board are up on the [project's github](https://github.com/tub/Littlebits-Arduino/tree/master/adapter-board-files). + +It was very nicely laid out and etched for me by [Alex](https://github.com/alexanderhosford) at [my local hackspace](http://www.buildbrighton.com/) (I was feeling lazy and he's easily persuaded). I won't go into the PCB making details in this instructable, but there's many other guides on how to make them, e.g + +* http://www.instructables.com/id/Etching-Method-and-Sticker-Method-of-PCB-fabricati/ +* http://www.instructables.com/id/How-to-Etch-a-PCB/ + +If you're using the PNG image of the board layout to etch, remember to set the print-size to 2400 DPI otherwise it'll print at the wrong size! + +Since the boards are so small we etched eight of them in one go (photo #4), to get them apart I just scored them **carefully** with a craft knife a few times and snapped them (photo #5). + +## Soldering Tips + +I managed to solder the surface mount connector by simply tinning each pin, along with the two anchoring tags at the front of the connector, then tinning the pads on the board (photo #6). All I had to do then was heat up each pad until the solder on them melted and stuck the component to the board. It wasn't as tricky as I thought it was going to be. + +The three header pins go in the three holes towards the back of the board, these are soldered like a normal through-hole component, no special treatment. The finished boards can be seen in the last photo on this step. + +Next, just unplug the wires from the input end of the split bit and plug them into your adapter boards. Now you've got a breadboard to littlebits adapter! + +# Step 2: PWM filter circuit + +The Arduino sketch we're going to use takes advantage of the analogWrite function, which uses pulse-width modulation to fake an analogue output. This means that instead of actually turning the voltage up and down, it switches it on and off very quicky. To fake low voltages, it leaves an output mostly off but turns it on for a reeeeeeally short amount of time, thousands of times a second. To fake higher voltages it turns the output on (which is 5v) most of the time, turning it off for a tiny amount of time, again, thousands of times a second. This is better summarised on the [Secrets of Arduino PWM page](http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM). + +Annoying this [thousands of times a second](thousands of times a second) is 490 Hz which is in the frequency range we can hear, so it turns up as a buzz on the littlebits speaker! You can hear this in the video attached to this step, it's supposed to just be a rising tone, but instead there's also the buzz. In order to get rid of this buzz we need to put the signal through a low-pass filter to smooth out the choppy waveform. We can achieve this using just a resistor and a capacitor. + +The first picture shows an approximation of what I set up on my breadboard, except it's easier to follow (and says Arduino Uno, but ignore that bit). + +It's worth pointing out that the colours on the littlebits wires are slightly confusing - + +Red - Ground, 0v +Orange - Signal +White - 5v + +#Step 3: Arduino software + +## USB MIDI with arcore +In order to make the MIDI side of this project really easy, I've used a modified version of the Leonardo firmware called arcore. It adds USB MIDI support so you can just plug in the Arduino and it gets recognised as a MIDI interface in your sequencing software. Installation pretty simple, instructions are on [the arcore project page](https://github.com/rkistner/arcore). + +Once it's installed and you've restarted the Arduino software, make sure you select the *"Arduino Leonardo (arcore)"* board from the Board menu as shown in the picture. + +### The sketch +The Arduino sketch, which is on [my github project](https://github.com/tub/Littlebits-Arduino), does several things with the MIDI data it receives. + +### MIDI Clock + +When the Arduino is sent a MIDI clock signal, it will pull pin 3 high, and output an inverted pulse for every beat. When a stop signal is sent, pin 3 will go back to 0v. This allows us to hook up a MIDI clock to trigger the micro-sequencer littlebit, and keep it in time. + +### MIDI Notes + +If note data is sent to the Arduino, pin 5 is set to a voltage proportional to the note's frequency, which allows us to use MIDI notes as a control voltage. e.g. to control an oscillator's pitch. Pin 4 will get a pulse sent to it when a note-on is fired, this allows us to trigger envelopes or other bits when a note is pressed. + +### MIDI CC messages + +Pin 6 will output a voltage proportional to any MIDI Control Change #1 messages received. This allows us to link controls within software or even knobs on MIDI controllers to littlebits. + +### Installing the sketch +Simply download the [.ino file the project page](https://github.com/tub/Littlebits-Arduino/blob/master/littleBitsMidiNotes.ino) and open it in the Arduino editor. Hit upload (remember to select the arcore board in the Boards menu). + +# Step 4: Go! + +Now you're ready to experiment with your MIDI Littlebits. + +There's a quick project to get you started in the picture attached to this step. It synchronises the *micro sequencer bit* with your MIDI clock. Make sure you have 5v and GND connected to the correct wires (check step 2 if you're not sure), and connect the middle wire to pin 3, the clock pulse pin. Then connect the micro sequencer to your Arduino-littlebit converter, then two oscillators, then the speaker. + +In your MIDI sequencing software, make sure that the MIDI clock is being sent to the *Arduino Leonardo* MIDI device. diff --git a/muzhack/metadata.yaml b/muzhack/metadata.yaml new file mode 100644 index 0000000..c243c4e --- /dev/null +++ b/muzhack/metadata.yaml @@ -0,0 +1,9 @@ +projectId: littlebits-midi-synth +title: USB LittleBits MIDI Synth [by tubfun] +tags: + - littlebits + - midi + - synth + - korg + - sync +licenseId: cc-by-nc-sa-2.5 diff --git a/muzhack/pictures/tubfun.jpg b/muzhack/pictures/tubfun.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12ad8edd72e841d773f833f477f2e09706e1ca72 GIT binary patch literal 138905 zcmb5V2Uru^7B(Cp^xmb2lmH1$KtQ^5Na&$==>!P9Dk9Rm^d6)ILY3Y@=~AV4lqv#( zpdujR`QkbEo^$W_+~@zEfAX;B&01@(^{%z|%+4?~e=Ps837~?hLDc{_I5+?e><942 zHeowdS=mMpuB!&sQpG9&078tdmzO&(I{<+6@biJIE3uoJnX?nF0B`|J08#)mfYjFB z*Go}PPYZzEe%t=u|M&KN5rFjs0L%&gZ~cE;|6kuo9UOh_0RS8#tlZPV*B*(*K>z^0 zyS9{@nGi|0TzR>@;6?7O26eiSp3P~%}5c8`2YZ18Ydq$ zqrdENWgod1nqV;lR_=iCgBt!z{>Z~lM;D8+eQ`_NJT-s&`EB#Y-d7o0O8_SpzjJYf z{vKm2A3T7AqlzjP3t%yui@(Od{NurV0}Ou4|Mc_7MOg=nv3~G;Ty0@`Sj>#Yu|A&g z-?6Zq@k$)s)qlsr`o|mg^3(el2fU9S?mE9?Ve^%M57bxN9 zWB9MWKyxRA8uVZGAzto(&P6OYV406U{5LnOf8eyOkE%KrWBmZXIC>cUt{WEP-*T{3 z`CVHfES3itCfY8|l>1P(dC z4J-TKc6xu>{MF|l3+F$3fBfAW8|8o7{1xHgUpAgVMxZe89`;WLs0EY*N&=+-?7#;= z1)w}o1uK;T%KXhh?>~651DpW|Sf+pZ@do%~Bmd@M3{Xm8_6PsnhdtcK24Vm9`6-so zKUsSIqsRLBJ7X+o&;P6dz!zJAe`hE7pLH4u>Av;1hJ69pZaGIb5(3cuf7KU%7yl#v z0=8YjU;n2+{u=%|_Ok*|#EyXbpNx=LR){}G!uM}G!T-vk4{PZMu*J4pSUXQF*MBqp zuMu_fNMZg*^Scs`F*@IM0O11vNQIY#kA)Y6i-pUCkNzvhKOX<9N_gpbEqFb69eAC1 z699I+*LZz+ukeQPUgCBA?el++{a;@G9{WG@{Vn^Q?e9_ecf9|swIjftLWzQff{Q|h z;tmBjh1TCz>=cX?A`}`FyjTs(-{a=~kN&@MK>*CKwfc8e|97n4M*sp~gk^#N1Y&J{ zuvPtCVGlqs*6V*BC;ws!WCMx-q5s#cmHa)I|ILCxl|Y3+5x`EsM<7KYLIC@X|9#{U z@M3jR*jDv#_J18Ye_Q-l29Ez>g{{ipegyxVb-(B8@7@7e-tJi5j((0o*tG)yQ1`)JTApv$J;i*mKjnKmPcNJzo)~0RT6tfBbP>^2Z-HrC9�KjYaKh^-s00JOB0X~p` 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

}PfEk1b>bH1O%6nDCMW&Gl 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 A5C8xG literal 0 HcmV?d00001 From 6a889f4512cd09ddf9e0ae5789fbf997757954ae Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 09:05:09 +0200 Subject: [PATCH 02/11] Rename picture --- muzhack/pictures/{tubfun.jpg => 1_main.jpg} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename muzhack/pictures/{tubfun.jpg => 1_main.jpg} (100%) diff --git a/muzhack/pictures/tubfun.jpg b/muzhack/pictures/1_main.jpg similarity index 100% rename from muzhack/pictures/tubfun.jpg rename to muzhack/pictures/1_main.jpg From ec374df9e04ec74be15d3e672ee59ae40e8834ad Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 09:10:05 +0200 Subject: [PATCH 03/11] Add pictures --- muzhack/instructions.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/muzhack/instructions.md b/muzhack/instructions.md index 7b87efe..f1b977a 100644 --- a/muzhack/instructions.md +++ b/muzhack/instructions.md @@ -1,4 +1,5 @@ # Shopping List + You will need the following stuff - * [LittleBits synth kit](http://littlebits.cc/kits/synth-kit) @@ -16,11 +17,15 @@ You will need the following stuff - MIDI Sequencing software, I use [Ableton Live](http://www.ableton.com/), but [Garageband](https://www.apple.com/mac/garageband/), [FL Studio](http://www.image-line.com/flstudio/) or [Reaper](http://www.reaper.fm/) (free!) will work. # Step 1: Make the Connector + +![Connector](http://aknuds1.github.io/Littlebits-Arduino/assets/images/connector1.jpg "Connector") + We're going to connect the littlebits to the Arduino via a breadboard. Currently there's no way to get or make your own 'bitsnap' connector, that's the three-pinned magnetic plastic thing on your littlebits. So instead of making our own, we'll use the 'split' module, which handily uses readily available connectors for it's wires. This means we **don't need to make any permanent changes to the littlebits :)** Instead of cutting cables, or breaking apart the connectors, we can take advantage of the little white connector on the split module, replacing the input on that with our own from the Arduino. There's a couple of options here, you can either use the jumper-wires in the first picture (much easier, harder to find, a bit more expensive) or use the surface-mount connectors shown in the second picture (advanced, easer to find, cheaper). ## Jumper wires + Simply strip the ends of the wires and either solder a short length of solid-core wire to each of the three ends. If you're relatively new to soldering you can [find out how to do it on this instructable](http://www.instructables.com/id/Soldering-wires-together/). Now, take your *split* module and remove the two input ends, those are the ones that only have one set of wires going to them. Just pull the white plug out of it's plastic socket. It might need a bit of a wiggle but they're fairly easy. @@ -28,6 +33,7 @@ Now, take your *split* module and remove the two input ends, those are the ones Insert your plug (along with it's nicely soldered tails) into the socket on the input bit. You've now got a connector to plug your littlebits into your breadboard! Simple as that. ## Surface-mount connectors + Now, this option may not be suitable for any beginner solderers out there, it involves some VERY small pins, that are very close together. With that in mind, here we go… The eagle files and printable board for the little adapter board are up on the [project's github](https://github.com/tub/Littlebits-Arduino/tree/master/adapter-board-files). @@ -51,6 +57,8 @@ Next, just unplug the wires from the input end of the split bit and plug them in # Step 2: PWM filter circuit +![PWM](http://aknuds1.github.io/Littlebits-Arduino/assets/images/pwm1.jpg "PWM") + The Arduino sketch we're going to use takes advantage of the analogWrite function, which uses pulse-width modulation to fake an analogue output. This means that instead of actually turning the voltage up and down, it switches it on and off very quicky. To fake low voltages, it leaves an output mostly off but turns it on for a reeeeeeally short amount of time, thousands of times a second. To fake higher voltages it turns the output on (which is 5v) most of the time, turning it off for a tiny amount of time, again, thousands of times a second. This is better summarised on the [Secrets of Arduino PWM page](http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM). Annoying this [thousands of times a second](thousands of times a second) is 490 Hz which is in the frequency range we can hear, so it turns up as a buzz on the littlebits speaker! You can hear this in the video attached to this step, it's supposed to just be a rising tone, but instead there's also the buzz. In order to get rid of this buzz we need to put the signal through a low-pass filter to smooth out the choppy waveform. We can achieve this using just a resistor and a capacitor. @@ -59,18 +67,22 @@ The first picture shows an approximation of what I set up on my breadboard, exce It's worth pointing out that the colours on the littlebits wires are slightly confusing - -Red - Ground, 0v -Orange - Signal -White - 5v +* Red - Ground, 0v +* Orange - Signal +* White - 5v + +# Step 3: Arduino software -#Step 3: Arduino software +![Arduino Software](http://aknuds1.github.io/Littlebits-Arduino/assets/images/arduino-software.jpg "Arduino Software") ## USB MIDI with arcore + In order to make the MIDI side of this project really easy, I've used a modified version of the Leonardo firmware called arcore. It adds USB MIDI support so you can just plug in the Arduino and it gets recognised as a MIDI interface in your sequencing software. Installation pretty simple, instructions are on [the arcore project page](https://github.com/rkistner/arcore). Once it's installed and you've restarted the Arduino software, make sure you select the *"Arduino Leonardo (arcore)"* board from the Board menu as shown in the picture. ### The sketch + The Arduino sketch, which is on [my github project](https://github.com/tub/Littlebits-Arduino), does several things with the MIDI data it receives. ### MIDI Clock @@ -90,6 +102,8 @@ Simply download the [.ino file the project page](https://github.com/tub/Littlebi # Step 4: Go! +![Go!](http://aknuds1.github.io/Littlebits-Arduino/assets/images/go.jpg "Go!") + Now you're ready to experiment with your MIDI Littlebits. There's a quick project to get you started in the picture attached to this step. It synchronises the *micro sequencer bit* with your MIDI clock. Make sure you have 5v and GND connected to the correct wires (check step 2 if you're not sure), and connect the middle wire to pin 3, the clock pulse pin. Then connect the micro sequencer to your Arduino-littlebit converter, then two oscillators, then the speaker. From e48dc1cf6f42e3c23a830562005bada9b93fc64d Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 09:16:10 +0200 Subject: [PATCH 04/11] Fix instructions --- muzhack/instructions.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/muzhack/instructions.md b/muzhack/instructions.md index f1b977a..9ad2e41 100644 --- a/muzhack/instructions.md +++ b/muzhack/instructions.md @@ -4,17 +4,17 @@ You will need the following stuff - * [LittleBits synth kit](http://littlebits.cc/kits/synth-kit) * EITHER - * 2x JST SH Jumper 3 Wire Assembly (available at Sparkfun) + * 2x JST SH Jumper 3 Wire Assembly (available at [Sparkfun](https://www.sparkfun.com/products/10358)) * OR - * 2x JST-SH 3-pin 1mm connectors (available at Sparkfun in the US or Protopic in the UK) - * Materials to etch your own, small, simple PCB (unless you order them from a PCB manufacturer) + * 2x JST-SH 3-pin 1mm connectors (available at [Sparkfun](https://www.sparkfun.com/products/10358) in the US or [Protopic](http://proto-pic.co.uk/connector-1-0mm-horizontal-3-pin/) in the UK) + * **Materials to etch your own, small, simple PCB** (unless you order them from a PCB manufacturer) * I won't go into the details in this project, but there's many other guides on how to make them - http://www.instructables.com/id/How-to-Etch-a-PCB/ http://www.instructables.com/id/Cheap-and-Easy-Toner-Transfer-for-PCB-Making/ -* An Arduino Leonardo, must be a Leonardo if you want to do USB MIDI, other Arduinos will work otherwise. +* An **Arduino Leonardo**, must be a Leonardo if you want to do USB MIDI, other Arduinos will work otherwise. * [A Breadboard](http://en.wikipedia.org/wiki/Breadboard) -* Some solid core wire, the right size to fit in the breadboard (around 1mm) like this, available at any electronics shop. -MIDI Sequencing software, I use [Ableton Live](http://www.ableton.com/), but [Garageband](https://www.apple.com/mac/garageband/), [FL Studio](http://www.image-line.com/flstudio/) or [Reaper](http://www.reaper.fm/) (free!) will work. +* **Some solid core wire**, the right size to fit in the breadboard (around 1mm) [like this](http://www.hobbytronics.co.uk/breadboard-wire), available at any electronics shop. +* **MIDI Sequencing software**, I use [Ableton Live](http://www.ableton.com/), but [Garageband](https://www.apple.com/mac/garageband/), [FL Studio](http://www.image-line.com/flstudio/) or [Reaper](http://www.reaper.fm/) (free!) will work. # Step 1: Make the Connector @@ -61,7 +61,7 @@ Next, just unplug the wires from the input end of the split bit and plug them in The Arduino sketch we're going to use takes advantage of the analogWrite function, which uses pulse-width modulation to fake an analogue output. This means that instead of actually turning the voltage up and down, it switches it on and off very quicky. To fake low voltages, it leaves an output mostly off but turns it on for a reeeeeeally short amount of time, thousands of times a second. To fake higher voltages it turns the output on (which is 5v) most of the time, turning it off for a tiny amount of time, again, thousands of times a second. This is better summarised on the [Secrets of Arduino PWM page](http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM). -Annoying this [thousands of times a second](thousands of times a second) is 490 Hz which is in the frequency range we can hear, so it turns up as a buzz on the littlebits speaker! You can hear this in the video attached to this step, it's supposed to just be a rising tone, but instead there's also the buzz. In order to get rid of this buzz we need to put the signal through a low-pass filter to smooth out the choppy waveform. We can achieve this using just a resistor and a capacitor. +Annoying this **thousands of times a second** is 490 Hz which is in the frequency range we can hear, so it turns up as a buzz on the littlebits speaker! You can hear this in the video attached to this step, it's supposed to just be a rising tone, but instead there's also the buzz. In order to get rid of this buzz we need to put the signal through a low-pass filter to smooth out the choppy waveform. We can achieve this using just a resistor and a capacitor. The first picture shows an approximation of what I set up on my breadboard, except it's easier to follow (and says Arduino Uno, but ignore that bit). @@ -98,7 +98,7 @@ If note data is sent to the Arduino, pin 5 is set to a voltage proportional to t Pin 6 will output a voltage proportional to any MIDI Control Change #1 messages received. This allows us to link controls within software or even knobs on MIDI controllers to littlebits. ### Installing the sketch -Simply download the [.ino file the project page](https://github.com/tub/Littlebits-Arduino/blob/master/littleBitsMidiNotes.ino) and open it in the Arduino editor. Hit upload (remember to select the arcore board in the Boards menu). +Simply download the [.ino file the project page](https://github.com/tub/Littlebits-Arduino/blob/master/littleBitsMidiNotes.ino) and open it in the Arduino editor. Hit upload (remember to select the *arcore* board in the Boards menu). # Step 4: Go! From cdec0651ca273e8ef85b479cf0f4e73857422454 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 09:34:31 +0200 Subject: [PATCH 05/11] Editing --- muzhack/instructions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/muzhack/instructions.md b/muzhack/instructions.md index 9ad2e41..ee05698 100644 --- a/muzhack/instructions.md +++ b/muzhack/instructions.md @@ -38,7 +38,7 @@ Now, this option may not be suitable for any beginner solderers out there, it in The eagle files and printable board for the little adapter board are up on the [project's github](https://github.com/tub/Littlebits-Arduino/tree/master/adapter-board-files). -It was very nicely laid out and etched for me by [Alex](https://github.com/alexanderhosford) at [my local hackspace](http://www.buildbrighton.com/) (I was feeling lazy and he's easily persuaded). I won't go into the PCB making details in this instructable, but there's many other guides on how to make them, e.g +It was very nicely laid out and etched for me by [Alex](https://github.com/alexanderhosford) at [my local hackspace](http://www.buildbrighton.com/) (I was feeling lazy and he's easily persuaded). I won't go into the PCB making details in this manual, but there's many other guides on how to make them, e.g * http://www.instructables.com/id/Etching-Method-and-Sticker-Method-of-PCB-fabricati/ * http://www.instructables.com/id/How-to-Etch-a-PCB/ @@ -81,23 +81,23 @@ In order to make the MIDI side of this project really easy, I've used a modified Once it's installed and you've restarted the Arduino software, make sure you select the *"Arduino Leonardo (arcore)"* board from the Board menu as shown in the picture. -### The sketch +## The sketch The Arduino sketch, which is on [my github project](https://github.com/tub/Littlebits-Arduino), does several things with the MIDI data it receives. -### MIDI Clock +## MIDI Clock When the Arduino is sent a MIDI clock signal, it will pull pin 3 high, and output an inverted pulse for every beat. When a stop signal is sent, pin 3 will go back to 0v. This allows us to hook up a MIDI clock to trigger the micro-sequencer littlebit, and keep it in time. -### MIDI Notes +## MIDI Notes If note data is sent to the Arduino, pin 5 is set to a voltage proportional to the note's frequency, which allows us to use MIDI notes as a control voltage. e.g. to control an oscillator's pitch. Pin 4 will get a pulse sent to it when a note-on is fired, this allows us to trigger envelopes or other bits when a note is pressed. -### MIDI CC messages +## MIDI CC messages Pin 6 will output a voltage proportional to any MIDI Control Change #1 messages received. This allows us to link controls within software or even knobs on MIDI controllers to littlebits. -### Installing the sketch +## Installing the sketch Simply download the [.ino file the project page](https://github.com/tub/Littlebits-Arduino/blob/master/littleBitsMidiNotes.ino) and open it in the Arduino editor. Hit upload (remember to select the *arcore* board in the Boards menu). # Step 4: Go! From b21dd9223d81703421fcaeb75a050309cc276b56 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 23 May 2016 10:08:05 +0200 Subject: [PATCH 06/11] Move files --- adapter-board-files | 1 + littleBitsMidiNotes.ino | 154 +----------------- muzhack/files/adapter-board-files | 1 - .../files/adapter-board-files}/eagle.epf | 0 .../adapter-board-files}/toby_little_bits.b#1 | 0 .../adapter-board-files}/toby_little_bits.b#2 | 0 .../adapter-board-files}/toby_little_bits.brd | 0 .../adapter-board-files}/toby_little_bits.s#1 | 0 .../adapter-board-files}/toby_little_bits.sch | 0 .../toby_little_bits_2.b#1 | 0 .../toby_little_bits_2.b#2 | 0 .../toby_little_bits_2.brd | 0 .../toby_little_bits_2.sch | 0 .../toby_little_bits_2400dpi.png | Bin muzhack/files/littleBitsMidiNotes.ino | 154 +++++++++++++++++- 15 files changed, 155 insertions(+), 155 deletions(-) create mode 120000 adapter-board-files mode change 100644 => 120000 littleBitsMidiNotes.ino delete mode 120000 muzhack/files/adapter-board-files rename {adapter-board-files => muzhack/files/adapter-board-files}/eagle.epf (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits.b#1 (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits.b#2 (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits.brd (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits.s#1 (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits.sch (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits_2.b#1 (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits_2.b#2 (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits_2.brd (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits_2.sch (100%) rename {adapter-board-files => muzhack/files/adapter-board-files}/toby_little_bits_2400dpi.png (100%) mode change 120000 => 100644 muzhack/files/littleBitsMidiNotes.ino diff --git a/adapter-board-files b/adapter-board-files new file mode 120000 index 0000000..eddab4e --- /dev/null +++ b/adapter-board-files @@ -0,0 +1 @@ +muzhack/files/adapter-board-files \ No newline at end of file diff --git a/littleBitsMidiNotes.ino b/littleBitsMidiNotes.ino deleted file mode 100644 index 0891824..0000000 --- a/littleBitsMidiNotes.ino +++ /dev/null @@ -1,153 +0,0 @@ -#define NOTE_PIN 5 -#define NOTE_TRIGGER_PIN 4 -#define CC_PIN 6 -#define CLOCK_PIN 3 -#define SPEEDFACTOR 64 -#define MIN_NOTE 24 -#define MAX_NOTE MIN_NOTE+61 -#define NOTES_BUFFER 4 - -unsigned long count = 0; - -const byte START = 250; -const byte STOP = 252; -const byte TICK = 248; -const byte CONTINUE = 251; - -const byte NOTEON = 0x09; -const byte NOTEOFF = 0x08; -const byte CC = 0x0B; -const byte CLOCK = 0xF; - -unsigned short notePointer = 0; -byte notes[NOTES_BUFFER]; - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial || millis() > 3000) { - ; // wait for serial port to connect, or 3 seconds pass - } - - // put your setup code here, to run once: - pinMode(NOTE_PIN, OUTPUT); - digitalWrite(NOTE_PIN, LOW); - pinMode(NOTE_TRIGGER_PIN, OUTPUT); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - pinMode(CLOCK_PIN, OUTPUT); - digitalWrite(CLOCK_PIN, HIGH); - - for(int i = 0; i > NOTES_BUFFER; i++) - notes[i] = 0; -} - -void loop() { - while(MIDIUSB.available() > 0) { - MIDIEvent e = MIDIUSB.read(); - - if(e.type == NOTEON){ - //Note to analog value - //min note = 24 - if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ - // remember which note we're playing - addNote(e.m2); - outputNote(); - //send a trigger pulse - digitalWrite(NOTE_TRIGGER_PIN, HIGH); - } - } - if(e.type == NOTEOFF){ - removeNote(e.m2); - outputNote(); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - } - if(e.type == CC && e.m2 == 1){ - // cc 1 - analogWrite(CC_PIN, e.m3 * 2); - } - // Clock pulses - if(e.type == CLOCK){ - switch(e.m1){ - case TICK: - { - if((count % 24) == 0){ - digitalWrite(CLOCK_PIN, LOW); - delay(1); - digitalWrite(CLOCK_PIN, HIGH); - } - count++; - break; - } - case START: - { - count = 0; - } - case STOP: - { - //ssssh - digitalWrite(CLOCK_PIN, LOW); - } - } - } - }//end while midi available -}//end loop - -void outputNote(){ - //stretch the note number across the correct range - byte note = (notePointer - 1) % NOTES_BUFFER; - byte analogVal; - if( note == 0 ){ - analogVal = 0; - } - else { - analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); - } - Serial.print(note); - Serial.print(" : "); - Serial.println(analogVal); - //output as a voltage - analogWrite(NOTE_PIN, analogVal); -} - -void addNote(byte note){ - // just in case - removeNote(note); - notes[notePointer] = note; - notePointer = (notePointer + 1) % NOTES_BUFFER; -} - -void removeNote(byte note){ - boolean found = false; - for(int i = 0; i < NOTES_BUFFER; i++){ - int index = (i + notePointer) % NOTES_BUFFER; - if(notes[index] == note){ - found = true; - } - if(found){ - notes[index] = notes[(index + 1) % NOTES_BUFFER]; - } - } - if(found){ - notePointer = (notePointer - 1) % NOTES_BUFFER; - notes[notePointer] = 0; - } -} - - -void printNotes(){ - Serial.print("Notes[\t"); - for(int i = 0; i < NOTES_BUFFER; i++){ - Serial.print(notes[i]); - if(i == notePointer){ - Serial.print("*"); - } - Serial.print("\t"); - } - Serial.println("]"); - Serial.println(notePointer); -} - - - - - diff --git a/littleBitsMidiNotes.ino b/littleBitsMidiNotes.ino new file mode 120000 index 0000000..6286782 --- /dev/null +++ b/littleBitsMidiNotes.ino @@ -0,0 +1 @@ +muzhack/files/littleBitsMidiNotes.ino \ No newline at end of file diff --git a/muzhack/files/adapter-board-files b/muzhack/files/adapter-board-files deleted file mode 120000 index ef17a5e..0000000 --- a/muzhack/files/adapter-board-files +++ /dev/null @@ -1 +0,0 @@ -../../adapter-board-files \ No newline at end of file diff --git a/adapter-board-files/eagle.epf b/muzhack/files/adapter-board-files/eagle.epf similarity index 100% rename from adapter-board-files/eagle.epf rename to muzhack/files/adapter-board-files/eagle.epf diff --git a/adapter-board-files/toby_little_bits.b#1 b/muzhack/files/adapter-board-files/toby_little_bits.b#1 similarity index 100% rename from adapter-board-files/toby_little_bits.b#1 rename to muzhack/files/adapter-board-files/toby_little_bits.b#1 diff --git a/adapter-board-files/toby_little_bits.b#2 b/muzhack/files/adapter-board-files/toby_little_bits.b#2 similarity index 100% rename from adapter-board-files/toby_little_bits.b#2 rename to muzhack/files/adapter-board-files/toby_little_bits.b#2 diff --git a/adapter-board-files/toby_little_bits.brd b/muzhack/files/adapter-board-files/toby_little_bits.brd similarity index 100% rename from adapter-board-files/toby_little_bits.brd rename to muzhack/files/adapter-board-files/toby_little_bits.brd diff --git a/adapter-board-files/toby_little_bits.s#1 b/muzhack/files/adapter-board-files/toby_little_bits.s#1 similarity index 100% rename from adapter-board-files/toby_little_bits.s#1 rename to muzhack/files/adapter-board-files/toby_little_bits.s#1 diff --git a/adapter-board-files/toby_little_bits.sch b/muzhack/files/adapter-board-files/toby_little_bits.sch similarity index 100% rename from adapter-board-files/toby_little_bits.sch rename to muzhack/files/adapter-board-files/toby_little_bits.sch diff --git a/adapter-board-files/toby_little_bits_2.b#1 b/muzhack/files/adapter-board-files/toby_little_bits_2.b#1 similarity index 100% rename from adapter-board-files/toby_little_bits_2.b#1 rename to muzhack/files/adapter-board-files/toby_little_bits_2.b#1 diff --git a/adapter-board-files/toby_little_bits_2.b#2 b/muzhack/files/adapter-board-files/toby_little_bits_2.b#2 similarity index 100% rename from adapter-board-files/toby_little_bits_2.b#2 rename to muzhack/files/adapter-board-files/toby_little_bits_2.b#2 diff --git a/adapter-board-files/toby_little_bits_2.brd b/muzhack/files/adapter-board-files/toby_little_bits_2.brd similarity index 100% rename from adapter-board-files/toby_little_bits_2.brd rename to muzhack/files/adapter-board-files/toby_little_bits_2.brd diff --git a/adapter-board-files/toby_little_bits_2.sch b/muzhack/files/adapter-board-files/toby_little_bits_2.sch similarity index 100% rename from adapter-board-files/toby_little_bits_2.sch rename to muzhack/files/adapter-board-files/toby_little_bits_2.sch diff --git a/adapter-board-files/toby_little_bits_2400dpi.png b/muzhack/files/adapter-board-files/toby_little_bits_2400dpi.png similarity index 100% rename from adapter-board-files/toby_little_bits_2400dpi.png rename to muzhack/files/adapter-board-files/toby_little_bits_2400dpi.png diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino deleted file mode 120000 index 16c5d5a..0000000 --- a/muzhack/files/littleBitsMidiNotes.ino +++ /dev/null @@ -1 +0,0 @@ -../../littleBitsMidiNotes.ino \ No newline at end of file diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino new file mode 100644 index 0000000..0891824 --- /dev/null +++ b/muzhack/files/littleBitsMidiNotes.ino @@ -0,0 +1,153 @@ +#define NOTE_PIN 5 +#define NOTE_TRIGGER_PIN 4 +#define CC_PIN 6 +#define CLOCK_PIN 3 +#define SPEEDFACTOR 64 +#define MIN_NOTE 24 +#define MAX_NOTE MIN_NOTE+61 +#define NOTES_BUFFER 4 + +unsigned long count = 0; + +const byte START = 250; +const byte STOP = 252; +const byte TICK = 248; +const byte CONTINUE = 251; + +const byte NOTEON = 0x09; +const byte NOTEOFF = 0x08; +const byte CC = 0x0B; +const byte CLOCK = 0xF; + +unsigned short notePointer = 0; +byte notes[NOTES_BUFFER]; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(9600); + while (!Serial || millis() > 3000) { + ; // wait for serial port to connect, or 3 seconds pass + } + + // put your setup code here, to run once: + pinMode(NOTE_PIN, OUTPUT); + digitalWrite(NOTE_PIN, LOW); + pinMode(NOTE_TRIGGER_PIN, OUTPUT); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + pinMode(CLOCK_PIN, OUTPUT); + digitalWrite(CLOCK_PIN, HIGH); + + for(int i = 0; i > NOTES_BUFFER; i++) + notes[i] = 0; +} + +void loop() { + while(MIDIUSB.available() > 0) { + MIDIEvent e = MIDIUSB.read(); + + if(e.type == NOTEON){ + //Note to analog value + //min note = 24 + if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ + // remember which note we're playing + addNote(e.m2); + outputNote(); + //send a trigger pulse + digitalWrite(NOTE_TRIGGER_PIN, HIGH); + } + } + if(e.type == NOTEOFF){ + removeNote(e.m2); + outputNote(); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + } + if(e.type == CC && e.m2 == 1){ + // cc 1 + analogWrite(CC_PIN, e.m3 * 2); + } + // Clock pulses + if(e.type == CLOCK){ + switch(e.m1){ + case TICK: + { + if((count % 24) == 0){ + digitalWrite(CLOCK_PIN, LOW); + delay(1); + digitalWrite(CLOCK_PIN, HIGH); + } + count++; + break; + } + case START: + { + count = 0; + } + case STOP: + { + //ssssh + digitalWrite(CLOCK_PIN, LOW); + } + } + } + }//end while midi available +}//end loop + +void outputNote(){ + //stretch the note number across the correct range + byte note = (notePointer - 1) % NOTES_BUFFER; + byte analogVal; + if( note == 0 ){ + analogVal = 0; + } + else { + analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); + } + Serial.print(note); + Serial.print(" : "); + Serial.println(analogVal); + //output as a voltage + analogWrite(NOTE_PIN, analogVal); +} + +void addNote(byte note){ + // just in case + removeNote(note); + notes[notePointer] = note; + notePointer = (notePointer + 1) % NOTES_BUFFER; +} + +void removeNote(byte note){ + boolean found = false; + for(int i = 0; i < NOTES_BUFFER; i++){ + int index = (i + notePointer) % NOTES_BUFFER; + if(notes[index] == note){ + found = true; + } + if(found){ + notes[index] = notes[(index + 1) % NOTES_BUFFER]; + } + } + if(found){ + notePointer = (notePointer - 1) % NOTES_BUFFER; + notes[notePointer] = 0; + } +} + + +void printNotes(){ + Serial.print("Notes[\t"); + for(int i = 0; i < NOTES_BUFFER; i++){ + Serial.print(notes[i]); + if(i == notePointer){ + Serial.print("*"); + } + Serial.print("\t"); + } + Serial.println("]"); + Serial.println(notePointer); +} + + + + + From da4031bbb812914c7f571f523d95cc406846136d Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 24 May 2016 15:59:58 +0200 Subject: [PATCH 07/11] Refer to original project --- muzhack/description.md | 2 ++ muzhack/instructions.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/muzhack/description.md b/muzhack/description.md index 4e8c68a..10a1f75 100644 --- a/muzhack/description.md +++ b/muzhack/description.md @@ -1 +1,3 @@ +**Please note that this is an unofficial project page, the official one is [here](http://www.instructables.com/id/USB-MIDI-Littlebits-synth/).** + My lovely wife bought me the littlebits synth kit for Christmas, and I spent several days annoying everyone with screechy sounds. After a while I wanted more control over it, to sync it with other things, or to play it from a proper keyboard. diff --git a/muzhack/instructions.md b/muzhack/instructions.md index ee05698..544e6f2 100644 --- a/muzhack/instructions.md +++ b/muzhack/instructions.md @@ -1,3 +1,5 @@ +**Please note that this is an unofficial project page, the official one is [here](http://www.instructables.com/id/USB-MIDI-Littlebits-synth/).** + # Shopping List You will need the following stuff - From af82d066ad8fc1735d4bdbf28de7a1d29236be1d Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 7 Jun 2016 16:03:10 +0200 Subject: [PATCH 08/11] Symlink into muzhack, not other way around --- adapter-board-files | 1 - .../eagle.epf | 0 .../toby_little_bits.b#1 | 0 .../toby_little_bits.b#2 | 0 .../toby_little_bits.brd | 0 .../toby_little_bits.s#1 | 0 .../toby_little_bits.sch | 0 .../toby_little_bits_2.b#1 | 0 .../toby_little_bits_2.b#2 | 0 .../toby_little_bits_2.brd | 0 .../toby_little_bits_2.sch | 0 .../toby_little_bits_2400dpi.png | Bin muzhack/files/adapter-board-files | 1 + 13 files changed, 1 insertion(+), 1 deletion(-) delete mode 120000 adapter-board-files rename {muzhack/files/adapter-board-files => adapter-board-files}/eagle.epf (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits.b#1 (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits.b#2 (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits.brd (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits.s#1 (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits.sch (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits_2.b#1 (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits_2.b#2 (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits_2.brd (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits_2.sch (100%) rename {muzhack/files/adapter-board-files => adapter-board-files}/toby_little_bits_2400dpi.png (100%) create mode 120000 muzhack/files/adapter-board-files diff --git a/adapter-board-files b/adapter-board-files deleted file mode 120000 index eddab4e..0000000 --- a/adapter-board-files +++ /dev/null @@ -1 +0,0 @@ -muzhack/files/adapter-board-files \ No newline at end of file diff --git a/muzhack/files/adapter-board-files/eagle.epf b/adapter-board-files/eagle.epf similarity index 100% rename from muzhack/files/adapter-board-files/eagle.epf rename to adapter-board-files/eagle.epf diff --git a/muzhack/files/adapter-board-files/toby_little_bits.b#1 b/adapter-board-files/toby_little_bits.b#1 similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits.b#1 rename to adapter-board-files/toby_little_bits.b#1 diff --git a/muzhack/files/adapter-board-files/toby_little_bits.b#2 b/adapter-board-files/toby_little_bits.b#2 similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits.b#2 rename to adapter-board-files/toby_little_bits.b#2 diff --git a/muzhack/files/adapter-board-files/toby_little_bits.brd b/adapter-board-files/toby_little_bits.brd similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits.brd rename to adapter-board-files/toby_little_bits.brd diff --git a/muzhack/files/adapter-board-files/toby_little_bits.s#1 b/adapter-board-files/toby_little_bits.s#1 similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits.s#1 rename to adapter-board-files/toby_little_bits.s#1 diff --git a/muzhack/files/adapter-board-files/toby_little_bits.sch b/adapter-board-files/toby_little_bits.sch similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits.sch rename to adapter-board-files/toby_little_bits.sch diff --git a/muzhack/files/adapter-board-files/toby_little_bits_2.b#1 b/adapter-board-files/toby_little_bits_2.b#1 similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits_2.b#1 rename to adapter-board-files/toby_little_bits_2.b#1 diff --git a/muzhack/files/adapter-board-files/toby_little_bits_2.b#2 b/adapter-board-files/toby_little_bits_2.b#2 similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits_2.b#2 rename to adapter-board-files/toby_little_bits_2.b#2 diff --git a/muzhack/files/adapter-board-files/toby_little_bits_2.brd b/adapter-board-files/toby_little_bits_2.brd similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits_2.brd rename to adapter-board-files/toby_little_bits_2.brd diff --git a/muzhack/files/adapter-board-files/toby_little_bits_2.sch b/adapter-board-files/toby_little_bits_2.sch similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits_2.sch rename to adapter-board-files/toby_little_bits_2.sch diff --git a/muzhack/files/adapter-board-files/toby_little_bits_2400dpi.png b/adapter-board-files/toby_little_bits_2400dpi.png similarity index 100% rename from muzhack/files/adapter-board-files/toby_little_bits_2400dpi.png rename to adapter-board-files/toby_little_bits_2400dpi.png diff --git a/muzhack/files/adapter-board-files b/muzhack/files/adapter-board-files new file mode 120000 index 0000000..ef17a5e --- /dev/null +++ b/muzhack/files/adapter-board-files @@ -0,0 +1 @@ +../../adapter-board-files \ No newline at end of file From 2aba862a63a64229502827d6eb4f10c893da3428 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 7 Jun 2016 16:04:59 +0200 Subject: [PATCH 09/11] Move symlink --- littleBitsMidiNotes.ino | 154 +++++++++++++++++++++++++- muzhack/files/littleBitsMidiNotes.ino | 154 +------------------------- 2 files changed, 154 insertions(+), 154 deletions(-) mode change 120000 => 100644 littleBitsMidiNotes.ino mode change 100644 => 120000 muzhack/files/littleBitsMidiNotes.ino diff --git a/littleBitsMidiNotes.ino b/littleBitsMidiNotes.ino deleted file mode 120000 index 6286782..0000000 --- a/littleBitsMidiNotes.ino +++ /dev/null @@ -1 +0,0 @@ -muzhack/files/littleBitsMidiNotes.ino \ No newline at end of file diff --git a/littleBitsMidiNotes.ino b/littleBitsMidiNotes.ino new file mode 100644 index 0000000..0891824 --- /dev/null +++ b/littleBitsMidiNotes.ino @@ -0,0 +1,153 @@ +#define NOTE_PIN 5 +#define NOTE_TRIGGER_PIN 4 +#define CC_PIN 6 +#define CLOCK_PIN 3 +#define SPEEDFACTOR 64 +#define MIN_NOTE 24 +#define MAX_NOTE MIN_NOTE+61 +#define NOTES_BUFFER 4 + +unsigned long count = 0; + +const byte START = 250; +const byte STOP = 252; +const byte TICK = 248; +const byte CONTINUE = 251; + +const byte NOTEON = 0x09; +const byte NOTEOFF = 0x08; +const byte CC = 0x0B; +const byte CLOCK = 0xF; + +unsigned short notePointer = 0; +byte notes[NOTES_BUFFER]; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(9600); + while (!Serial || millis() > 3000) { + ; // wait for serial port to connect, or 3 seconds pass + } + + // put your setup code here, to run once: + pinMode(NOTE_PIN, OUTPUT); + digitalWrite(NOTE_PIN, LOW); + pinMode(NOTE_TRIGGER_PIN, OUTPUT); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + pinMode(CLOCK_PIN, OUTPUT); + digitalWrite(CLOCK_PIN, HIGH); + + for(int i = 0; i > NOTES_BUFFER; i++) + notes[i] = 0; +} + +void loop() { + while(MIDIUSB.available() > 0) { + MIDIEvent e = MIDIUSB.read(); + + if(e.type == NOTEON){ + //Note to analog value + //min note = 24 + if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ + // remember which note we're playing + addNote(e.m2); + outputNote(); + //send a trigger pulse + digitalWrite(NOTE_TRIGGER_PIN, HIGH); + } + } + if(e.type == NOTEOFF){ + removeNote(e.m2); + outputNote(); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + } + if(e.type == CC && e.m2 == 1){ + // cc 1 + analogWrite(CC_PIN, e.m3 * 2); + } + // Clock pulses + if(e.type == CLOCK){ + switch(e.m1){ + case TICK: + { + if((count % 24) == 0){ + digitalWrite(CLOCK_PIN, LOW); + delay(1); + digitalWrite(CLOCK_PIN, HIGH); + } + count++; + break; + } + case START: + { + count = 0; + } + case STOP: + { + //ssssh + digitalWrite(CLOCK_PIN, LOW); + } + } + } + }//end while midi available +}//end loop + +void outputNote(){ + //stretch the note number across the correct range + byte note = (notePointer - 1) % NOTES_BUFFER; + byte analogVal; + if( note == 0 ){ + analogVal = 0; + } + else { + analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); + } + Serial.print(note); + Serial.print(" : "); + Serial.println(analogVal); + //output as a voltage + analogWrite(NOTE_PIN, analogVal); +} + +void addNote(byte note){ + // just in case + removeNote(note); + notes[notePointer] = note; + notePointer = (notePointer + 1) % NOTES_BUFFER; +} + +void removeNote(byte note){ + boolean found = false; + for(int i = 0; i < NOTES_BUFFER; i++){ + int index = (i + notePointer) % NOTES_BUFFER; + if(notes[index] == note){ + found = true; + } + if(found){ + notes[index] = notes[(index + 1) % NOTES_BUFFER]; + } + } + if(found){ + notePointer = (notePointer - 1) % NOTES_BUFFER; + notes[notePointer] = 0; + } +} + + +void printNotes(){ + Serial.print("Notes[\t"); + for(int i = 0; i < NOTES_BUFFER; i++){ + Serial.print(notes[i]); + if(i == notePointer){ + Serial.print("*"); + } + Serial.print("\t"); + } + Serial.println("]"); + Serial.println(notePointer); +} + + + + + diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino deleted file mode 100644 index 0891824..0000000 --- a/muzhack/files/littleBitsMidiNotes.ino +++ /dev/null @@ -1,153 +0,0 @@ -#define NOTE_PIN 5 -#define NOTE_TRIGGER_PIN 4 -#define CC_PIN 6 -#define CLOCK_PIN 3 -#define SPEEDFACTOR 64 -#define MIN_NOTE 24 -#define MAX_NOTE MIN_NOTE+61 -#define NOTES_BUFFER 4 - -unsigned long count = 0; - -const byte START = 250; -const byte STOP = 252; -const byte TICK = 248; -const byte CONTINUE = 251; - -const byte NOTEON = 0x09; -const byte NOTEOFF = 0x08; -const byte CC = 0x0B; -const byte CLOCK = 0xF; - -unsigned short notePointer = 0; -byte notes[NOTES_BUFFER]; - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial || millis() > 3000) { - ; // wait for serial port to connect, or 3 seconds pass - } - - // put your setup code here, to run once: - pinMode(NOTE_PIN, OUTPUT); - digitalWrite(NOTE_PIN, LOW); - pinMode(NOTE_TRIGGER_PIN, OUTPUT); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - pinMode(CLOCK_PIN, OUTPUT); - digitalWrite(CLOCK_PIN, HIGH); - - for(int i = 0; i > NOTES_BUFFER; i++) - notes[i] = 0; -} - -void loop() { - while(MIDIUSB.available() > 0) { - MIDIEvent e = MIDIUSB.read(); - - if(e.type == NOTEON){ - //Note to analog value - //min note = 24 - if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ - // remember which note we're playing - addNote(e.m2); - outputNote(); - //send a trigger pulse - digitalWrite(NOTE_TRIGGER_PIN, HIGH); - } - } - if(e.type == NOTEOFF){ - removeNote(e.m2); - outputNote(); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - } - if(e.type == CC && e.m2 == 1){ - // cc 1 - analogWrite(CC_PIN, e.m3 * 2); - } - // Clock pulses - if(e.type == CLOCK){ - switch(e.m1){ - case TICK: - { - if((count % 24) == 0){ - digitalWrite(CLOCK_PIN, LOW); - delay(1); - digitalWrite(CLOCK_PIN, HIGH); - } - count++; - break; - } - case START: - { - count = 0; - } - case STOP: - { - //ssssh - digitalWrite(CLOCK_PIN, LOW); - } - } - } - }//end while midi available -}//end loop - -void outputNote(){ - //stretch the note number across the correct range - byte note = (notePointer - 1) % NOTES_BUFFER; - byte analogVal; - if( note == 0 ){ - analogVal = 0; - } - else { - analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); - } - Serial.print(note); - Serial.print(" : "); - Serial.println(analogVal); - //output as a voltage - analogWrite(NOTE_PIN, analogVal); -} - -void addNote(byte note){ - // just in case - removeNote(note); - notes[notePointer] = note; - notePointer = (notePointer + 1) % NOTES_BUFFER; -} - -void removeNote(byte note){ - boolean found = false; - for(int i = 0; i < NOTES_BUFFER; i++){ - int index = (i + notePointer) % NOTES_BUFFER; - if(notes[index] == note){ - found = true; - } - if(found){ - notes[index] = notes[(index + 1) % NOTES_BUFFER]; - } - } - if(found){ - notePointer = (notePointer - 1) % NOTES_BUFFER; - notes[notePointer] = 0; - } -} - - -void printNotes(){ - Serial.print("Notes[\t"); - for(int i = 0; i < NOTES_BUFFER; i++){ - Serial.print(notes[i]); - if(i == notePointer){ - Serial.print("*"); - } - Serial.print("\t"); - } - Serial.println("]"); - Serial.println(notePointer); -} - - - - - diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino new file mode 120000 index 0000000..16c5d5a --- /dev/null +++ b/muzhack/files/littleBitsMidiNotes.ino @@ -0,0 +1 @@ +../../littleBitsMidiNotes.ino \ No newline at end of file From ee174a25c458a2b671e6591e615c0c29c4fca506 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 7 Jun 2016 20:54:15 +0200 Subject: [PATCH 10/11] Don't use symlink for file due to GitHub API bug --- muzhack/files/littleBitsMidiNotes.ino | 154 +++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 1 deletion(-) mode change 120000 => 100644 muzhack/files/littleBitsMidiNotes.ino diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino deleted file mode 120000 index 16c5d5a..0000000 --- a/muzhack/files/littleBitsMidiNotes.ino +++ /dev/null @@ -1 +0,0 @@ -../../littleBitsMidiNotes.ino \ No newline at end of file diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino new file mode 100644 index 0000000..0891824 --- /dev/null +++ b/muzhack/files/littleBitsMidiNotes.ino @@ -0,0 +1,153 @@ +#define NOTE_PIN 5 +#define NOTE_TRIGGER_PIN 4 +#define CC_PIN 6 +#define CLOCK_PIN 3 +#define SPEEDFACTOR 64 +#define MIN_NOTE 24 +#define MAX_NOTE MIN_NOTE+61 +#define NOTES_BUFFER 4 + +unsigned long count = 0; + +const byte START = 250; +const byte STOP = 252; +const byte TICK = 248; +const byte CONTINUE = 251; + +const byte NOTEON = 0x09; +const byte NOTEOFF = 0x08; +const byte CC = 0x0B; +const byte CLOCK = 0xF; + +unsigned short notePointer = 0; +byte notes[NOTES_BUFFER]; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(9600); + while (!Serial || millis() > 3000) { + ; // wait for serial port to connect, or 3 seconds pass + } + + // put your setup code here, to run once: + pinMode(NOTE_PIN, OUTPUT); + digitalWrite(NOTE_PIN, LOW); + pinMode(NOTE_TRIGGER_PIN, OUTPUT); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + pinMode(CLOCK_PIN, OUTPUT); + digitalWrite(CLOCK_PIN, HIGH); + + for(int i = 0; i > NOTES_BUFFER; i++) + notes[i] = 0; +} + +void loop() { + while(MIDIUSB.available() > 0) { + MIDIEvent e = MIDIUSB.read(); + + if(e.type == NOTEON){ + //Note to analog value + //min note = 24 + if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ + // remember which note we're playing + addNote(e.m2); + outputNote(); + //send a trigger pulse + digitalWrite(NOTE_TRIGGER_PIN, HIGH); + } + } + if(e.type == NOTEOFF){ + removeNote(e.m2); + outputNote(); + digitalWrite(NOTE_TRIGGER_PIN, LOW); + } + if(e.type == CC && e.m2 == 1){ + // cc 1 + analogWrite(CC_PIN, e.m3 * 2); + } + // Clock pulses + if(e.type == CLOCK){ + switch(e.m1){ + case TICK: + { + if((count % 24) == 0){ + digitalWrite(CLOCK_PIN, LOW); + delay(1); + digitalWrite(CLOCK_PIN, HIGH); + } + count++; + break; + } + case START: + { + count = 0; + } + case STOP: + { + //ssssh + digitalWrite(CLOCK_PIN, LOW); + } + } + } + }//end while midi available +}//end loop + +void outputNote(){ + //stretch the note number across the correct range + byte note = (notePointer - 1) % NOTES_BUFFER; + byte analogVal; + if( note == 0 ){ + analogVal = 0; + } + else { + analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); + } + Serial.print(note); + Serial.print(" : "); + Serial.println(analogVal); + //output as a voltage + analogWrite(NOTE_PIN, analogVal); +} + +void addNote(byte note){ + // just in case + removeNote(note); + notes[notePointer] = note; + notePointer = (notePointer + 1) % NOTES_BUFFER; +} + +void removeNote(byte note){ + boolean found = false; + for(int i = 0; i < NOTES_BUFFER; i++){ + int index = (i + notePointer) % NOTES_BUFFER; + if(notes[index] == note){ + found = true; + } + if(found){ + notes[index] = notes[(index + 1) % NOTES_BUFFER]; + } + } + if(found){ + notePointer = (notePointer - 1) % NOTES_BUFFER; + notes[notePointer] = 0; + } +} + + +void printNotes(){ + Serial.print("Notes[\t"); + for(int i = 0; i < NOTES_BUFFER; i++){ + Serial.print(notes[i]); + if(i == notePointer){ + Serial.print("*"); + } + Serial.print("\t"); + } + Serial.println("]"); + Serial.println(notePointer); +} + + + + + From 24e01a524183dc5bc985cfefe2fe6b869fcadbfe Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 7 Jun 2016 21:27:09 +0200 Subject: [PATCH 11/11] Make back into symlink --- muzhack/files/littleBitsMidiNotes.ino | 154 +------------------------- 1 file changed, 1 insertion(+), 153 deletions(-) mode change 100644 => 120000 muzhack/files/littleBitsMidiNotes.ino diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino deleted file mode 100644 index 0891824..0000000 --- a/muzhack/files/littleBitsMidiNotes.ino +++ /dev/null @@ -1,153 +0,0 @@ -#define NOTE_PIN 5 -#define NOTE_TRIGGER_PIN 4 -#define CC_PIN 6 -#define CLOCK_PIN 3 -#define SPEEDFACTOR 64 -#define MIN_NOTE 24 -#define MAX_NOTE MIN_NOTE+61 -#define NOTES_BUFFER 4 - -unsigned long count = 0; - -const byte START = 250; -const byte STOP = 252; -const byte TICK = 248; -const byte CONTINUE = 251; - -const byte NOTEON = 0x09; -const byte NOTEOFF = 0x08; -const byte CC = 0x0B; -const byte CLOCK = 0xF; - -unsigned short notePointer = 0; -byte notes[NOTES_BUFFER]; - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial || millis() > 3000) { - ; // wait for serial port to connect, or 3 seconds pass - } - - // put your setup code here, to run once: - pinMode(NOTE_PIN, OUTPUT); - digitalWrite(NOTE_PIN, LOW); - pinMode(NOTE_TRIGGER_PIN, OUTPUT); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - pinMode(CLOCK_PIN, OUTPUT); - digitalWrite(CLOCK_PIN, HIGH); - - for(int i = 0; i > NOTES_BUFFER; i++) - notes[i] = 0; -} - -void loop() { - while(MIDIUSB.available() > 0) { - MIDIEvent e = MIDIUSB.read(); - - if(e.type == NOTEON){ - //Note to analog value - //min note = 24 - if(e.m2 >= MIN_NOTE && e.m2 <= MAX_NOTE){ - // remember which note we're playing - addNote(e.m2); - outputNote(); - //send a trigger pulse - digitalWrite(NOTE_TRIGGER_PIN, HIGH); - } - } - if(e.type == NOTEOFF){ - removeNote(e.m2); - outputNote(); - digitalWrite(NOTE_TRIGGER_PIN, LOW); - } - if(e.type == CC && e.m2 == 1){ - // cc 1 - analogWrite(CC_PIN, e.m3 * 2); - } - // Clock pulses - if(e.type == CLOCK){ - switch(e.m1){ - case TICK: - { - if((count % 24) == 0){ - digitalWrite(CLOCK_PIN, LOW); - delay(1); - digitalWrite(CLOCK_PIN, HIGH); - } - count++; - break; - } - case START: - { - count = 0; - } - case STOP: - { - //ssssh - digitalWrite(CLOCK_PIN, LOW); - } - } - } - }//end while midi available -}//end loop - -void outputNote(){ - //stretch the note number across the correct range - byte note = (notePointer - 1) % NOTES_BUFFER; - byte analogVal; - if( note == 0 ){ - analogVal = 0; - } - else { - analogVal = map(notes[note], MIN_NOTE, MAX_NOTE, 0, 255); - } - Serial.print(note); - Serial.print(" : "); - Serial.println(analogVal); - //output as a voltage - analogWrite(NOTE_PIN, analogVal); -} - -void addNote(byte note){ - // just in case - removeNote(note); - notes[notePointer] = note; - notePointer = (notePointer + 1) % NOTES_BUFFER; -} - -void removeNote(byte note){ - boolean found = false; - for(int i = 0; i < NOTES_BUFFER; i++){ - int index = (i + notePointer) % NOTES_BUFFER; - if(notes[index] == note){ - found = true; - } - if(found){ - notes[index] = notes[(index + 1) % NOTES_BUFFER]; - } - } - if(found){ - notePointer = (notePointer - 1) % NOTES_BUFFER; - notes[notePointer] = 0; - } -} - - -void printNotes(){ - Serial.print("Notes[\t"); - for(int i = 0; i < NOTES_BUFFER; i++){ - Serial.print(notes[i]); - if(i == notePointer){ - Serial.print("*"); - } - Serial.print("\t"); - } - Serial.println("]"); - Serial.println(notePointer); -} - - - - - diff --git a/muzhack/files/littleBitsMidiNotes.ino b/muzhack/files/littleBitsMidiNotes.ino new file mode 120000 index 0000000..16c5d5a --- /dev/null +++ b/muzhack/files/littleBitsMidiNotes.ino @@ -0,0 +1 @@ +../../littleBitsMidiNotes.ino \ No newline at end of file