2016年11月2日 星期三

重拾「音樂輔助學習系統」程式

雖然時間總是被拿去弄東弄西或自己玩東玩西的,在音樂的學習這塊的興趣,我始終是記得的,從小可說是音樂極差的…五線譜都看不懂到接觸樂器、樂團,擁有「自己」引以為傲的演奏力,我的Music路還真是多采多姿。
從認真接觸樂器後,有一段時間就也很認於樂理、樂譜,然後喜歡畫譜…進而喜歡自己編曲(雖然非專業),擁有的樂趣應該是小時候怎樣也無法想像的發展。
自己編曲手繪的樂譜帶來莫大的成就感
不僅喜歡音樂、也喜歡科技帶來的改變,從那Windows3.1的時代,就一直迷著要用電腦來網譜,印出來像是出版品,感覺上才夠水平的心理…不斷地追尋、花錢、花時間…腦袋裡總想著如何用電腦來玩這一塊。如果有人覺得我的電腦功力蠻不錯的,那也都是為了電腦音樂的研究而來的。
直笛是玩票的

隨著電腦科技不斷發展,越來越有樂趣了
分發教書後,因為音樂組別畢業的關係,理所當然地會被「重用」去帶團(兒童樂隊),但還是當導師喲!音樂課這種專業的課程可是「主任級」的才能上呢!由於個人的興趣和執著,應該是對電腦音樂這門子的迷戀,有好多年的日子,晚上都在編曲並用著現在看來不怎麼利索的電腦系統及程式來實現自己的美夢…
即始離開嘉義回台南後已經不帶音樂團隊了(轉為都在學習怎麼寫程式),仍然沒忘了要利用電腦來輔助音樂學習的想法,所以隨著程式能力有點兒進步,在2006年時就發想寫了個「音樂輔助學習系統」三端程式,老師端程式、學習者端、伺服器…整合的想法,目的是想要能幫助音樂自學者練習。
這個想法開始於2006
雖然我的程式能力不是很強,但寫的速度倒是很快,想著就馬上實現它,不過後來我發現了smartmusic,「OH,My God」原來外國早就有這樣想法的程式了,而且功能強大,缺點當然是要錢啦!所以這程式我就寫好放著…當作有個練習的願望實現了就好!
這二天,我翻出舊程式,突然有個想法…也許可以再修它一下,Updae一下…這個輔助系統的想還是很棒的(至少我自以為這樣!)
再把它挖出來寫下去
在我們的教學場域,我這個程式點子應該是很有趣的,利用一些零碎時間來繼續吧!其實當時還想練習寫桌面程式與伺服器溝通的方法,多媒體部份都在個人電腦端實作,而伺服器端專管資料備及檔案交流交換…
教師端程式
音樂封包管理
音樂封包製作
當時在寫這程式時,flash page在夯,所以樂譜設定以falsh page來呈現,想不到現在flash被認為是惡夢,我想改變朝向PDF呈現。當時的螢幕也不像現在的高解析度大螢幕…所以程式視窗大小也是修正的重點,至於當時使用的音樂格式是ogg,本機資料庫使用SQLite倒是蠻有前瞻性的!
又得要看一大堆程式碼
雖然要先去看一大堆以前寫的程式碼(有時還會看不懂自己以前在寫什麼東東…),回想自己以前的想法,才能開始進行修改,是蠻花時間精神的!不過,找一個認有有價值的目標來思考未必不是一件好事!改好後再放出來讓大家指教、指教…

2016年8月9日 星期二

來玩360影片和照片~

拜科技不斷地進步之賜,拍照攝影的選擇越來越多,這一兩年開始流行起虛擬實境VR,360影片和照片的流行也被帶動了起來,其實拍360環景照片的技術早就有了,早期利用相機對很多個方向拍照再利用軟體拼湊起來,現在很多手機的相機都有內建拍環景的功能,只是有點麻煩,你必須在原地轉來轉去,把需要的方位照片都拍到…
手機的相機有很多拍照模式,包含環景拍攝

拍360照片就跟著畫面的指示一一對上就可以了
當然,要拍360的影片,手機大概就比較不足了,随著YOUTUBE和Facebook都開始支援360影片上傳觀看的功能,拍360度照片和影片可說是當紅,所以相對應的器材就開始出籠啦!就是一些只要按一下就可以拍出360度照片的相機紛紛上市,當然也可以用來拍360度影片…


