IpSonLab development (B)log
by Lex van den Broek

April 2010
Long time no writing. Development wise,it was quiet silent the last year. I'm just bad at continuesly updating the website and the blog. What did I do? Amongst a lot of things, I was bussy with the remote VFUG's. Making the old VFUG generators from our analog studio available online. With the help of Joep Jan van der Hoeven, a graduent student, we made a nice OpenSoundControl based audio mixer, having 16 inputs and one output. This device was ofcourse speacialy made for the VFUG's. At the moment the VFUG's are running and online available for listening and driving. The Max patch can be downloaded from this website.
I bought a nice " Analog Devices" chip, the AD75019. This digital matrix, being able to switch analog (read audio) signals, can be driven by a processor. This means I could design a OSC based audio matrix, which can be very interesting for the remote VFUG's or our analog studio.

December 2008
Just before the end of 2008, I managed to create a new (cheap) OSC to Control Voltage output board, which can be used in combination with both the IpSonLab and the IpSonCompact. The board is based upon a PIC18F1220 SMD version processor and takes the OpenSoundControl format RS232 from the output of the Xport.The processor can be programmed using ICSP (In Circuit Serial Programming). The 16 outputs have a resolution of 12 bit (4096 steps) and can be switched to generate 0V-5V or 0V- Vexternal. I used two octal 12 bit DA convertors (TLV5610). The board has the same size (100mm x 53mm) and hole-layout as the IpSonCompact; making it possible to mount it on top of the IpSonCompact.

March 2008
With much thanks to Angel and Johan I was able to make a Pure Data patch working for the IpSonCompact. I made it available at the download section. Reading the sensor values was already possible with a patch that Angel made a few mounths ago, but it was still not possible to drive the outputs of the IpSonCompact. We found out that the standard OSC string, sent by PD was not setup as a bundle. The IpSonCompact expects a OSC bundle. For getting the PD patch to work, some brackets and comma's have to be added with the OSC message.
In future setup I have to re arrange the OSC reading routine wtihin the PIC processor. The setup now is too static. The chip should be able to read all kind of different OSC-data.

october/november 2007
I created a new (experimental) 12 bits DAC board, with 12 outputs. It's based upon the ltc1452 12 bit serial DA convertor (see picture). The board also has a processor on board, the PIC18F1220. This processor drives the 12 DA converrtors directly. When the OSC string /v1 is received, 12 new 12 bits values are written.
I finally spend more time in programming again. I wrote new sofware for the IpSonLab: it's now working with the 18F series, meaning it also has a 12 bit sensor resolution' it can drive some digital outputs and it can read three distance sensors, like the IpSonCompact. For the department of Sonology, I'm bussy developing a new generator for the analog studio (bea-5). It will be ramp function generator, creating very slow voltage change from 0 till 5V in a adjustable amount of time (1-4000 seconds). Outside the Conservatoire I' developing a system to connect 64 processors in one serial line, for driving all kind of 'processes'

june/july/august/september 2007
Yes I know. Not much development done in the last 4 month's. Bussy exam periods, good long holiday and bussy start of the season. I worked on a update for the IpSonLab; making it work with the 18F series, so also for this lab high speed communication with 12 bit resiolution can be realised. It's not a working version yet. I added some content on the website: explaining how to drive and configure the IpSonCompact. I ordered new Xports and 20 new printed Circuit Boards of the IpSonCompact; we can build again!

May 2007
By updating my picstart programmer, I was able to (at last!) program the PIC18F4523 processor which has a 12 bits DA convertor onboard. This means that the IpSonCompact now has 13 sensor inputs with a resolution of 12 bits (4096 values). I'm also bussy with changing the processor (and the software) of the IpSonLab to the 18F series. So also the IpSonlab will have more speed (1 Mbit connection) and more resolution.

March april 2007
As you probably noticed, the IpSonCompact PCB's are ready. We made the first few, tested them and it looks very promising. I also updated the website: an explanation of the open sound control (osc) communication is added for both the IpSonLab and IpSonCompact. We are still working on a clear Maxpatch, so users can directly use the compact. We will make a version for MaxPlay; meaning you do not have to buy Max/Msp to work with the IpSonCompact/IpSonLab. The max/msp patch for the IpSonCompact will have the possibility to connect inputs to outputs, through a given matrix. I'll publish it as soon as possible.
This week is also the last week that Michiel vd Weiden is working here. He has to return to the Haagse Hogeschool and continue his teaching job overthere. Michiel created a fantastic interface! Michiel and I will keep developing the IpSonCompact in the future.

