基于Max与Arduino的交互多媒体设计_第1页
基于Max与Arduino的交互多媒体设计_第2页
基于Max与Arduino的交互多媒体设计_第3页
基于Max与Arduino的交互多媒体设计_第4页
基于Max与Arduino的交互多媒体设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文(设计)设计(论文)题目基于Max与Arduino的交互多媒体设计姓 名:王宇萌学 号:201100800508学 院:机电与信息工程学院专 业:数字媒体技术年 级2011级指导教师:黄文高 2015 年 4 月 27 日目 录中文摘要.2英文摘要.2一、引言.5二、相关软硬件简介.5(一)Arduino简介.5(二)MAX简介.6三、硬件及软件选取.7(一)Arduino板选取及相关参数.7(二)Arduino软件开发环境.8(三)MAX版本选取及功能介绍.9四、交互装置设计实施.12(一)硬件组建与功能实现.121、材料清单.122、硬件设计.123、程序代码.14(二)MAX patch创建.17五、总结.22参考文献.24谢辞.25摘 要最近,数字艺术在各种表演艺术中扮演着越来越重要的角色。与以前相比,不仅表演者拥有更多的表演形式,而且观众也通过完全不同的方式从表演中获取信息,更重要的是,当今的数字艺术可以让表演者与观众进行互动。大多数传统艺术都是单向的,也就意味着观众从作者那里得到信息。然而数字艺术通过使用高科技创造了一个新的世界,尤其是交互艺术使观众变成了作者。它是如何将观众和作者连接起来的让我们对交互艺术更加感兴趣。作为开发交互式音乐表演软件通用语言的MAX与构建互动数字设备的新宠儿Arduino相结合,会创造出怎样的充满创意而又个性十足的交互式设计呢?在本文中,我试图用上述两种工具设计一个交互式电子演奏装置,希望使用者能够通过使用该装置进行实时电子演奏。本研究主要探讨了以下两个问题:(1)怎样实现所使用的软硬件之间的通信(2)怎样通过人的动作来进行演奏研究结果表明,此装置不仅可以实现上述功能,而且可以实现多种乐器多种方式的演奏,证实了此装置的可用性、灵活性和可扩展性。关 键 词交互;数字音乐;MAXAbstractRecent years, the word interaction begins to appear more frequency than ever before in many areas of society. Its unique technical connotation and the characteristics of the times have brought great changes to our life,our artistic creation and the way we think.The major difference between digital interactive arts and traditional arts is that you can let the audience join the creating process ,allowing audience to create their own world by full using of digital technology.Most traditonal art is unidirectional,which means the audience gets the messages from the author.But digital art create a new world by using the technology,Especially interactive art,which turn the audience to the author.How does it link the audience and the author successfully makes us want to know more. Interactive music,short for interactive computer music, has also become a comparatively booming way of creation in todays digital music creation.In this article, we attempt to design an interactive electronic performance device, hoping the users can make real-time electronic performances by using this device. This research mainly discusses the following two questions: (1) how to realize the communication between the hardware and software that we use (2) how to realize the performance with actions of users.The result of this research shows that this device can not only realize the functions we mentioned above, but also change the musical instruments and the way we performance, which confirm that this devices usability, flexibility and extensibility.KeywordsInteractive;digital music;MAX26一、引言 最近,数字艺术在各种表演艺术中扮演着越来越重要的角色。与以前相比,不仅表演者拥有更多的表演形式,而且观众也通过完全不同的方式从表演中获取信息,更重要的是,当今的数字艺术可以让表演者与观众进行互动。大多数传统艺术都是单向的,也就意味着观众从作者那里得到信息。然而数字艺术通过使用高科技创造了一个新的世界,尤其是交互艺术使观众变成了作者。它是如何将观众和作者连接起来的让我们对交互艺术更加感兴趣。MAX作为一个非常强大的图形化编程软件,自开发至今,一直被广泛应用于世界各地的博物馆,画廊,音乐工作室,艺术学校,舞台,研究实验室以及任何需要将科技与创新结合在一起的地方。MAX程序本身是模块化的,它有很多共享库形式的例程存在。一个API允许第三方开发新例程,也称为外部对象。因此,MAX拥有大量并不隶属于cycling74公司的程序员用户基础,他们通过对程序进行商业或者非商业的扩展来提高软件的性能。因为其可扩展的设计和图形化的界面,MAX被称为开发交互式音乐表演软件的通用语言。Arduino是一款方便灵活,易于上手的开源电子平台,通过连接各种电子元件和传感器来感知外界环境信息并以数字信号或模拟信号的形式传输给计算机。由于Arduino简单清晰的开发语言,跨平台操作系统的支持,软件及硬件的开源特性以及众多社区与第三方支持,使得Arduino成为构建互动数字设备的新宠儿。 国内有许多玩MAX的人,更有无数电子开发爱好者致力于Arduino研究,但是却很少有人将这两者结合起来,虽然国外对于MAX与Arduino结合的研究早在十几年前就非常流行,但国内却实在是鲜有人知,可查阅的资料也非常稀少。 通过将MAX与Arduino结合设计出实时演奏的电子演奏装置,可以实现自主定义音色库,通过使用不同的Arduino扩展模块实现演奏方式的多样化,增加装置的灵活性和自由度。该装置应实现的功能有: 1、MAX与Arduino实现通信 2、检测振动信号并通过一定的分析判断来控制音乐响起,每一个振动传感器对应一个音乐播放控制模块。 3、通过人的动作来实时演奏电子装置,演奏时会有相应的指示灯亮起,通过旋钮可改变演奏音乐的音量。演奏相应的音乐时,会有相应的指示灯亮起。二、相关软硬件简介(一)Arduino简介Arduino是一款方便灵活,易于上手的开源电子平台,通过连接各种电子元件和传感器来感知外界环境信息并以数字信号或模拟信号的形式传输给计算机。Arduino板可以直接购买已经装配好的,也可以自己动手DIY。Arduino是基于一种由意大利SmartProjects设计制造的微控制板,它使用各种8位Atmel AVR单片机或者32位Atmel ARM处理器。这些系统提供各种数字和模拟I/O端口,他们可以作为各种扩展板和其他电路的接口。这些板子拥有例如USB的系列通信串口,来从个人电脑上加载程序。为了为Arduino板编程,Arduino平台提供了一种基于Processing项目的集成开发环境,它支持C和C+编程语言。Arduino可以独自完成项目,也可以和其他一些软件,如MaxMsp、Processing、Flash等,一起完成项目。简单来说,Arduino是一块手掌大的微控制板,使用者可以在板子上连接诸如开关、LED灯、电阻、二极管、红外探测器等各种电子装置,以及Ethernet、WiFi、XBee、Bluetooth、RFID、GPS等各种通讯模组,然后将编好的程序烧进Arduino板中,便可完成互动装置的设计并实现自动控制了。由于Arduino简单清晰的开发语言,跨平台操作系统的支持,软件及硬件的开源特性以及众多社区与第三方支持,使得Arduino成为构建互动数字设备的新宠儿。(二)MAX简介MAX是一款由Cycling74公司开发和维护的图形化编程语言,在其20年的历史中,他已经被无数的作曲家、软件设计师、表演者、艺术家和研究人员使用和热爱。MAX程序本身是模块化的,它有很多共享库形式的例程存在。一个API允许第三方开发新例程,也称为外部对象。因此,MAX拥有大量并不隶属于cycling74公司的程序员用户基础,他们通过对程序进行商业或者非商业的扩展来提高软件的性能。因为其可扩展的设计和图形化的界面,MAX被称为开发交互式音乐表演软件的通用语言。MAX支持六种基本的原子数据类型来传递消息,他们分别是:int、float、list、symbol、bang和signal。MAX程序中存在一些更复杂的数据结构用以处理数值型数组(表数据),哈希表(科尔数据)和XML信息(pattr数据)。MAX通常通过获取对象字典和他们在patch中的功能来学习,比如metro物件的作用是一个简单的节拍器,random物件产生随机整数。大多数物件是非图形化的,他们由输入到object块里的物件名和一系列参数组成。还有一些物件是图形化的,包括slider(滑块)、number boxes(数字箱)、dials(刻度盘)、table editors(表编辑器)、pull-down menus(下拉菜单)、buttons(按钮)和其他可以使程序交互式运行的物件。当你在patch中连接各种物件时,不需要编写任何编程语言,MAX就会自动代你处理好底层的一切,你便可以随心所欲的创造出个性独特的应用程序来进行即兴演奏、作曲或者为演奏配乐等等。MAX的物件由C语言编写,你可以用C语言编写新的扩展物件,来使他完成他本不能做到的事。MAX文件可以打包成独立的应用程序,也可为主流音频生产系统创作音频插件。随着使用笔记本电脑进行实时音乐演奏的人越来越多,MAX作为一个便捷好用的开发环境受到了越来越多的关注。三、硬件及软件选取(一)Arduino板选取及相关参数本设计所采用的Arduino板为Arduino UNO R3,如图1所示图 1其相关参数如下:微处理器:ATmega328工作电压:5V输入电压:USB供电或外部7V12V DC输入输出电压:5V DC输出和3.3V DC输出和外部电源输入Bootloader:Carduino Uno时钟频率:16 MHz输入电压(推荐):7-12V输入电压(限制):6-20V数字I/O端口:14(6个PWM输出口)模拟输入端口:6直流电流:40mA(I/O端口)直流电流:50mA(3.3V端口)Flash内存:32 KB (ATmega328其中0.5 KB用于引导程序)SRAM:2 KB (ATmega328)EEPROM:1 KB (ATmega328)尺寸:75x55x15mm各Pins介绍:14个数字I/O Pins可以当做input使用,也可以当做output使用,通过pinMode(),digitalWrite()和digitalRead()这几个函数来设置。这14个数字I/O端口中有几只有特殊的功能:Serial 通讯:0(RX)和1(TX)这两支脚。用来接收(RX)与传输(TX)TTL信号的序列资料。这两支脚也连接到USB Converter晶片中。外部中断:2和3这两支脚。这两支脚可以利用外部事件触发中断,通过利用attachInterrupt()函数。PWM:3、5、6、9、10、11这六支脚。通过analogWrite()函数可以提供8-bit的PWM输出。SPI:10(SS)、11(MOSI)、12(MISO)、13(SCK)这四支脚。他们搭配SPI Library可提供SPI序列通讯。LED:13。内建一颗LED,当pin脚为HIGH时,LED打开,当pin脚为LOW时,LED关闭。Arduino UNO有6个模拟输入端口,分别为A0A5,每支脚都可提供10位元的解析,也就是1024种不同的数值。这些脚所用的参考电压预设为0-5V,但也可通过AREF脚和analogReference()函数更改参考电压。另外,有几支脚也有特殊功能:I2C:4(SDA)和5(SCL)这两支脚。通过Wire library可以提供I2C通讯。(二)Arduino软件开发环境Arduino集成开发环境(IDE)是用一个用Java编写的跨平台应用,它是从Processing编程语言和Wiring项目的IDE发展而来的。它是为了向艺术家和其他不熟悉软件开发的新手介绍编程而设计的。它包括一个有各种功能的代码编辑器,比如语法高亮,括号匹配,自动缩进等,它还能编译和上传程序到板子上。Arduino的程序叫做“sketch”。Arduino IDE打开界面如图2所示:图 2Arduino程序是由C或C+编写而成。ArduinoIDE起源于一个叫Wiring的软件库,这使得许多常用输入输出操作变得更加简单。使用者仅需要定义两个函数来完成一个可循环执行的可执行程序,这两个函数是setup()和loop()。其中setup()函数在Arduino通电或者复位后便会执行,并且只执行一次,而loop()函数则在setup()之后不断的循环执行,直到电源被切断。(三)MAX版本选取及功能介绍本设计选用的MAX版本为MAX7,初始界面如图3: 图 3当你要开始你的创作时,鼠标选择菜单栏左上角的File-New Patcher即可创建一个新的patch。这个新的patch就像一张空白的画布,等待你去随心所欲地创作属于你自己的作品。如果你想用键盘快捷键新建一个patch的话,请按Command(Mac)/Ctrl(Windows)+N。图 4Patch的初始界面如下:图 5MAX有两种模式:锁定模式和编辑模式。当左下角的锁头锁住的时候,MAX就处于锁定模式。在锁定模式下,你不能编辑patch的内容,但可以跟patch里的用户界面object进行互动。而当你需要编辑patch内容时,你就需要点击锁头,让锁头打开,进入编辑模式。当然,你也可以使用快捷键Command/Ctrl+E或者Command/Ctrl+鼠标点击patch窗口来进行模式切换。MAX的基本语言和程序是一个数据流系统:MAX程序,也就是patch,是通过在patcher或者视觉画布中安排和连接object块来实现的。每一个object都是一个独立的程序,每一个object都可以通过一个或多个“入口”(inlet)接收数据,也可通过“出口”(outlet)输出数据。他们通过连接一个object的出口和另一个object的入口来传递消息。如图6所示图 6四、交互装置设计实施(一)硬件组建与功能实现1、材料清单Arduino UNO R3控制器 1个USB数据线 1个 面包板 1个 振动传感器 5个 470欧电阻 6个10K欧可调电位计 1个发光二极管 5个3P杜邦线 5个跳线 若干2、硬件设计硬件连接图如下:图 7 上图使用Fritzing软件制作而成,软件中的振动传感器为两个引脚的,分别是“-”引脚与S引脚。而实际制作时我使用的振动传感器是三个引脚的,其中S引脚连接Arduino的模拟输入端口,“+”和“-”引脚分别连接5V电源和GND接地端口。五个振动传感器分别与Arduino的模拟输入端口A1-A5连接,A0与电位计相连,而Arduino的数字端口pin2-pin6则分别与五个发光二极管相连。当振动传感器被敲击时,便产生一个模拟信号,Arduino接收这个模拟信号,并将它转化为0-1023的整数形式,然后通过对这个数据的分析判断来使发光二极管发光,并将该数据发送给MAX,通过MAX中的一系列处理来发出相应的声音。同样的,当旋动电位计时,也会产生一个模拟信号,Arduino接收这个模拟信号并将它转化为0-1023的整数形式,并将它传送给MAX来控制音量大小。3、程序代码在硬件部分搭建好之后,就需要编写代码并上传到Arduino板上来使硬件能够完成其应实现的功能。完整代码如图: #define THRESHOLD 15 int v1 = -1; int v2 = -1; int v3 = -1; int v4 = -1; int v5 = -1; int n = -1;void setup() Serial.begin(57600); for (int i = 2; i = 6; i+) pinMode(i, OUTPUT); void loop() for (int j = 14; j = THRESHOLD) digitalWrite(2,HIGH);delay(100);digitalWrite(2,LOW);delay(1);elsedigitalWrite(2,LOW); /-if(v2 = THRESHOLD) digitalWrite(3,HIGH);delay(100);digitalWrite(3,LOW);delay(1);elsedigitalWrite(3,LOW); /-if(v3 = THRESHOLD)digitalWrite(4,HIGH);delay(100);digitalWrite(4,LOW);delay(1);elsedigitalWrite(4,LOW); /-if(v4 = THRESHOLD)digitalWrite(5,HIGH);delay(100);digitalWrite(5,LOW);delay(1);elsedigitalWrite(5,LOW); /-if(v5 = THRESHOLD) digitalWrite(6,HIGH);delay(100);digitalWrite(6,LOW);delay(1);elsedigitalWrite(6,LOW); /- 下面进行具体代码分析: #define THRESHOLD 15 int v1 = -1; int v2 = -1; int v3 = -1; int v4 = -1; int v5 = -1; int n = -1;此部分为变量初始化,将Vi的值初始化为负值,以保证程序开始运行时给他一个新的值。void setup() Serial.begin(57600); for (int i = 2; i = 6; i+) pinMode(i, OUTPUT); Serial.begin()函数为Arduino的通信函数,用来初始化串口,设置串口的各项参数,如波特率、数据位等等。此处为设置串口的波特率为57600。下面一个for循环语句,用来设置pin2到pin6为输出状态。void loop() for (int j = 14; j = THRESHOLD) digitalWrite(2,HIGH);delay(100);digitalWrite(2,LOW);delay(1);elsedigitalWrite(2,LOW); 后面五个if()循环实现的功能是一样的,此处仅分析其中一个。假如传感器1的值大于等于之前设置的界限值,那么把pin2写为高电平,即让与pin2连接的发光二极管亮起,延时100毫秒,再将pin2写为低电平,即让发光二极管熄灭,延时1毫秒,若传感器1的值小于界限值,则将pin2写为低电平,即让发光二极管熄灭。(二)MAX patch创建当硬件连接完成并将Arduino程序上传到板上之后,就可以开始MAX patch的创建了。此patch总共可以分为五个功能模块,下面我们来一一分析: 图 8此部分为MAX与Arduino进行通信的部分,由于在不同的计算机上运行会发生串口变化,所以此处并没有为serial指定某一固定的串口,而是通过点击loadmess print物件来获取该计算机当前可使用的串口信息,并在旁边的菜单栏中自行选择。Serial是一个MAX与Arduino进行通信时需要用到的构件,使用serial时要设置好Arduino使用的串口,并且串口的波特率的设置要与Arduino程序中相同,以保证正常通信。Serial上面的接口可将MAX中的数据传输给Arduino,而serial左下角的接口可接收来自Arduino的数据,注意此数据并不可直接被MAX所使用,而是需要通过解析之后才可以被使用。选择好串口、建立好通信后,就需要进行上文中提到的数据的解析,如图 图 9因为我只传送了Arduino的六个接口数据至MAX,所以通过unpack解析之后就产生了六个数据,他们分别来自模拟输入端口A0到A5。图 10数据解析之后还要对数据进行一些判断处理,使用“change 0”来过滤掉重复的信息,防止发生错误触发。然后用一个if语句判断从Arduino传来的数据是否大于等于15,若是,则发出一个bang信息。图 11从模拟端口A0传来的数据用于控制音量,通过实际测试,电位器的输出数据范围为0-977,本程序中通过使用live.gain来调节音量,它的数据表示范围为-70到6分贝,但在实际操作中当分贝低于-30时,就已听不到声音,所以用scale物件将电位器的数据范围从0-977变换到-30-6。对从A1到A5传来的数据的处理是一样的,以A1的数据为例进行分析。上面提到,如果传来的数据大于等于15,则产生一个bang信息,我们知道MAX里数据传送是从右向左的,所以当bang信息产生时,先将“open 1.mp3”信息传送给sfplay物件,然后再送一个“1”给sfplay,这样sfplay就会播放1.mp3这个音频了。同样的,也可以不使用提前录制好的声音,而是使用电脑软音源,这样可以更方便灵活的控制声音的播放。如下图 12网络上有各种各样的软音源可供使用,此处我使用的是VST插件格式的Cakewalk Studio Instruments软音源,它包含一个高质量的鼓组,贝斯,电钢琴和弦乐组,由于设备有限,本程序中只设置适用于鼓组的数据。演奏时,点击plug,就会弹出一个窗口,让你选择你要使用的VST,选择完后你也可以点击open来打开此VST,本程序选择鼓组,打开界面如下: 图 13 至此,全部MAX的patch已经分析完,现在可以开始你充满个性的演奏啦!五、总结 近些年来,随着科技的发展,交互式数字音乐逐渐流行起来,相对于传统的数字音乐作品,交互式数字音乐更注重人与人,人与机器的互动性,让观众、听众也成为音乐的一部分。 此交互设计是基于MAX与Arduino的交互装置,他以MAX为软件平台,以Arduino为硬件平台,实现了MAX与Arduino的通信互动,实现了数字音乐实时演奏。本文对Arduino的硬件特性、Arduino的编程语言、MAX的patch创建以及Arduino与MAX的通信交流等等等等都做了非常详细的研究,证实了MAX与Arduino的交互设计的可行性,希望能够为国内此类研究提供一定的资源与思路。 此交互装置的优点及特色有如下几点: 1、实现了数字音乐的实时演奏和控制 2、使用发光二极管指示灯,更好的反应实时演奏时的交互通信 3、该装置可设计成桌面敲打式设备,也可设计成可穿戴式设备,增加设计的趣味性和完善性,实现真正的虚拟演奏 4、演奏的音乐可以任意改变,可以是提前录制好的音乐,也可以由软音源提供,根据不同的演奏音乐,此装置可变换为电子钢琴,虚拟架子鼓,电吉他等等任何你能想到的设计。 5、根据选用的Arduino模块的不同,此设计的演奏方式也可以随你的想法任意改变,若选用触摸传感器,便可实现触摸演奏,若选用温湿度传感器,便可实现吹奏。 通过对此装置进行测试,他已实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论