產品蠻多的,而且隨著時間會有更多的選擇
拍出來的照片和我們以往所看到的4:3或16:9的照片不同,是2:1的,因為相機以本身為中心點向外360度拍照,連拍攝者自都會被收錄
※今天要說的重點是,這種影片照片怎麼看呢?用以前的方法雙按用媒體瀏覽器打開會看到扁平的360度照片
應該是立體的環景照卻扁平化了
所以我們必須使用對應的觀看程式才行,這兒介紹好用又免費的GoPro VR player,網址是:http://www.kolor.com/  ,按一下右上方的download
網站首頁
按一下最右邊的GoPro VR player
有各種不同平台的版本,選擇自己適用的,載下來安裝
windows 版的安裝很簡單,就是下一步、下一步…
 裝好後,桌面上就多了一個啟動程式的捷徑,雙按它就會啟動全景的瀏覽程式







接下來只要把你的360照片和影片拖曳進去就成啦!

當然,我們也可以將拍好的照片和影片上傳到youtube或FB,而我目前在使用的是Gear360,拍出來的照片和影片解柝度都很不錯,而且可以支援直接分享到網路上,也可以搭配Google的地圖來標示地點。
搭配雙魚眼鏡頭的gear360

2016年4月10日 星期日

開發「儒苑忠義」APP

為學校小小解說員建立了一個專屬的Facebook粉絲團之後,著手寫了一個名為「儒苑忠義」的Android APP並且把它上架到Google Play去
我寫的APP只能用在Android裝置上啦
Google Play上架
臺南市忠義國小的「小小解說員團隊」是一個極具特色的學生團體,所有的成員經過筆試、口試的考驗認証成為孔廟小小解說員,現更進階成為服務學習團隊,利用假日執行免費導覽解說任務。
藉由先端科技的呈現,讓對孔廟景點有興趣的遊客及學生都能得到即時的服務,便是本APP程式開發的用意~

2016年1月5日 星期二

更改AR.Drone的鏡頭方向

因為其他事忙,所以有一陣子沒有再動AR.Drone了,當然它蠻怕風的也是一個原因,我覺得這個產品與我們現在說的空拍機像DJI的還是有些不同,比較像是可以用手機即時錄影的遙控飛機,而且有一點就是,它的camera設計是朝著正前方, 飛上天空時,就是拍遠方,反而下面是錄不到的,我想它一開始是想讓使用者看著螢幕就可以看著飛機的前方,而不用仰頭去看飛行器。
可以看前方卻無法錄到下面的景物
所以又要發揮創客的精神,動手來改造它,雖然它不便宜,但是實驗及動手做的精神更可貴!
只要用美工刀就行了!割開磁性的鐵片
排線粘得蠻緊的,拆的時候得小心別拉斷了
接下來就是把原本向前伸的機鼻給切掉,這部份倒是很容易的,這種機子本來就是保麗龍做的, 依電子零件大小設計好形狀後,把機板和零件塞進去固定好,就可以賣個好價錢,這也是人家的創意在賺錢~,下回有空時,應自己找掉保麗龍或類似的輕量物,自己塑個新的飛行器外殼,或是乾脆把外殼都拆了裸飛,說不定就不怕風了!
就把機鼻切斷了~膽大心細唷!
準備把鏡頭往下拉
這樣子鏡頭就朝下囉
改裝後試飛,結果一切正常,飛行中錄到的畫面變成下方,不變的一點是它還是怕風,只要風稍微大一些,它就會受到影響,在很空曠的地方飛倒沒差,如果周圍有建物,被風吹時操控又來不及反應,那麼撞山的情事就會發生!
我最近念頭有點改變,不要再買人家設計好的完美產品,世界潮流都已走向「自造者」的驅勢,我們雖還缺少許多「自造」的技術和經驗,但可以從心裡的想法改變做起,唯有我們自己能體驗「創客」、「自造者」…的觀念,我們才能真正地將這門技巧傳達給學生和週遭的朋友及家人…

2016年1月4日 星期一

Samsung Galaxy S6 edge 翻頁皮套的秘密

