Friday, April 21, 2017

Port Adelaide in Autumn












Sunday, April 16, 2017

Semaphore Kite Festival

Trail Gear - Current Shelter, Warmth and Heat


Current shelter, warmth and heat is as follows:

  • Shelter: Big Agnes Fly Creek HV UL 2 - 1.3 kg
  • Sleeping Bag: Sea to Summit Spark SP2 Regular - 0.54 kg
  • Stove: JetBoil MiniMo - 0.64 kg

I am going to be adapting this setup for longer walks and in different environments, but the Fly Creek UL 2 with both layers worked great on a fairly exposed sand dune, directly facing the Southern ocean. The included pegs were stable in the sand.

A small 25L daypack can hold:

  • Enough food and water for around 48 hours 
  • Sleeping bag 
  • Tent
  • Stove
  • Pillow
  • Towel
  • Change of clothes
  • Full frame camera
  • Full frame wide angle lens
  • Stable tripod
  • iPad




Additional weight can be reduced by:
  • Using the tent in fast-fly mode - saves 0.4 kg
  • Swapping the tripod for a lighter solution - saves up to 0.4 kg
  • Swapping the A7s for an A6000 series camera body - saves 0.16 kg
  • Swapping the Zeiss Loxia 21mm for a different lens - saves up to 0.2 kg
  • Swapping out the MiniMo for a lighter solution - saves up to 0.4 kg
  • Removing iPad - saves 0.6 kg
  • Removing change of clothes - saves 1.1 kg

Tuesday, April 11, 2017

Teensy 3.6 Basics: MIDI Sequencing

Overview
The Teensy 3.6 can read the values from up to 25 potentiometers without any additional hardware.

By combining multiple potentiometers, and then reading each one after the other, a basic MIDI sequencer can be constructed. Each pot represents a note (for example, pitch) - but additional pots could also represent velocity and interval.

Many considerations can be made in regards to how one or more pots are read, in which order, what scaling, what each pot represents and so on.

Here are some simple examples exploring different combinations.





Hardware Setup
Eight pots are connected to analog inputs 0 - 7. The outside legs of the pots are connected to 3.3V and ground.







Example 1 - Basic Sequencing
The eight pots represent eight notes. Each pot sets the pitch value of a note. Each note is played one after the other. The velocity and time interval are static, and set as part of the code.



Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/MIDI_Sequencing_Example_1/







Example 2 - Sequencing with Step Enable and Time Interval Control

Another pot is added. The first eight pots set the pitch values of notes. Each note is played one after the other. The velocity is static, and set as part of the code. The time interval is set by the ninth pot. If a given pot is all the way at minimum, then that particular step is disabled.












Example 3 - Pitch and Velocity Control
Nine pots control a total of four notes. The first four  pots control pitch. The next four pots control velocity. The last controls the time interval for all notes. 








Example 4 - Pitch, Velocity and Time Interval Control
Nine pots control a total of three notes. The first three pots control the pitches. The next three pots control the velocities. The last three pots control the time intervals. 









Example 5 - Pitch and Interval are Out of Phase
Nine pots in total. The first four pots control pitch. The last five pots control time interval. These two parameters combine to form notes. The pitch and time interval are out of phase with one another, thereby forming a pattern of twenty notes that repeat by combining the possibilities of pitch / time interval pairs. 



Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/MIDI_Sequencing_Example_5/






Summary
The Teensy 3.6 can be used to create a simple MIDI sequencer. Many pots can be read in different ways and orders, and mapped to note parameters in different ways - making lots of different possibilities. 

Teensy 3.6 Basics: Using Rotary Encoders

Overview
A rotary encoder, although looking similar to a potentiometer, is actually a pair of mechanical connections that are closed and then opened in a particular order and timing depending on the direction and speed that the connecting shaft is rotated.

Furthermore, an encoder (unlike a potentiometer) does not have a maximum and minimum excursion, making it ideal for contextual values, delta data points, and parameters that need accurate adjustment beyond a finite number of turns.

As a result, the output of an encoder can be read and interpreted to give direction (left or right) as well as some sense of speed of turning, in combination with limitless rotations.

The Teensy has a great library for using the encoder, which is part of the Teensyduino installation. More information about the library and its use can be found here: https://www.pjrc.com/teensy/td_libs_Encoder.html.

An encoder can make for a useful MIDI control.



Hardware Setup
To begin with a single encoder is connected to digital pins 25 and 26. The middle leg of the encoder is connected to ground.





Example 1 - Reading the Value of One Encoder
In this example, an encoder object is created, using digital pins 25 and 26. The value of the encoder is read and compared to the previous reading. If the value of the reading has changed compared to the previous reading, then the value is sent to the Serial Monitor.

No constraints are set on reading the value of the encoder, and so there is no limit on the reading when turning the encoder left or right.




Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/Using_Encoders_Example_1/






Example 2 - Reading the Value of One Encoder, and Send as MIDI Continuous Control Message
In this example, an encoder object is created, using digital pins 25 and 26. The value of the encoder is read and compared to the previous reading. If the value of the reading has changed compared to the previous reading, then the value is sent as a MIDI continuous control message

The value is constrained to the range 0 - 127, so turning the encoder beyond 127 or below 0 will have no effect.



Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/Using_Encoders_Example_2/






Example 3 - Reading the Value of Two Encoders, and Send as MIDI Continuous Control Messages
In this example, two encoder object are created, using digital pins 25 - 28. The value of the encoders are read and compared to previous readings. If the value of a reading has changed compared to the previous reading, then the value is sent as a MIDI continuous control message. Each encoder has a separate controller number.


The values are constrained to the range 0 - 127, so turning the encoders beyond 127 or below 0 will have no effect.




Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/Using_Encoders_Example_3/






Example 4 - Four Encoders Plus One Button as Bank of Switchable MIDI Controllers
In this example, four encoders are used alongside a button. The button switches between four different banks. Each bank is represented by the four physical encoders. Each bank has unique, four MIDI controller numbers, thereby having a total of sixteen MIDI controllers.

All values are stored as the banks are switched.






Download here: http://milkcrate.com.au/_other/downloads/arduino/teensy_3_6_basics/Using_Encoders_Example_4/






Summary
Encoders can be used in addition to buttons and switches for controlling parameters. The limitless rotation can be used in different contexts than a standard potentiometer.