February March 2007
The design of the new IpSonCompact is really going very well. We are desperately waiting for the new printed circuit board, which will arrive 26.3.2007. The Compact version is fast, stable and (it's all in the name) very compact. I designed the new printed circuit board with Eagle software; a complete pcb/schematic cad design package. This was a new experience for me, since it is a complete, open-source, package which can be downloaded for free (check the links page) and can run on my minimac!. I finally found a good alternative for Ultiboard.

The IpSonCompact can send about 1000 values per second; a very high sample rate. The sample rate can be adjusted from within Max/Msp, or any other software package, as long as the right OSC string is send. Check the out the specifications. We are planning to give a short lecture (Colloquia) at the Sonology department soon. I also worked on the new IpSonCompact manual and really tried to make it as clear as possible. Suggestions are welcome!

I'm planning to make pcb's which can directly be connected to the IpSonCompact; this to have external processes connected to the lab (like driving 16 times 12bit DA convertors ... nice feature for the analog studio users, a board with heavy duty tansistors/Fet's mounted ont it to drive all kind of 'heavy' processes and more...). We are going to design the new boards in that way, so it will fit on top of the IpSonCompact.

While developing the new IpSonCompact, a few people pointed out to us, that we do not send the 'right' OSC format: we pack data into the large 32bit OSC string. There is a lot of software out there which can not handle a 'packed' osc string: you always will need a package like Max/Msp ot Super Collider to unpack the very dense data stream. We are going to make a new software version which sends clear OSC data: the header information will consist of the root (/ic) and a OSC container with the number of the used input (0-12). We are working on this feature now.

We also created a new Max patch, which looks like the layout of the PCB. This to make the experiments with the IpSonCompact more clear and
easy to use for also 'non max/msp' users. Leon Spek is working on the new Apple Native application for the IpSonCompact.

January 2007
Together with Michiel vd Weiden, we are bussy designing a Ipson Compact. A compact OSC interface with a few new features. The new IpSon Comapct is based upon the PIC18F series, which are faster and do have more features onboard. The design is in full progress. In the meantime I'm fixing minor bugs in the ips4suso.src version. This version combines the ultrasonic measurements 4 times srf05 with the 32 times sensor inputs. It seems that in some situations, the processor just stops. I fixed (i hope) the problem by switching on/off timer1 while sending OSC data strings. Recently I finished the IpSonLab controller for Juan Parra. I build a custom made IpSonLab into an old Macintosh powerbook 2400. Look for photo's at the project examples. This controller has two distance measurements, 4 Force sensing reisistor (fsr) and 2 Lineair Potentiometers. These LP's or fsr faders do have two dimensions: position and force.

December 2006
I was asked to tell something about the IpSonLab at the "Micro Jamboree" in Steim, Amsterdam. I made a presentation and some new, more clear, Max patches. I'll put them on the website to be downloaded. I made a 19" version of the IpSonLab, that is: for our voltage driven studio BEA-5, I made a 32 output, 12 bit DA convertor based upon Open Sound Control. Now it is possible for the students and composers to 'drive' the studio through OSC and the Internet;-)

October, november 2006
I managed to integrate 32 inputs and 4 ultrasonic distance measurments (srf05) within one chip. It also has an improved cofiguration setup; now it's possioble to change the amounts of inputs, without using a hardware reset.
There are a lot of nice things going on at the moment: I got a lot of enthousiastic people helping me out to lift the IpSonLab to a new and higher level. First of all, a fellow teacher from the Haagse Hogeschool is doing his 'teachers stage' at the Sonology department. He's helping me to migrate the IpSonLab to a new and faster processor: the PIC18F series and to re-design the setup of the IpSonlab. Leon Spek, a student of the ArtScience department, made an Apple Nativ 'IpSonLab reader program. So working with the IpSonLab can now be done without using Max/Msp. Juan Parra Cancino made some nice 'Little noise machines' to work together with the IpSonLab: a "Kraakdoos" and a "theremin". Both programs can be downloaded.

August September 2006
As you probably noticed, I changed the website. I did not realise this would be so time consuming;-) but I'm happy I did. The last two months there was a lot to be done (holiday!) except developing the IpSonLab. I hope I'll have time for this the coming period. I'm planning to convert the data exchange between the IpSonLab and the processors into 16 bit standard packages. This makes it possible to work with the 10 bit onboard AD conversion and even extend this to 12 bit. More and more people show interest in the IpSonLab: that's great, but I also realise that the quality of the manual and the support for people outside the institue and University, should be improved. So if you have remarks or good ideas, please let me know.

June july 2006
Because of the bussy "Conservatory exam-period" I did not really have time to develop the IpSonLab further. I do have some new ideas though. I want to try to make a midi_to_osc and osc_to_midi device. A little box that only converts incoming data into the other format. I'm also experimenting with the icsp (in circuit serial programming), which, if all works out, will make the programming life much more comfortable.
Also important is to update this website. I have to explain more about how to connect the relayboard and how to connect the greycode rotary switches. I also want to extend the download pages with extra 'output max patches'. There are also users that send me more Super Colider patches (thanks Tom!). I still have to drop them.
Have a good summer!

May 2006
I going to (try to) merge the "Ultrasonic Range Detector" software into the existing sensor version. I'm also planning to make a "big" 19" IpSonLab. So 32 (8 or 10 bit) sensor input and around 8 processors working as output. This means all outputs (read different processors) that have been developed uptil now, can be driven from one Xport. 

April 2006
I have been bussy with a lot of different things. I made a software version for the communication with the "Ultrasonic Range Detector". A device developed for robots (circuits)to "see" the distance. Check the device here.
This sensor generates an echo pulse; the pulse width is porportional to the distance. The range is upto 3 meters. I created a version so 4 of these sensors can be connected to the same processor at the same time (port RB0-RB3 for start pulse, and RB4-RB7 for echopulse). All four values are being sent in one (1) OSC integer value.

March 2006
I experimented with driving stepmotors through OSC. I started out with an H-bridge (the ULN2803), but this did not work the way I wanted it to. Then I connected the processor directly to a special stepmotor driver chip, the A3977SED. This works fantstastic! From within Max I send On/Off, the choice of full step, half step, quarter step or eighth step. I can set the direction and the step-speed. The step-motor is running smooth and fast! Per chip one stepmotor can be driven
Leon Spek is making the new patch for Super Collider, driving the 16 times 12 bit DA conversion. The other SC patch Leon made (IpSonLab sensor input) can be downloaded at the dwonload section.
I finished testing the 16 channel DA conversion hard- and software. By sending 12 bit OSC integers (0-4096), a smooth DC voltage change is realised. The maximum frequency is about 120Hz when sending all channels. It's Low Frequent (LF); it is ideal for e.a voltage driven generators. I use the same DA convertor printed cicruit board as the Midi To Volt lab. (DA convertor:LTC1452).

February 2006
I made the usermanual in pdf format, so it can easily be downloaded. One of the students here (Leon Spek, ArtScience) is working hard to make a SuperCollider version, which is also capable of programming the IpSonLab. Great! When this version is finished, it can be downloaded from this website.  Did some work on the website; e.a. made the 'how to buy or try' page. Downgraded the price of the IpSonLab for students. Made some ipsonlab series.
I'm now working on the stepmotor function. Also still have to finish the 16 times DA conversion (i did not forget Zlatko!).

January 2006
Happy new year!
I implemented a programming feature in the IpSonLab. Now, you can program / configure the IpSonLab from within Max/Msp. Just send the right string (/cf) with the right variables.  You can set the amount of inputs (4, 8, .. 32) and the threshold per input. With only 4 inputs, about 1000 values will be sent per second (sample rate of 1kHz). When choosing more inputs, the sample rate will go down (till about 125Hz with 32 inputs). Now I also have to implement this feature for the processor that is driving the outputs (servo, relais, pwm ...). I'm starting to make a version that will drive stepmotors. 
I made a new layout of the Max/Msp test patch. It looks a little bit more fresh;-). I also implemented the threshold values per input; meaning now you can configure every input seperatly on the fly!!. Did some updates of this website.