一 直以來都知道手機翻頁皮套,翻開螢幕就亮起,蓋上螢幕就關上是因為這種保護皮套上利用磁力的原理,換新手機(Galaxy S6 edge )時,試了非原廠的翻頁皮套卻無法有作用,所以就買了原廠的皮套。
手機還是需要一點兒保護
不過,用了一段時間後,皮套就變得又髒又難清理, 尤其白色的很難維護,功能還有但外觀不佳,再買個新的原廠皮套實在有點貴,不買原廠的,又無法有感應功能,昨天看到一個外形可說是一模一樣的翻頁皮套,看了一下,正面好像一樣有塊磁性板,想說一定可以用,就買了,想不到事情可沒這麼美好!
唉呀!光前蓋板還是沒用
事到如今,就發揮一點實驗精神→一定是後背板也有機關,動手把原廠的給拆了…果然…
我第一時間想:這廠商未免太用心了吧!
我就小心地把這三小塊給卸下來,若割壞了可能也不能用了!
真的是塊晶片貼紙→RFID

這是塊圓形的小磁鐵吧!還有片方形的
完工,拆下來裝到相對應的位置
最後測試,果然可行…,我並不是在鼓勵「山寨」,而是這個小小的實驗其實可以看出人家很用心的,連這種配件都不是只倚仗著原廠的稱號就賣很貴的價錢,為了防山寨盜版,可是有下功夫在裡頭的,我們在做事情及做各項計畫時,也應該心思細密一些,成果才能細緻精密一點,這是我的感想…

2015年11月3日 星期二

寫一個電腦抽籤的程式

昨天,學校的教學組長提及有沒有辦法在校內語文競賽時,選手抽籤像全市比賽那樣,用電腦抽號!我直覺地回答:「這簡單呀!」(聽說主任本來要去找一下有沒有人在賣這種程式…)
其實,一切都是為了「比賽的公開與公平」,這個要從校內做起…,也是需要啦!
看了一下,全市比賽的抽籤程式用的是Excel巨集寫的,一來我不擅長那個,二來我想弄個漂亮點、功能好一點的,所以花了一下子來寫支「競賽抽籤程式」。
程式執行畫面

說來說去,就是電腦亂數啦!
程式裡的簡單說明
要用這支程式,首先就是建一個選手名單,要不然誰知道你要抽什麼?所以我很簡單地提供一個純文字的範本檔,使用者填好另存後,就可以當作給程式的Source了

為了呈現出公平中的公平,引入名單時還可以決定抽籤順序,免得有人連「誰先抽」也計較(※說實在的,有必要那麼計較小朋友的競賽得失嗎?學到了東西比較重要吧!)
接下來選手名單就會列表在左側的欄位裡了,這是主持人可以決定讓輪到的選手上來一個一個抽,或由電腦一次幫所有人抽好…
在這個部份,我就讓它呈現一點兒效果(正在抽及抽出號碼的畫面及音效)
正在抽號…

抽出來了…
我把這支程式放在網路上供有興趣的人→下載參考
※程式畫面我嵌死了忠義國小的校幑和學校名稱,不過那都是可以改掉的,如果有人有需要的話。
※寫這種程式,我想最重要的就是操摐亂數的技巧,以下面這個涵數(lua程式)來說,傳入一個數字 n 要求它在1~n之間取一個亂數,還要進行檢查這個數字在之間取過了沒
function num_set(n)
  g_no = Math.Random(n);
  g_tb_Count = Table.Count(g_tb);
  if g_b_Count == 0 then
Table.Insert(g_tb, 1, g_no);
  else
NumFind = false;
for i,j in pairs(g_tb) do
if g_no == j then NumFind = true; end
end
if not NumFind then
Table.Insert(g_tb, g_tb_Count+1, g_no);
end
  end
end
再來,我就會搭配一個迴圈來讓程式一直跑到我想要的所有亂數都產生為止,下面例子就是我想要電腦幫我跑出25個36以內的不重覆亂數來,呵呵…反正是電腦在忙!
   while g_tb_Count < 25 do
      num_set(36);
   end

2015年11月1日 星期日

Arithmetic Challenge Open2015開發紀錄

今天我把以前開發給學校學生使用的算術大挑戰(Arithmetic Challenge)改版開放給校外,主要是把消息Share在溫老師的備課Party,比較起來,這兒重視小朋友學習的老師或家長還是多一點吧!
程式網站的位置→http://163.26.23.3/app/math_game_ex/
這是一個主從式的程式,意思是程式在使用者的電腦上執行,背後卻可以和伺服器連動,很多電玩不都是這樣嗎?以這個程式來說,小朋友挑戰的成績可以上傳到伺服器配合的網站程式接收,這樣可以讓小朋友們比拼一下誰厲害。
原本結合在學校兒童學習網的後端
在這次的改版中,保留原本程式中算術項目功能,「個位數加法」、「二位數加法」]、[九九乘法]、[二位乘一位]、[100以內的減法],我覺得這些項目是小學生最需要的話題,簡單是簡單,就算是一位加一位的題目,如果趕你時間,就可能會出錯囉!
我趁這個機會,就把最近用的「憤怒鳥」加到畫面裡。
程式執行起來的畫面
當挑戰者(學生)按下開始後,程式會自動出題,共20題,題目在上方,答案會隨機出現在下面的八鈕之中,學生做完一題,程式會立刻出下一題,直到20題結束。
分數的核算方法:本程式計算成績的方法依據二個部份→答對的題數及所耗用的時間,而且連績答對還會有動態加分,如此設計的原因是希望學生能同時兼顧作答的正確性及速度。
進入測驗的畫面
我覺得我之前構思的計算分數的方法是蠻不錯的想法→想得高分,得兼顧速度和正確還有連續正確…,只是過去在學校實施,有很多學生的成績會很接近,使用的秒數有一樣的情形,那是因為之前的程式,我讓它每一秒核算一次所謂的「時間加分」,當許多認真的學生出現時,他們的成績會很接近,甚至一樣。
所以這一次,我修改程式這個部份,改為每0.1秒核算一次,我想這樣子,想同分的機會就不多了。

再來就是成績上傳這件事,原來的版本,小朋友測驗完後,想要上傳成績,會跳出一個視窗要求輸入帳號密碼,會送出到兒童學習網認証並取得學生的資料,再寫入成績表,所以可以上傳成績的都是本校的學生。
想讓程式改成讓學校之外的人上傳成績,以學習的角度來說,這絕對是很棒的事,但如何在上傳成績時進行「認証」變成一件很值得思考的事,我不可能要求凡是要上傳成績的人都來系統申請帳號,因為這樣會讓事情變複雜了,而且我也不想找自己的麻煩。
最後,我想了一個辦法,伺服器上不需要保有使用者的帳密,但大家都能以自己的名稱來上傳成績,且人不會有重疊的問題,就是某部電腦上執行這支程式而想上傳成績的,請家長或老師幫學生編輯一個我提供的文字檔,自行建立想要上傳的所有人資料(不違個資隱私的),然後mail給我(tnmongo@tn.edu.tw),而我只是打開來看看有沒有使用「不雅文字」的(我們教育單位總要注意一下)

我也不用費什麼工,只要寄來的檔,沒什麼問題,我就原樣地把這個檔放上網站上的某個程式知道的位置,而我會回信給寄信者一個「特殊號碼」,如果有某個老師為30個學生建了資料,他只要跟這些學生講這個「特殊號碼」,就算在家中的電腦,學生第一次想上傳成績時就可以利用這個號碼,取得這30個學生的帳號,可選擇自己,然後上傳成績。
用特殊號碼取得帳號資料

取得後,帳號那一欄就有人可以選了

※其實「特殊號碼」就是引導程式到成績網站上載回老師建的文字檔回放在C:\cw_arithmetic中,一個叫user.enc的檔,您是不是想說:「想搞怪的,這時再去改這個檔,不是一樣」,可沒這樣簡單,因為我已讓程式將它「編碼」,改不了的!
如果,有老師日後想增減或改變帳號資料,只要重寄文字檔給我(tnmongo@tn.edu.tw),我就會再回一個不同的「特殊號碼」,使用者只要將C:\cw_arithmetic\user.enc給刪了,程式就會讓它重從取得資料檔了!
※老實說,對於想出這個方法,我自己都覺得蠻得意的。

在網站端接收程式的部份,其實就蠻簡單的,不管是ASP或PHP…都可以寫的,只要能接受傳送來的數據,寫進DataBase就行了,也不會有什麼資訊安全問題,以想上傳成績的使用者來說,也不會有什麼隱私問題,可以不要寫自己的真名,只要能識別自己就行了,成績上傳的用意是讓小朋友知道「人上有人、天外有天」也許就會更認真…