December 2005:
New pcb with 32 outputs (driving relays/led's up to 500mA per output) is working. Due to my bussy day's on the conservatory, I did not really have time to develop new stuff. I updated the website (download page) a little with the available Max patches; also updated the servo drive version to HS (High Speed). Together with Johan we are trying to implement the terminal application into the IpSonLab Max/Msp patch. Would be nice to configure the IpSonLab (xport) from within Max/Msp.
Made an OSC to serial 12 bit DA convertor work; I connected 16 DA-convertors; not finished yet

November 2005:
I made a new printed circuit board (pcb); a little add-on pcb for the ipsonlab. With this pcb, 32 outputs of 500mA can be driven (for example 32 relays). It's a little pcb made out of smd-components (Surface Mount Device). I ordered the pcbs and expect them in two weeks. 
I added 8 x pwm to the 64 output version. So now portb has 8 pins generating pulse width modulation (within OSC:/ipson) AND portc drives the external electronics (8x74HCT595) to switch on/off led's or relays (within OSC:/led) (the uln2803 driver). The pwm signal is quiet low frequent, about 50Hz. For driving the intensity of a led it is enough; for driving dc-motors, it will not be sufficient.
Did some research to drive serial DA convertors, to generate a high resolution DC signal from 0-5V. Like the mtv-lab, but using OSC instead of midi.

October 2005:
Brainstorming about the programmable features: create an onboard 'program' button. When the button is pressed during power-on, the IpSonlab will sent it's complete configuration file to Max/Msp. Within Max/Msp making it possible to change the values and program the IpSonLab. Which variables? Amount of inputs, sample rate, creating threshold, choose which features the output processor will generate (8xpwm or 16x servo or 64xled's/relais) ... Still thinking of data reduction. 

September 2005:

Designed a cicruit for driving 64 relais/Led's through OSC. By sending 8 times 8 bit numbers with udp-write, the 64 outputs change to on or off. Realised with 8 x TTL shift registers (75HC595). From the processor 3 connections make the data transfer possible. Instead of sending now 8 x 32 bit numbers to the IpSonLab (lot's of data) we changed that to 2 x 32 bit numbers, to reduce data transfer for this application.
I'm working on new features, such as to make it possible to program the IpSonLab from within Max/Msp: changing the amount of inputs, changing the sample rate of the sensor input and more ...
I reduced the OSC package for sending sensor information. Instead of osc-header information+ 32 times 32 bits (176 bytes per 5mV change), I send osc-header+ 8 times 32 bits. With the right Max/Msp patch, this package can be 'unpacked' to 32 times 10 bits numbers (sensor information).

June 2005:
Changed the Crystal frequency of the processors for optimalisation of the baudrate between the processor and the Xport. The Xtal is now 18.432Mhz (was 20MHz), making a 115200 baudrate possible; double the speed. The IpSonlab has been used for several exams at ArtSience department. Succes.

April/May 2005:
Driving servo motors through OSC. Made a version with 16 outputs (direct from the processor) generating a pulse with a frequency of minimal 37 Hz and a pulse width changes between 1 mS (0 degrees) and 2 mS (180 degrees). Sending values between 1000 and 12.000; very high resolution. Driving the servo's also with the Wiport.

February/March 2005:
Investigating the other way around. Sending UDP packages (udp-write objects) to the Xport and converting it to Pulse Width Modulation output on the processor. Converting 8 bit number to PWM. Works well. Made a design of the IpSonLab Printed Circuit Board (PCB). Thought of a name: Internet Protocol Sonology Lab. I designed the PCB with two processors. Actually to make life easier: one processor handling all incoming traffic and the other one the outgoing traffic. Made the WiPort working, the WireLess Xport. It's an expensive component, but never the less very interresting to use for example sensors placed on dancers or objects that move.

January 2005:
Did some first testing with the Xport connected to the Uart of the PIC16F873 processor. By connecting a few sensors to the processor I managed to send out the right format OSC-string, so Max/Msp interpreted it the right way. I can send 32 times 10 bit sensor information to Max/Msp. The total OSC-package sent per sensor input change is relatively big. For sending 32 times sensor information, 176 bytes have to be sent. So now we have a fast connection, but we have to send more data ... I'm going to try to decrease the amount of data (smart communication).

December 2004:
Found the Xport on the web. The Xport is a product of Lantronix coop. This device made it possible to convert the existing microlab technology (midi assembly)) to OSC (Open Sound Control). The Xport is an embedded webserver with one channel input and output (RS232) and is very small (as big as an ethernet connector). All electronics in onboard and lot of features can be used (trigger to e-mail for example).
To find out the format of the OSC strings sent by Max/Msp UDP-read / write objects, I made a setup with a terminal emulator. By checking the complete hexadecimal coding, I found out which format the OSC packages had.

November 2004:
More students asking for a replacement for MIDI. Already did some tests with USB, but it seem to be a complex protocol to make (assembly wise). Also a lot of devices use already USB, so it is not that interresting to design a 'new' sensor to USB lab. The midi-USB interfaces did, and still do, that job very well. All computers now a days do have a fast ethernet connection, which during live performances almost never is used. So creating a sensorLab based upon ethernet was much more interresting.